[Hadoop]HDFS shell命令

参考自:http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/FileSystemShell.html#appendToFile

hadoop 版本号:2.7.1

本文是根据官网提供的文档,笔者自己写的总结,涵盖了HDFS shell的所有命令。水平有限,错误在所难免。欢迎批评指正。

(1)-appendToFile

用法: hadoop fs -appendToFile <localsrc> ... <dst>

作用:附加文件到指定文件后。

示例:

  • hadoop fs -appendToFile localfile /user/hadoop/hadoopfile
  • hadoop fs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfile
  • hadoop fs -appendToFile localfile hdfs://nn.example.com/hadoop/hadoopfile
  • hadoop fs -appendToFile - hdfs://nn.example.com/hadoop/hadoopfile Reads the input from stdin.

(2)-cat

用法:hadoop fs -cat URI [URI ...]

作用:查看文件内容(可以查看本地和HDFS上的内容)。


示例:

  • hadoop fs -cat hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
  • hadoop fs -cat file:///file3 /user/hadoop/file4

(3)-checksum

用法: hadoop fs -checksum URI

作用:查看文件校验和。(例子显示了MD5)、

示例:

  • hadoop fs -checksum hdfs://nn1.example.com/file1
  • hadoop fs -checksum file:///etc/hosts

(4)-chgrp

用法: hadoop fs -chgrp [-R] GROUP URI [URI ...]

作用:改变文件所属的组。(Change group association of files.)

使用-R 将使改变在目录结构下递归进行。


(5)-chmod

作用:改变文件访问权限。

用法:hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]

这里可以参考 linux下文件系统的chmod的用法,基本类似。

(6)-chown

作用:hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]

用法:改变文件的所有者。使用-R 将使改变在目录结构下递归进行。命令的使用者必须是超级用户。

(7)-copyFromLocal

用法:hadoop fs -copyFromLocal <localsrc> URI

作用:类似于put命令,和put不同的是,拷贝的源地址必须是本地文件地址。

  -f 参数 当拷贝的目标文件存在时,进行覆盖。

示例:

