Hadoop 编程实战:HDFS 用户 Shell 详解

HDFS Shell主要分为两部分,分别为用户Shell及管理员Shell,对应的关键字分别是dfs与dfsadmin。本文将介绍用户Shell 39个指令的功能描述,选项详解及样例演示。

用户Shell指令的执行语句有hadoop fs及hdfs dfs两种格式,本文将使用hadoop fs格式的执行语句进行演示。

HDFS用户Shell列表

Usage: hadoop fs [generic options]
[-appendToFile  ... ]
[-cat [-ignoreCrc]  ...]
[-checksum  ...]
[-chgrp [-R] GROUP PATH...]
[-chmod [-R]  PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]
[-copyFromLocal [-f] [-p] [-l] [-d] [-t ]  ... ]
[-copyToLocal [-f] [-p] [-ignoreCrc] [-crc]  ... ]
[-count [-q] [-h] [-v] [-t []] [-u] [-x] [-e]  ...]
[-cp [-f] [-p | -p[topax]] [-d]  ... ]
[-createSnapshot  []]
[-deleteSnapshot  ]
[-df [-h] [ ...]]
[-du [-s] [-h] [-v] [-x]  ...]
[-expunge]
[-find  ...  ...]
[-get [-f] [-p] [-ignoreCrc] [-crc]  ... ]
[-getfacl [-R] ]
[-getfattr [-R] {-n name | -d} [-e en] ]
[-getmerge [-nl] [-skip-empty-file]  ]
[-help [cmd ...]]
[-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [ ...]]
[-mkdir [-p]  ...]
[-moveFromLocal  ... ]
[-moveToLocal  ]
[-mv  ... ]
[-put [-f] [-p] [-l] [-d]  ... ]
[-renameSnapshot   ]
[-rm [-f] [-r|-R] [-skipTrash] [-safely]  ...]
[-rmdir [--ignore-fail-on-non-empty]  ...]
[-setfacl [-R] [{-b|-k} {-m|-x } ]|[--set  ]]
[-setfattr {-n name [-v value] | -x name} ]
[-setrep [-R] [-w]   ...]
[-stat [format]  ...]
[-tail [-f] ]
[-test -[defsz] ]
[-text [-ignoreCrc]  ...]
[-touch [-a] [-m] [-t TIMESTAMP ] [-c]  ...]
[-touchz  ...]
[-truncate [-w]   ...]
[-usage [cmd ...]]



1. appendToFile

  • 执行语句:

Hadoop fs -appendToFile

  • 功能描述:

把一个或多个本地文件的内容追加到HDFS文件的末端,或读取标准输入内容并追加到HDFS文件的末端。

  • 选项描述:

  • 样例演示:

  • 创建本地文件test1.txt、test2.txt及HDFS文件/hdfstest/test.txt



  • 把test1.txt内容追加到/hdfstest/test.txt

hadoop -appendToFile text1.txt /hdfstest/test.txt

  • 把test1.txt和test2.txt内容追加到/hdfstest/test.txt

hadoop -appendToFile text1.txt test2.txt /hdfstest/test.txt

注意执行语句内本地文件的顺序会影响内容的写入顺序

  • 读取标准输入内容并追加到/hdfstest/test.txt

hadoop -appendToFile – /hdfstest/test.txt

注意标准输入完成后必须按ctrl+c退出并保存

2. cat

  • 执行语句:

hadoop fs -cat [-ignoreCrc]

  • 功能描述:

显示一个或多个HDFS文件内容

  • 选项描述:

-ignoreCrc :忽略数据校验和失败

  • 样例演示:

  • 输出/hdfstest/test.txt与/hdfstest/write_test.txt文件内容

hadoop fs -cat /hdfstest/test.txt /hdfstest/write_test.txt

注意多个文件内容输出时,无任何标识隔离文件间的内容

3. checksum

  • 执行语句:

hadoop fs -checksum

  • 功能描述:

返回HDFS文件的数据校验和CRC

  • 选项描述:

  • 样例演示:

  • 输出/hdfstest/test.txt的数据校验和

hadoop fs -checksum /hdfstest/test.txt

其中MD5-of-0MD5-of-512CRC32C属于HDFS文件的数据校验和算法。

