HDFS的shell操作
一、基本语法
hadoop fs {命令} 或 hdfs dfs {命令}
二、命令大全
可以使用下面命令查看所有命令
hadoop fs# 返回帮助信息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...][-copyFromLocal [-f] [-p] [-l] [-d] [-t <thread count>] <localsrc> ... <dst>][-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>][-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] [-e] <path> ...][-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>][-createSnapshot <snapshotDir> [<snapshotName>]][-deleteSnapshot <snapshotDir> <snapshotName>][-df [-h] [<path> ...]][-du [-s] [-h] [-v] [-x] <path> ...][-expunge [-immediate]][-find <path> ... <expression> ...][-get [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>][-getfacl [-R] <path>][-getfattr [-R] {-n name | -d} [-e en] <path>][-getmerge [-nl] [-skip-empty-file] <src> <localdst>][-head <file>][-help [cmd ...]][-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [<path> ...]][-mkdir [-p] <path> ...][-moveFromLocal [-f] [-p] [-l] [-d] <localsrc> ... <dst>][-moveToLocal <src> <localdst>][-mv <src> ... <dst>][-put [-f] [-p] [-l] [-d] [-t <thread count>] <localsrc> ... <dst>][-renameSnapshot <snapshotDir> <oldName> <newName>][-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...][-rmdir [--ignore-fail-on-non-empty] <dir> ...][-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]][-setfattr {-n name [-v value] | -x name} <path>][-setrep [-R] [-w] <rep> <path> ...][-stat [format] <path> ...][-tail [-f] [-s <sleep interval>] <file>][-test -[defswrz] <path>][-text [-ignoreCrc] <src> ...][-touch [-a] [-m] [-t TIMESTAMP ] [-c] <path> ...][-touchz <path> ...][-truncate [-w] <length> <path> ...][-usage [cmd ...]]
三、上传命令
-moveFromLocal
从本地剪切文件到 HDFS
# 将本地的a.text文件剪切粘贴到hdfs的/demo目录下,完成后本地的a.txt将不存在
hadoop fs -moveFromLocal a.txt /demo
-copyFromLocal(推荐使用-put代替)
从本地拷贝文件到 HDFS
# 将本地的b.txt文件拷贝到hdfs的/demo目录下
hadoop fs -copyFromLocal b.txt /demo
-put
从本地拷贝文件到 HDFS ,等同于copyFromLocal
# 将本地的b.txt文件拷贝到hdfs的/demo目录下
hadoop fs -put b.txt /demo
-appendToFile
追加一个文件的内容到已经存在的文件末尾
# 将本地的b.txt的文件内容追加到hdfs的/demo/a.txt文件的末尾
hadoop fs -appendToFile b.txt /demo/a.txt
四、下载命令
-copyToLocal(推荐使用-get代替)
从 HDFS 拷贝到本地
# 将hdfs中的b.txt文件拷贝到本地,文件名不变
hadoop fs -copyToLocal /demo/b.txt
# 将hdfs中的b.txt文件拷贝的本地并保存为c.txt
hadoop fs -copyToLocal b.txt c.txt
-get
从 HDFS 拷贝到本地,等同于copyToLocal
# 将hdfs中的b.txt文件拷贝到本地,文件名不变
hadoop fs -get /demo/b.txt
# 将hdfs中的b.txt文件拷贝的本地并保存为c.txt
hadoop fs -get b.txt c.txt
五、HDFS操作
-ls
显示目录信息
hadoop fs -ls /demo
-cat
显示文件内容
hadoop fs -cat /demo/a.txt
-chgrp、-chmod、-chown
Linux 文件系统中的用法一样,修改文件所属权限
hadoop fs -chmod 666 /demo/a.txt
hadoop fs -chown hadoop:hadoop /demo/a.txt
-mkdir
创建目录
hadoop fs -mkdir /demo/text1
-cp
拷贝文件
hadoop fs -cp /demo/a.txt /demo/text1
-mv
移动文件
hadoop fs -mv /demo/a.txt /demo/text1
-tail
显示一个文件的末尾 1kb 的数据
hadoop fs -tail /demo/a.txt
-rm
删除文件或文件夹
# 删除单个文件
hadoop fs -rm /demo/a.txt
# 删除目录
hadoop fs -rm -r /demo
-du
统计文件夹的大小信息
# 统计/demo整个文件夹的大小
hadoop fs -du -s -h /demo
# 统计/demo文件夹下所有文件的大小
hadoop fs -du -h /demo
-setrep
设置HDFS中文件的副本数量
# 将hdfs中/demo/a.txt的副本数设置为10
hadoop fs -setrep 10 /demo/a.txt
这里设置的副本数是修改NameNode中的元数据,是否真的可以设置这么多副本,还得看DataNode的数量,目前只有3台设备,因此副本数实际最多就是3个,只有节点数增加到10时,副本数才能达到10
