命令行

HDFS命令行客户端使用
HDFS提供shell命令行客户端,使用方法如下:
可以使用一下两种形式:

  1. hadoop fs -… <args>
  2. hdfs dfs -… <args>

hadoop fs、hadoop dfs与hdfs dfs命令的区别

Hadoop fs:使用面最广,可以操作任何文件系统
hadoop dfs与hdfs dfs:只能操作HDFS文件系统相关(包括与Local FS间的操作),前者已经Deprecated,一般使用后者

命令行参数

  1. [-appendToFile <localsrc> ... <dst>]
  2. [-cat [-ignoreCrc] <src> ...]
  3. [-checksum <src> ...]
  4. [-chgrp [-R] GROUP PATH...]
  5. [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
  6. [-chown [-R] [OWNER][:[GROUP]] PATH...]
  7. [-copyFromLocal [-f] [-p] <localsrc> ... <dst>]
  8. [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
  9. [-count [-q] <path> ...]
  10. [-cp [-f] [-p] <src> ... <dst>]
  11. [-createSnapshot <snapshotDir> [<snapshotName>]]
  12. [-deleteSnapshot <snapshotDir> <snapshotName>]
  13. [-df [-h] [<path> ...]]
  14. [-du [-s] [-h] <path> ...]
  15. [-expunge]
  16. [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
  17. [-getfacl [-R] <path>]
  18. [-getmerge [-nl] <src> <localdst>]
  19. [-help [cmd ...]]
  20. [-ls [-d] [-h] [-R] [<path> ...]]
  21. [-mkdir [-p] <path> ...]
  22. [-moveFromLocal <localsrc> ... <dst>]
  23. [-moveToLocal <src> <localdst>]
  24. [-mv <src> ... <dst>]
  25. [-put [-f] [-p] <localsrc> ... <dst>]
  26. [-renameSnapshot <snapshotDir> <oldName> <newName>]
  27. [-rm [-f] [-r|-R] [-skipTrash] <src> ...]
  28. [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
  29. [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
  30. [-setrep [-R] [-w] <rep> <path> ...]
  31. [-stat [format] <path> ...]
  32. [-tail [-f] <file>]
  33. [-test -[defsz] <path>]
  34. [-text [-ignoreCrc] <src> ...]
  35. [-touchz <path> ...]
  36. [-usage [cmd ...]]

常用命令行参数介绍

  1. -help
  2. 功能:输出这个命令参数手册
  1. -ls
  2. 功能:显示目录信息
  3. 示例: hadoop fs -ls hdfs://hadoop-server01:9000/
  4. 备注:这些参数中,所有的hdfs路径都可以简写
  5. -->hadoop fs -ls / 等同于上一条命令的效果
  6. -lsr
  7. 递归查看
  1. -cat
  2. 功能:显示文件内容
  3. hadoop fs -cat /hello.txt
  1. -tail
  2. 功能:显示一个文件的末尾
  3. hadoop fs -tail /weblog/access_log.1
  1. -text
  2. 功能:以字符形式打印一个文件的内容
  3. hadoop fs -text /weblog/access_log.1
  1. -df
  2. 功能:统计文件系统的可用空间信息
  3. hadoop fs -df -h /
  4. -du
  5. 功能:统计文件夹的大小信息
  6. hadoop fs -du -s -h /aaa/*
  7. -count
  8. 功能:统计一个指定目录下的文件节点数量
  9. hadoop fs -count /aaa/
  1. hdfs dfsadmin -report
  2. 查看dfs集群工作状态的命令

  1. -mkdir
  2. 功能:在hdfs上创建目录
  3. hadoop fs -mkdir -p /aaa/bbb/cc/dd
  1. -copyFromLocal
  2. 功能:从本地文件系统中拷贝文件到hdfs路径去
  3. hadoop fs -copyFromLocal ./jdk.tar.gz /aaa/
  4. -copyToLocal
  5. 功能:从hdfs拷贝到本地
  6. hadoop fs -copyToLocal /aaa/jdk.tar.gz
  7. -cp
  8. 功能:从hdfs的一个路径拷贝hdfs的另一个路径
  9. hadoop fs -cp /aaa/jdk.tar.gz /bbb/jdk.tar.gz.2
-get              
功能:等同于copyToLocal,就是从hdfs下载文件到本地
hadoop fs -get /aaa/jdk.tar.gz
-getmerge    
功能:合并下载多个文件
比getmerge    如hdfs的目录 /aaa/下有多个文件:log.1, log.2,log.3,...
hadoop fs -getmerge /aaa/log.* ./log.sum
-put                
功能:等同于copyFromLocal
hadoop fs -put /aaa/jdk.tar.gz /bbb/jdk.tar.gz.2
-appendToFile:追加一个文件到已经存在的文件末尾

$ vi liubei.txt
输入
san gu mao lu

$ hadoop fs -appendToFile liubei.txt /sanguo/shuguo/kongming.txt

--appendToFile  
功能:追加一个文件到已经存在的文件末尾
hadoop fs -appendToFile ./hello.txt  hdfs://hadoop-server01:9000/hello.txt
可以简写为:
Hadoop fs -appendToFile ./hello.txt /hello.txt
-chgrp 
-chmod
-chown
功能:linux文件系统中的用法一样,对文件所属权限
hadoop fs -chmod 666 /hello.txt
hadoop fs -chown someuser:somegrp /hello.txt

hadoop fs -ls / 这个查权限,权限所属者是linux上的用户,组是hadoop中的
-moveFromLocal            
功能:从本地剪切粘贴到hdfs
hadoop fs - moveFromLocal /home/hadoop/a.txt /aaa/bbb/cc/dd

-moveToLocal              
功能:从hdfs剪切粘贴到本地
hadoop fs - moveToLocal /aaa/bbb/cc/dd /home/hadoop/a.txt
-mv                     
功能:在hdfs目录中移动文件
hadoop fs -mv /aaa/jdk.tar.gz /
-setrep                
功能:设置hdfs中文件的副本数量

设置文件的副本数为3
hadoop fs -setrep 3 /aaa/jdk.tar.gz

这里设置的副本数只是记录在NameNode的元数据中,是否真的会有这么多副本,还得看DataNode的数量。
因为目前只有3台设备,最多也就3个副本,只有节点数的增加到10台时,副本数才能达到10。

-rm                
功能:删除文件或文件夹
hadoop fs -rm -r /aaa/bbb/

-rmdir                 
功能:删除空目录
hadoop fs -rmdir /aaa/bbb/ccc

acl权限

首先在hdfs-site.xml中配置

dfs.namenode.acls.enabled

用hdfs的shell命令

hdfs dfs -setfacl -m user:bufdata:rw- /data

类似linux命令

hadoop fs -chmod XX

hadoop fs -chown someuser:someuser xx