4. chgrp

  • 执行语句:

hadoop fs -chgrp [-R] GROUP PATH

  • 功能描述:

更改指定HDFS对象所属用户组

  • 选项描述:

-R :迭代指定对象内的所有的对象

  • 样例演示:

  • 把/hdfstest/test.txt的用户组从supergroup修改为luorl

hadoop fs -chgrp luorl /hdfstest/test.txt

修改前

修改后



5. chmod

  • 执行语句:

hadoop fs -chmod [-R] PATH

  • 功能描述:

更改指定对象的权限设置

  • 选项描述:

-R :迭代指定对象内的所有的对象

MODE :格式为“用户+操作+权限”

角色有3种,分别为:

u:文件拥有者

g:与文件拥有者同属的用户组

o:除了u/g以外的其他人

操作有3种,分别为:

+:增加权限

-:删除权限

=:取消权限

权限有3种,分别为:

r:读取权限

w:写入权限

x:执行权限

比如u+rwx,代表u用户增加读取、写入、执行权限;o-x,除了u/g以外的其他用户删除执行权限;ug+r,u/g用户增加读取权限

OCTALMODE :使用3个八进制数配置ugo权限,每个八进制数代表一个对象的rwx设置





  • 样例演示:

  • 对/hdfstest/test.txt的u用户添加读取、写入、执行权限,对g用户添加读取、写入权限,对o用户添加读取权限

hadoop fs -chmod u+rwx,g+rw,o+r /hdfstest/test.txt

hadoop fs -chmod 764 /hdfstest/test.txt



6. chown

  • 执行语句:

hadoop fs -chown [-R] [OWNER][:[GROUP]] PATH

  • 功能描述:

更改指定对象的所属用户

  • 选项描述:

-R :迭代指定对象内的所有的对象

  • 样例演示:

  • 更改/hdfstest/test.txt的用户为root:supergroup

hadoop fs -chown root:supergroup /hdfstest/test.txt



7. copyFromLocal

  • 执行语句:

hadoop fs -copyFromLocal [-f] [-p] [-l] [-d] [-t ]

  • 功能描述:

拷贝本地文件到HDFS指定对象

  • 选项描述:

-f :若对象已存在,则覆盖

-p :保留源文件的创建时间、修改时间、所属用户及用户组

-l :允许datanode延迟保存文件副本到磁盘,让副本数保持为1

-d :跳过创建._COPYING_的临时文件

-t :开启多线程上传

  • 样例演示:

  • 拷贝本地文件test.txt覆盖/hdfstest/test.txt

hadoop fs -copyFromLocal -f test.txt /hdfstest/test.txt

  • 拷贝本地文件test1.txt到/hdfstest/,并保留源文件信息

hadoop fs -copyFromLocal -p test1.txt /hdfstest/

  • 开启4线程拷贝本地文件test2.txt到/hdfstest/

hadoop fs -copyFromLocal -t 4 test2.txt /hdfstest/



8. copyToLocal

  • 执行语句:

hadoop fs -copyToLocal [-f] [-p] [-ignoreCrc] [-crc]

  • 功能描述:

拷贝HDFS指定对象到本地

  • 选项描述:

-f :若对象已存在,则覆盖

-p :保留源文件的创建时间、修改时间、所属用户及用户组

-ignoreCrc :忽略数据校验和失败

-crc :下载对象及对应的crc(数据校验和)文件

  • 样例演示:

  • 拷贝/hdfstest/test.txt覆盖本地文件test.txt

hadoop fs -copyToLocal -f /hdfstest/test.txt test.txt

  • 拷贝/hdfstest/in_test.txt并保留源文件信息

hadoop fs -copyToLocal -p /hdfstest/in_test.txt /root



9. count

  • 执行语句:

hadoop fs -count [-q] [-h] [-v] [-t []] [-u] [-x] [-e]

  • 功能描述:

统计HDFS指定路径的可容纳文件/文件夹配额、空间配额、目录数、文件数及占用空间

  • 选项描述:

-q :输出以下统计列:

QUOTA(指定路径可建文件/文件夹数量配额)、

REM_QUOTA(指定路径可建文件/文件夹数量剩余配额)、

