HDFS的shell操作

一、基本语法

hadoop fs {命令} 或 hdfs dfs {命令}

二、命令大全

可以使用下面命令查看所有命令

  1. hadoop fs
  2. # 返回帮助信息
  3. Usage: hadoop fs [generic options]
  4. [-appendToFile <localsrc> ... <dst>]
  5. [-cat [-ignoreCrc] <src> ...]
  6. [-checksum <src> ...]
  7. [-chgrp [-R] GROUP PATH...]
  8. [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
  9. [-chown [-R] [OWNER][:[GROUP]] PATH...]
  10. [-copyFromLocal [-f] [-p] [-l] [-d] [-t <thread count>] <localsrc> ... <dst>]
  11. [-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
  12. [-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] [-e] <path> ...]
  13. [-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>]
  14. [-createSnapshot <snapshotDir> [<snapshotName>]]
  15. [-deleteSnapshot <snapshotDir> <snapshotName>]
  16. [-df [-h] [<path> ...]]
  17. [-du [-s] [-h] [-v] [-x] <path> ...]
  18. [-expunge [-immediate]]
  19. [-find <path> ... <expression> ...]
  20. [-get [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
  21. [-getfacl [-R] <path>]
  22. [-getfattr [-R] {-n name | -d} [-e en] <path>]
  23. [-getmerge [-nl] [-skip-empty-file] <src> <localdst>]
  24. [-head <file>]
  25. [-help [cmd ...]]
  26. [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [<path> ...]]
  27. [-mkdir [-p] <path> ...]
  28. [-moveFromLocal [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
  29. [-moveToLocal <src> <localdst>]
  30. [-mv <src> ... <dst>]
  31. [-put [-f] [-p] [-l] [-d] [-t <thread count>] <localsrc> ... <dst>]
  32. [-renameSnapshot <snapshotDir> <oldName> <newName>]
  33. [-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...]
  34. [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
  35. [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
  36. [-setfattr {-n name [-v value] | -x name} <path>]
  37. [-setrep [-R] [-w] <rep> <path> ...]
  38. [-stat [format] <path> ...]
  39. [-tail [-f] [-s <sleep interval>] <file>]
  40. [-test -[defswrz] <path>]
  41. [-text [-ignoreCrc] <src> ...]
  42. [-touch [-a] [-m] [-t TIMESTAMP ] [-c] <path> ...]
  43. [-touchz <path> ...]
  44. [-truncate [-w] <length> <path> ...]
  45. [-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