ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
如果你没有为HDFS配置环境变量,请切换到Hadoop的安装目录下进行Shell操作。 ```sql [root@hadoop101 rovt]# cd /opt/install/hadoop [root@hadoop101 hadoop]# pwd /opt/install/hadoop [root@hadoop101 hadoop]# ```` <br/> **基本语法** ```sql bin/hdfs dfs 具体命令 ``` <br/> **命令大全** ```sql [root@hadoop101 hadoop]# bin/hdfs dfs Usage: hadoop fs [generic options] [-appendToFile <localsrc> ... <dst>] [-cat [-ignoreCrc] <src> ...] [-checksum <src> ...] [-chgrp [-R] GROUP PATH...] [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] [-chown [-R] [OWNER][:[GROUP]] PATH...] ``` <br/> **启动hadoop集群** ```sql -- 启动hdfs集群 [root@hadoop101 hadoop]# sbin/start-dfs.sh -- 启动yarn集群 [root@hadoop101 hadoop]# sbin/start-yarn.sh ``` <br/> **关闭hadoop集群** ```sql -- 关闭hdfs集群 [root@hadoop101 hadoop]# sbin/stop-dfs.sh -- 关闭yarn集群 [root@hadoop101 hadoop]# sbin/stop-yarn.sh ``` <br/> **启动单个节点** ```sql -- 单独启动NameNode [root@hadoop101 hadoop]# sbin/hadoop-daemon.sh start namenode -- 单独启动DataNode [root@hadoop101 hadoop]# sbin/hadoop-daemon.sh start datanode -- 单独启动resourcemanager [root@hadoop101 hadoop]# sbin/yarn-daemon.sh start resourcemanager -- 单独启动nodemanager [root@hadoop101 hadoop]# sbin/yarn-daemon.sh start nodemanager ``` <br/> **`-help`:查看一个命令有哪些参数** ```sql [root@hadoop101 hadoop]# bin/hdfs dfs -help cat -cat [-ignoreCrc] <src> ... : Fetch all files that match the file pattern <src> and display their content on stdout ``` <br/> **`-ls`:显示目录信息,比如根目录 /** ```sql [root@hadoop101 hadoop]# bin/hdfs dfs -ls / Found 5 items drwxr-xr-x - root supergroup 0 2020-12-23 10:27 /data drwxr-xr-x - root supergroup 0 2020-12-28 19:47 /hbase drwx-wx-wx - root supergroup 0 2020-12-10 09:17 /home drwxrwxrwx - root supergroup 0 2020-12-23 19:30 /tmp drwx------ - root supergroup 0 2020-12-23 14:44 /user ``` <br/> **`-mkdir`:创建hdfs目录** ```sql -- -p:可以创建多级目录 [root@hadoop101 hadoop]# bin/hdfs dfs -mkdir -p /test1/test2 ``` <br/> **`-moveFromLocal`:剪切本地文件到hdfs上** 注意:剪切到hdfs上后,本地的文件就不存在了 ```sql -- /hdatas/logs2.txt为Linux的目录 -- /test1/test2为hdfs目录 [root@hadoop101 hadoop]# bin/hdfs dfs -moveFromLocal /hdatas/logs2.txt /test1/test2 ``` <br/> **`-appendToFile`:追加一个本地文件的数据到已经存在的文件末尾** ```sql [root@hadoop101 hadoop]# bin/hdfs dfs -appendToFile /hdatas/logs.txt /test1/test2/logs2.txt ``` <br/> **`-cat`,或者`-text`:查看文件内容** ```sql [root@hadoop101 hadoop]# bin/hdfs dfs -cat /test1/test2/logs2.txt 1,1 2,1 3,1 4,2 5,1 6,2 ``` <br/> **`-tail`:查看一个文件的末尾** ```sql [root@hadoop101 hadoop]# bin/hdfs dfs -tail /test1/test2/logs2.txt 1,1 2,1 3,1 4,2 5,1 6,2 ``` <br/> **`-chgrp` 、`-chmod`、`-chown`:linux 文件系统中的用法一样,修改文件所属权限** ```sql -- 修改logs2.txt文件的用户权限 [root@hadoop101 hadoop]# bin/hdfs dfs -chmod 666 /test1/test2/logs2.txt -- 修改logs2.txt文件的属主:属组,即Owner:Group [root@hadoop101 hadoop]# bin/hdfs dfs -chown rovt:rovt /test1/test2/logs2.txt -- 只更改文件属主 [root@hadoop101 hadoop]# bin/hdfs dfs -chown root /test1/test2/logs2.txt -- 只更改文件属组 bin/hdfs dfs -chgrp root /test1/test2/logs2.txt ``` <br/> **`-copyFromLocal`:将本地文件拷贝到 hdfs 系统上** ```sql [root@hadoop101 hadoop]# bin/hdfs dfs -copyFromLocal /hdatas/logs.txt /test1/test2 ``` <br/> **`-put`:等同于 copyFromLocal** ```sql [root@hadoop101 hadoop]# bin/hdfs dfs -put /hdatas/merge.txt /test1/test2 ``` <br/> **`-copyToLocal`:从 hdfs 拷贝到本地** ```sql [root@hadoop101 hadoop]# bin/hdfs dfs -copyToLocal /test1/test2/logs2.txt /hdatas/ ``` <br/> **`-get`:等同于 copyToLocal,就是从 hdfs 下载文件到本地** ```sql [root@hadoop101 hadoop]# bin/hdfs dfs -get /test1/test2/logs2.txt /hdatas/ ``` <br/> **`-cp` :从 hdfs 的一个路径拷贝到 hdfs 的另一个路径** ```sql -- 将/test1/test2/logs2.txt拷贝到/test1/logs2.txt,/test1/目录必须以存在,否则拷贝失败 -- /test1/logs2.txt文件已存在,拷贝失败 [root@hadoop101 hadoop]# bin/hdfs dfs -cp /test1/test2/logs2.txt /test1/logs2.txt ``` <br/> **`-mv`:在 hdfs 目录中移动文件** ```sql [root@hadoop101 hadoop]# bin/hdfs dfs -mv /test1/test2/logs.txt /test1/ ``` <br/> **`-getmerge`:将hdfs上的/test1/目录及其子目录下的所有文件下载到本地,并合并成一个merge.txt大文件** ```sql [root@hadoop101 hadoop]# bin/hdfs dfs -getmerge /test1/* /hdatas/merge.txt ``` <br/> **`-du`:统计文件夹大小** ```sql [root@hadoop101 hadoop]# bin/hdfs dfs -du -s -h /test1/ 330 330 /test1 单位是Byte [root@hadoop101 hadoop]# bin/hdfs dfs -du -h /test1/ 33 33 /test1/logs.txt 66 66 /test1/logs2.txt 231 231 /test1/test2 ``` <br/> **`-setrep`:设置 hdfs 中文件的副本数量** ```sql [root@hadoop101 hadoop]# bin/hdfs dfs -setrep 10 /test1/test2/logs2.txt ``` 这里设置的副本数只是记录在 NameNode 的元数据中,是否真的会有这么多副本,还得看 DataNode 的数量。如果只有 3 台设备,最多也就 3 个副本,只有 节点数的增加到 10 台时,副本数才能达到 10。 <br/> **`-rm`:删除文件或文件夹** ```sql -- 删除merge.txt [root@hadoop101 hadoop]# bin/hdfs dfs -rm /test1/test2/merge.txt -- 删除test1目录及子目录,无论该目录是否为空 [root@hadoop101 hadoop]# bin/hdfs dfs -rm -R /test1/ ``` <br/> **`-rmdir`:删除空目录** 非空目录不能删除。 ```sql [root@hadoop101 hadoop]# bin/hdfs dfs -rmdir /test1/test2 ```