SPACE_QUOTA(指定路径可建文件/文件夹空间配额)、

REM_SPACE_QUOTA(指定路径可建文件/文件夹空间剩余配额)、

DIR_COUNT(指定路径下文件夹(包括自身)统计数)、

FILE_COUNT(指定路径下文件统计数)、

CONTENT_SIZE(指定路径下文件及文件夹大小总和)、

PATHNAME(指定路径)

-u :输出以下统计列:

QUOTA(指定路径可建文件/文件夹数量配额)、

REM_QUOTA(指定路径可建文件/文件夹数量剩余配额)、

SPACE_QUOTA(指定路径可建文件/文件夹空间配额)、

REM_SPACE_QUOTA(指定路径可建文件/文件夹空间剩余配额)、

PATHNAME(指定路径)

-h :把数据单位显示为容易理解的单位,比如原来空间为byte单位展示数据,加入该参数后转换为k,m,g等单位

-v :显示统计项标题行

-t :显示每种存储类型的空间配额和使用情况。如果未给出-u或-q选项,则-t选项将被忽略。可选参数storage type支持的输入类型有:“ all”,“ ram_disk”,“ ssd”,“ disk”或“ archive”。

-x :统计结果排除快照。如果指定了-u或-q选项,则-x选项将被忽略

-e :显示指定路径的EC编码模式,通过列ERASURECODING_POLICY显示

  • 样例演示:

  • 显示根目录的统计信息,并显示标题行

hadoop fs -count -q -v /

hadoop fs -count -u -v /

  • 显示/hdfstest目录的统计信息,并显示标题行及合适单位

hadoop fs -count -q -v -h /

  • 显示/hdfstest目录各种存储类型的配额信息

hadoop fs -count -q -t -v -h /

查询SSD的配额信息

hadoop fs -count -q -t ssd -v -h /

查询REM内存的配额信息



10. cp

  • 执行语句:

hadoop fs -cp [-f] [-p | -p[topax]] [-d]

  • 功能描述:

HDFS指定对象拷贝到HDFS的另一个路径

  • 选项描述:

-f :若对象已存在,则覆盖

-p :保留源文件的时间戳(timestamp)、所属用户及用户组(ownership)、权限(premission)。若增加topax参数,则在原来基础上增加保留ACL(访问控制列表)、XAttr(扩展属性)

-d :跳过创建._COPYING_的临时文件

  • 样例演示:

  • 拷贝/hdfstest/test.txt到/hdfstest2/路径

hadoop fs -cp /hdfstest/test.txt /hdfstest2

  • 拷贝/hdfstest/test1.txt到/hdfstest2/路径,并保留源文件所有信息

hadoop fs -cp -ptopax /hdfstest/test1.txt /hdfstest2



11. createSnapshot

快照是HDFS运维最重要的指令之一,具体可访问【 HDFS杂谈:SnapShot快照

  • 执行语句:

hadoop fs -createSnapshot []

  • 功能描述:

创建HDFS指定路径的快照

  • 选项描述:

snapshotDir :允许创建快照的目录,快照创建成功后将存储在snapshotDir/. snapshot

snapshotName :指定快照名称,默认名称为S+创建时间戳

  • 样例演示:

  • 设置/hdfstest允许设置快照

hdfs dfsadmin -allowSnapshot /hdfstest

  • 创建/hdfstest的快照

不指定快照名称下创建快照

hadoop fs -createSnapshot /hdfstest

指定快照名称下创建快照

hadoop fs -createSnapshot /hdfstest s1

查看所有快照

hadoop fs -ls -R /hdfstest/.snapshot



12. deleteSnapshot

  • 执行语句:

hadoop fs -deleteSnapshot

  • 功能描述:

删除HDFS指定路径内指定名称的快照

  • 选项描述:

  • 样例演示:

  • 删除/hdfstest的快照s1

hadoop fs -deleteSnapshot /hdfstest s1



13. renameSnapshot

  • 执行语句:

hadoop fs -renameSnapshot

  • 功能描述:

重命名HDFS指定路径的快照为新的名称

  • 选项描述:

  • 样例演示:

  • 重命名/hdfstest的快照s1为快照s_init

hadoop fs -renameSnapshot /hdfstest s1 s_init