taodj@ubuntu:~$ hadoop fs -copyFromLocal testFlatMap.txt /1.txt
copyFromLocal: `/1.txt': File exists


这个时候加上-f参数。即可覆盖。

taodj@ubuntu:~$ hadoop fs -copyFromLocal -f testFlatMap.txt /1.txt


(8)-copyToLocal

用法: hadoop fs -copyToLocal [-ignorecrc] [-crc] URI <localdst>

作用:类似于get指令。和get不同的是,拷贝的目的地址必须是本地文件地址。

(9)-count

作用:计算paths下的目录数,文件数和字节数。

用法: hadoop fs -count [-q] [-h] [-v] <paths>

  • hadoop fs -count hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
  • hadoop fs -count -q hdfs://nn1.example.com/file1
  • hadoop fs -count -q -h hdfs://nn1.example.com/file1
  • hdfs dfs -count -q -h -v hdfs://nn1.example.com/file1

(10)-cp
用法:hadoop fs -cp [-f] [-p | -p[topax]] URI [URI ...] <dest>
作用:拷贝,HDFS文件系统中进行的拷贝操作。
-f 参数选项:当文件存在时,进行覆盖。
-p 参数选项:将权限、所属组、时间戳、ACL以及XAttr等也进行拷贝。下面是官网的描述。
  • The -p option will preserve file attributes [topx] (timestamps, ownership, permission, ACL, XAttr). If -p is specified with no arg, then preserves timestamps, ownership, permission. If -pa is specified, then preserves permission also because ACL is a super-set of permission. Determination of whether raw namespace extended attributes are preserved is independent of the -p flag.
(11)-df
用法:hadoop fs -df [-h] URI [URI ...]
作用:显示剩余空间。
示例:
taodj@ubuntu:~$ hadoop fs -df -h /
Filesystem               Size     Used  Available  Use%
hdfs://localhost:9000  18.6 G  282.1 K      9.3 G    0%


(12)-dus
作用:显示文件长度概要。该方法以及被舍去,等价于 -du -s 方法。见(11)

(13)-expunge
作用:清空回收站(废纸篓)。Refer to the HDFS Architecture Guide for more information on the Trash feature.

(14)-find
作用:查找满足表达式的文件和文件夹。没有配置path的话,默认的就是全部目录/;如果表达式没有配置,则默认为-print。
用法: hadoop fs -find <path> ... <expression> ...
-name pattern 不区分大小写,对大小写不敏感
-iname pattern 对大小写敏感。
-print 打印。
-print0 打印在一行,如下图所示。  


(15)-get
作用:从HDFS上拷贝文件到本地。
用法:hadoop fs -get [-ignorecrc] [-crc] <src> <localdst>
示例:

Example:

  • hadoop fs -get /user/hadoop/file localfile
  • hadoop fs -get hdfs://nn.example.com/user/hadoop/file localfile

(16)getfacl
(该条命令没有搞明白,欢迎交流,下面贴出官网的说法)
作用:显示文件和文件夹的ACLs(Access Control Lists)。如果目录有默认的ACL,则显示之。
-R参数:递归显示。
用法:

 hadoop fs -getfattr [-R] -n name | -d [-e en] <path>

Displays the extended attribute names and values (if any) for a file or directory.

Options:

  • -R: Recursively list the attributes for all files and directories.
  • -n name: Dump the named extended attribute value.
  • -d: Dump all extended attribute values associated with pathname.
  • -e encoding: Encode values after retrieving them. Valid encodings are “text”, “hex”, and “base64”. Values encoded as text strings are enclosed in double quotes ("), and values encoded as hexadecimal and base64 are prefixed with 0x and 0s, respectively.
  • path: The file or directory.
示例:
  • hadoop fs -getfattr -d /file
  • hadoop fs -getfattr -R -n user.myAttr /dir

(17)-getmerge
作用:将源文件地址的内容合并到目标文件上,将覆盖目标文件的内容。
用法: hadoop fs -getmerge <src> <localdst>

(18)-help
作用:帮助文档

(19)-ls
作用:查看文件,与linux下ls命令基本类似。
用法:hadoop fs -ls [-d] [-h] [-R] [-t] [-S] [-r] [-u] <args>
选项:
     -d:以纯文件的形式展示目录;
taodj@ubuntu:~/testcommand$ hadoop fs -ls -d /
drwxrwxrwx   - taodj supergroup          0 2015-11-27 07:00 /
     -h:显示为人眼更易识别的单位(原来是字节)。

     -R:递归展示

注:官网上提供的Options比较多,但是测试了,并不行(我所用的版本号不存在问题的),查看help文档,发现help中所述与官网并不符合。怀疑是官网提供信息有误。

(20)-lsr
作用:已经被舍去,效果等同于-ls -R

(21)-mkdir
作用:创建文件夹。
选项:
     -p:创建父目录。类似于Unix的mkdir -p命令。
示例:
taodj@ubuntu:~/testcommand$ hadoop fs -mkdir /arthur/test1/test2
mkdir: `/arthur/test1/test2': No such file or directory
taodj@ubuntu:~/testcommand$ hadoop fs -mkdir -p /arthur/test1/test2

(22)-moveFromLocal
用法:hadoop fs -moveFromLocal <localsrc> <dst>
作用:类似于put命令,不同put命令的是,该操作是移动(意思就是localsrc将被删除)。localsrc应是本地文件。

(23)-moveToLocal
用法:hadoop fs -moveToLocal [-crc] <src> <dst>
作用:该命令尚未实现,显示“Not implemented yet”。

(24)-mv 
用法:移动文件。
作用: hadoop fs -mv URI [URI ...] <dest>
示例:
taodj@ubuntu:~/testcommand$ hadoop fs -mv /wordcount.java /testFlatMap.txt /test1
(将前面两个文件移动到指定目录下)。

(25)-put
用法: hadoop fs -put <localsrc> ... <dst>
作用:将本地的文件上传(复制)到HDFS是dst目录下。