14. df

  • 执行语句:

hadoop fs -df [-h]

  • 功能描述:

查看指定路径对应的HDFS系统的存储情况

  • 选项描述:

-h :把数据单位显示为容易理解的单位

  • 样例演示:

  • 查询/hdfstest与/hdfstest2所在的hdfs系统空间

hadoop fs -df -h /hdfstest /hdfstest2

因为/hdfstest与/hdfstest2位于同一个HDFS环境,故空间信息一致

15. du

  • 执行语句:

hadoop fs -du [-s] [-h] [-v] [-x]

  • 功能描述:

查看指定对象的存储情况

  • 选项描述:

-s :显示指定路径下所有文件夹空间汇总结果。若不填该选项,则显示指定路径下所有文件/文件夹空间

-h :把数据单位显示为容易理解的单位

-v :显示标题行

-x :统计结果不包括快照

  • 样例演示:

  • 显示/hdfstest/路径下所有对象的空间

hadoop fs -du -v /hdfstest/

hadoop fs -du -v -h /hdfstest/

  • 显示/hdfstest/路径汇总空间

hadoop fs -du -v -s -h /hdfstest/



16. expunge

  • 执行语句:

hadoop fs –expunge

  • 功能描述:

清空回收站

  • 选项描述:

  • 样例演示:

  • 清空当前回收站

hadoop fs -expunge



17. find

  • 执行语句:

hadoop fs -find

  • 功能描述:

按表达式搜索指定路径下的对象

  • 选项描述:

expression 搜索表达式:

              -name :根据文件名称精准搜索,区分英文大小写

              -iname :在-name基础上增加不区分英文大小写

              -print :输出搜索文件的详细路径

              -print0 :与-print一致,但末尾不带换行符

              expression之间可以用-a、-and或者空格连接 ,比如

expression -a expression

expression -and expression

expression expression

  • 样例演示:

  • 查找/hdfstest/目录下的test.txt文件并输出

hadoop fs -find /hdfstest -iname test.txt -print

  • 模糊查找/hdfstest/目录下的test关键字文件并输出

当使用通配符*按关键字搜索时,HDFS提示Unexpected argument出乎意料的参数,由此可知find指令无法对文件名模糊查询

18. get

  • 执行语句:

hadoop fs -get [-f] [-p] [-ignoreCrc] [-crc]

  • 功能描述:

拷贝HDFS指定对象到本地,与copyToLocal功能一致

  • 选项描述:

-f :若对象已存在,则覆盖

-p :保留源文件的创建时间、修改时间、所属用户及用户组

-ignoreCrc :忽略数据校验和失败

-crc :下载指定对象及对应的crc(数据校验和)文件

  • 样例演示:

  • 拷贝/hdfstest/test.txt覆盖本地文件test.txt

hadoop fs -get -f /hdfstest/test.txt test.txt



19. getmerge

  • 执行语句:

hadoop fs -getmerge [-nl] [-skip-empty-file]

  • 功能描述:

把HDFS多个文件内容合并并拷贝到本地的一个文件中

  • 选项描述:

-nl :各个文件内容间拼接增加换行符

-skip-empty-file :跳过空文件

  • 样例演示:

  • 把/hdfstest/test.txt与/hdfstest/test1.txt合并并拷贝到本地test3.txt

hadoop fs -getmerge /hdfstest/test.txt /hdfstest/test1.txt test3.txt

hadoop fs -getmerge -nl /hdfstest/test.txt /hdfstest/test1.txt test3.txt

由上述结果可知,getmerge指令默认覆盖同一名称文件的内容

20. ls

  • 执行语句:

hadoop fs -ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e]

  • 功能描述:

显示指定目录内的所有对象,或指定对象的信息

  • 选项描述:

-C :仅显示指定对象的名称

-d :仅显示指定目录的信息

-h :把数据单位显示为容易理解的单位

-q :使用?替换不可打印字符

-R :递归指定对象内的所有对象

-t :按修改时间排序

-S :按文件大小排序

-r :反转排序顺序,需配合排序选项一起使用

-u :按最近访问时间排序

-e :仅显示指定对象的EC编码

  • 样例演示:

  • 仅显示/hdfstest/下的所有对象的名称

hadoop fs -ls -C /hdfstest

  • 按修改时间倒序显示/hdfstest下的所有对象

hadoop fs -ls -t -r /hdfstest

  • 按最近访问时间显示/hdfstest下的所有对象

hadoop fs -ls -u -h /hdfstest

注意显示的时间戳从原来的最后修改时间变更为最后访问时间

  • 查找根目录下关键字为spark的文件夹/文件

hadoop fs -ls -R -h /|grep spark

使用ls指令并搭配linux grep指令,可实现指定路径下的模糊查询

21. mkdir

  • 执行语句:

hadoop fs -mkdir [-p]

  • 功能描述:

创建目录

  • 选项描述:

-p :即使文件夹存在也不会报错

  • 样例演示:

  • 在根目录下创建hdfstest文件夹

hadoop fs -mkdir -p /hdfstest



22. moveFromLocal

  • 执行语句:

hadoop fs -moveFromLocal

  • 功能描述:

移动本地文件到HDFS指定对象

  • 选项描述:

  • 样例演示:

  • 把本地文件mv_test.txt移动到/hdfstest下

hadoop fs -moveFromLocal mv_test.txt /hdfstest



23. moveToLocal

  • 执行语句:

hadoop fs -moveToLocal

  • 功能描述:

移动HDFS指定对象到本地(尚未实现)

24. mv

  • 执行语句:

hadoop fs -mv

  • 功能描述:

在HDFS内部移动指定对象

  • 选项描述:

  • 样例演示:

  • 把/hdfstest/mv_test.txt移到/hdfstest2

hadoop fs -mv /hdfstest/mv_test.txt /hdfstest2



25. put

  • 执行语句:

hadoop fs -put [-f] [-p] [-l] [-d]

  • 功能描述:

将本地对象上传到HDFS,与copyFromLocal功能一致

  • 选项描述:

-f :若对象已存在,则覆盖

-p :保留源文件的创建时间、修改时间、所属用户及用户组

-l :允许datanode延迟保存文件副本到磁盘,让副本数保持为1

-d :跳过创建._COPYING_的临时文件

  • 样例演示:

  • 拷贝本地文件test.txt到/hdfstest,并覆盖原文件

hadoop fs -put -f  test.txt /hdfstest/test.txt

26. rm

  • 执行语句:

hadoop fs -rm [-f] [-r|-R] [-skipTrash] [-safely]

  • 功能描述

删除指定对象

  • 选项描述:

-f :若对象不存在时,会跳过该对象,不会报错退出

-r|-R :迭代指定对象内的所有对象

-skipTrash :跳过回收站

-safely :使用该选项时,当删除对象内的文件总数大于hadoop.shell.delete.limit.num.files时,将提示安全确认。可以与-skipTrash一起使用,以防止意外迭代删除大目录

  • 样例演示:

  • 删除/hdfstest/rm_test.txt

hadoop fs -rm -f /hdfstet/rm_test.txt

  • 删除/hdfstest2目录及目录内所有对象

hadoop fs -rm -R -skipTrash -safely /hdfstest2



27. rmdir

  • 执行语句:

hadoop fs -rmdir [–ignore-fail-on-non-empty]

  • 功能描述:

删除空目录

  • 选项描述:

–ignore-fail-on-non-empty :若目录不为空,也不会报错退出

  • 样例演示:

  • 删除/hdfstest2

hadoop fs -rmdir /hdfstest2

hadoop fs -rmdir –ignore-fail-on-non-empty /hdfstest2

  • 删除/hdfstest2/rm_dir

hadoop fs -rmdir /hdfstest2/rm_dir



28. setfacl

有关ACL访问控制列表的具体内容,可访问《 HDFS杂谈:ACL访问控制列表

  • 执行语句:

hadoop fs -setfacl [-R] [{-b|-k} {-m|-x } ]|[–set ]

  • 功能描述:

设置指定对象的ACL(访问控制列表)

  • 选项描述:

-b :剔除基本ACL(u/g/o用户的权限)外的ACL

-k :剔除default ACL

-m :添加新的ACL条目

-x :删除指定的ACL条目

–set :添加新的ACL条目并覆盖原有的ACL条目(包含基本ACL覆盖)