(26)-rm
用法:hadoop fs -rm [-f] [-r |-R] [-skipTrash] URI [URI ...]
作用:删除文件。
选项:
     -f:不显示诊断信息和错误信息(文件不存在,路径不正确均不会显示信息)。
taodj@ubuntu:~/testcommand$ hadoop fs -rm -f /111.txt
taodj@ubuntu:~/testcommand$ hadoop fs -rm -f 111.txt

(27)-rmdir
用法:hadoop fs -rmdir [--ignore-fail-on-non-empty] URI [URI ...]
作用:删除文件夹。
选项:
     —ignore-fail-on-non-empty:使用它的时候,忽略因文件夹非空删除失败的信息。

(28)-rmr
作用:该方法已经被舍去。和-rm -r效果一样。递归删除。


(29)-setfacl
用法:hadoop fs -setfacl [-R] [-b |-k -m |-x <acl_spec> <path>] |[--set <acl_spec> <path>]
作用:设置文件和文件夹的ACLs。
示例:
  • hadoop fs -setfacl -m user:hadoop:rw- /file
  • hadoop fs -setfacl -x user:hadoop /file
  • hadoop fs -setfacl -b /file
  • hadoop fs -setfacl -k /dir
  • hadoop fs -setfacl --set user::rw-,user:hadoop:rw-,group::r--,other::r-- /file
  • hadoop fs -setfacl -R -m user:hadoop:r-x /dir
  • hadoop fs -setfacl -m default:user:hadoop:r-x /dir


(30)-setrep
用法:hadoop fs -setrep [-R] [-w] <numReplicas> <path>
作用:改变文件的目标副本系数,放入REP中。选项-R将递归的改变PATH指定的目录中所有文件的目标副本系数。副本系数需要一定的时间才能达到目标值。选项-w将等待副本系数以与目标值相匹配。

(31)-stat
用法: hadoop fs -stat [format] <path> ...
作用:根据一定格式打印文件/文件夹的统计信息。 文件大小 (%b), 类型 (%F), 所有者所在组 (%g), 名字 (%n), 块大小 (%o), 副本 (%r), 用户名(%u), 修改时间 (%y, %Y)。默认的是%y。
示例:
hadoop fs -stat "%F %u:%g %b %y %n" /file

(32)-tail
用法:hadoop fs -tail [-f] URI
作用:输出文件最后1kb的内容。
选项:
     -f:和unix中tail -f命令类似,当文件内容更新时,输出将会改变,具有实时性。

示例:用一个场景测试下。首先HDFS的/目录下有文件mpwtest1.txt
命令:hadoop fs -tail -f /mpwtest1.txt
开启另外一个终端。输入命令: hadoop fs -appendToFile mpwtest2.txt /mpwtest1.txt
可以发现 窗口1 有变化。

(33)-text
用法:hadoop fs -text <src>
作用:将HDFS中文件以文本形式输出(包括zip包,jar包等形式)
示例:hadoop fs -text /wc.jar


(34)-touchz
用法: hadoop fs -touchz URI [URI ...]
作用:创建一个空文件。
示例:hadoop fs -touchz /hello.jar

(35)-truncate
用法: hadoop fs -truncate [-w] <length> <paths>

作用:将文件按照length进行截取。可以理解成截取[1/length]部分。

选项:-w:

(对于该指令仅仅是个人理解,不一定正确)

如果其他应用在使用文件时候,-w可以保证使用不会出现问题并且可以正常截断。

比如两个端口:一个端口执行命令: hadoop fs -tail -f /test1to10.txt

另一端口执行:hadoop fs -cat /test1to10.txt。而此时tail的端口并没有受到影响。


示例:

  • hadoop fs -truncate 55 /user/hadoop/file1 /user/hadoop/file2
  • hadoop fs -truncate -w 127 hdfs://nn1.example.com/user/hadoop/file1

(36)-usage
用法: hadoop fs -usage command
作用:返回命令的help信息。



你可能感兴趣的:([Hadoop]HDFS shell命令)