-R :迭代指定对象内的所有对象

acl_spec :ACL条目,填写规范为::,比如user:luorl:rw-,为luorl用户添加读写权限;group::rwx,为基本组别用户权限调整为读写执行。

  • 样例演示:

  • 为/hdfstest/test.txt添加luorl用户读写权限

hadoop fs -setfacl -m user:luorl:rw- /hdfstest/test.txt

  • 剔除上述添加的luorl用户权限

hadoop fs -setfacl -b /hdfstest/test.txt

  • 为/hdfstest/添加luorl用户读写权限,并设置为defalut ACL

hadoop fs -setfacl -m default:user:luorl:rw- /hdfstest

设置好目录的defalut ACL后,后续在该目录下创建的对象会继承default ACL

  • 剔除上述添加的luorl用户的defalut ACL

hadoop fs -setfacl -k /hdfstest

  • 为/hdfstest/test.txt设置user::rwx,user:luorl:rw,group::rw-,other::r—权限,并覆盖原有权限

重新设置/hdfstest/test.txt文件的权限

hadoop fs -setfacl –set user::rwx,user:luorl:rw-,group::rw-,other::r– /hdfstest/test.txt

对比修改前后的权限设置,可见文件的ACL(包含基本ACL)已被完全覆盖

29. getfacl

  • 执行语句:

hadoop fs -getfacl [-R]              

  • 功能描述:

查询指定对象的ACL(访问控制列表)

  • 选项描述:

-R :迭代指定对象内的所有对象

  • 样例演示:

  • 查询/hdfstest的ACL

hadoop fs -getfacl /hdfstest



30. setfattr

有关Xattrs扩展属性的具体内容,可访问《 HDFS杂谈:Xattr扩展属性

  • 执行语句:

hadoop fs -setfattr {-n name [-v value] | -x name}

  • 功能描述:

设置指定对象的扩展属性

  • 选项描述:

-n :设置扩展属性的名称

-v :设置扩展属性的值,必须搭配-n使用

-x :移除扩展属性

  • 样例演示:

  • 为/hdfstest/test.txt新增扩展属性user.MyAttr

hadoop fs -setfattr -n user.MyAttr /hdfstest/test.txt

  • 为/hdfstest/test.txt扩展属性user.MyAttr设置值MyValue

hadoop fs -setfattr -n user.MyAttr -v MyValue /hdfstest/test.txt

  • 为/hdfstest/test.txt移除扩展属性user.MyAttr



31. getfattr

  • 执行语句:

hadoop fs -getfattr [-R] {-n name | -d} [-e en]

  • 功能描述:

查询指定对象的扩展属性

  • 选项描述:

-R :递归指定对象内的所有对象

-n :按指定的扩展属性名称展示

-d :显示所有扩展属性

-e :按指定编码展示扩展属性的值,必须搭配-n name或-d使用。编码类型分为text(文本)、hex(16进制)、base64(64位加密)。

  • 样例演示:

  • 展示/hdfstest/test.txt的user.MyAttr扩展属性

hadoop fs -getfattr -n user.MyAttr /hdfstest/test.txt

  • 展示/hdfstest/test.txt所有扩展属性

hadoop fs -getfattr -d /hdfstest/test.txt

  • 展示/hdfstest/test.txt的user.MyAttr扩展属性,并属性值进行64位加密

hadoop fs -getfattr -n user.MyAttr -e base64 /hdfstest/test.txt



32. setrep

  • 执行语句:

hadoop fs -setrep [-R] [-w]

  • 功能描述:

更改指定对象的复制副本数。若指定对象为目录,将迭代更改目录内所有对象的复制副本数。

  • 选项描述:

-R :为了向后兼容而设计,暂时无效果

-w :等待所有DataNode的数据同步后才结束命令

rep :设置副本数

  • 样例演示:

  • 将/hdfstest/test.txt设置为2副本

hadoop fs -setrep -w 2 /hdfstest/test.txt



33. stat

  • 执行语句:

hadoop fs -stat [format]

  • 功能描述:

根据格式显示指定对象的信息

  • 选项描述:

format类型:

type:

显示对象的类型。参数为%F

若对象属于文件,则显示为regular file

若对象属于目录,则显示为directory

permissions:

显示对象的权限配置。

%a显示为八进制权限,比如644

%A显示为ACL条目,比如rw-r–r–

bytes:

显示对象大小,单位为字节。参数为%b 

user name of owner:

显示对象所属用户名称。参数为%u

group name of owner:

显示对象所属组别名称。参数为%g

name:

显示对象名称。参数为%n

block size:

显示对象所在的数据块大小,一般为HDFS设置的数据块大小。若对象为目录,则显示大小为0。参数为%o

replication:

显示对象的复制副本数。参数为%r

access date:

显示对象的创建时间。

参数为%x时,显示为”yyyy-MM-dd HH:mm:ss”

参数为%X时,显示为从“1970-1-1”到创建时间的秒数

modification date:

显示对象的修改时间。

参数为%y时,显示为”yyyy-MM-dd HH:mm:ss”

参数为%Y时,显示为从“1970-1-1”到修改时间的秒数

  • 样例演示:

  • 按格式显示/hdfstest/test.txt的类型、八进制权限、所属用户及组别、副本数、创建时间、修改时间

hadoop fs -stat “Type:%F Perm:%a %u:%g Rep:%r Acces_time:%x Modify_time:%y” /hdfstest/test.txt



34. tail

  • 执行语句:

hadoop fs -tail [-f]

  • 功能描述:

显示文件最后1kb的内容

  • 选项描述:

-f :持续输出文件内容

  • 样例演示:

  • 输出/hdfstest/test.txt最后1kb的内容

hadoop fs -tail /hdfstest/test.txt



35. test

  • 执行语句:

hadoop fs -test -[defswrz]

  • 功能描述:

判断指定对象的类型

  • 选项描述:

-d :判断对象是否目录,若是则返回0

-e :判断对象是否存在,若是则返回0

-f :判断对象是否文件,若是则返回0

-s :判断目录是否为空,若是则返回0

-w :判断文件存在且具备写入权限,若是则返回0

-r :判断文件存在且具备读取权限,若是则返回0

-z :判断文件是否为空文件,若是则返回0

  • 样例演示:

  • 判断/hdfstest/test.txt是否文件

hadoop fs -test -f /hdfstest/test.txt

  • 判断/hdfstest/test.txt是否目录

hadoop fs -test -d /hdfstest/test.txt



36. text

  • 执行语句:

hadoop fs -text [-ignoreCrc]

  • 功能描述:

将HDFS中文件以文本形式输出(包括zip包,jar包等形式)

  • 选项描述:

-ignoreCrc :忽略数据校验和失败

  • 样例演示:

  • 对/hdfstest/test.txt以文本格式显示

hadoop fs -text /hdfstest/test.txt

  • 对/hdfstest/test.zip以文本格式显示

hadoop fs -text /hdfstest/test.zip



37. touch

  • 执行语句:

hadoop fs -touch [-a] [-m] [-t TIMESTAMP ] [-c]

  • 功能描述:

更新文件的创建时间或修改时间,若文件为空,则创建

  • 选项描述:

-a :仅变更创建时间为当前时间

-m :仅变更修改时间为当前时间

-t :自定义时间(时间格式为yyyyMMddHHmmss))代替当前时间

-c :即使文件不存在也不创建文件

  • 样例演示:

  • 修改/hdfstest/text.txt的创建时间为当前时间

hadoop fs -touch -a /hdfstest/test.txt



38. touchz

  • 执行语句:

hadoop fs -touchz

  • 功能描述:

创建一个0长度的文件。文件创建后仅在NameNode上创建元数据信息,等到数据写入文件时才会在DataNode上创建block。

  • 选项描述:

  • 样例演示:

  • 在/hdfstest/下创建touchz_test.txt文件

hadoop fs -touchz /hdfstest/touchz_test.txt



39. truncate

  • 执行语句:

hadoop fs -truncate [-w]

  • 功能描述:

将指定文件内容截断为指定长度并保存

  • 选项描述:

-w :截断文件内容后必须等待所有的DataNode的数据同步后才结束命令

  • 样例演示:

  • 截断/hdfstest/test.txt文件只有10长度的内容

hadoop fs -truncate -w 10 /hdfstest/test.txt