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

HDFS Shell 主要分为两部分,分别为用户 Shell 及管理员 Shell,对应的关键字分别是 dfs 与 dfsadmin。本文将介绍用户 Shell 39 个指令的功能描述,选项详解及样例演示。
用户 Shell 指令的执行语句有 hadoop fs 及 hdfs dfs 两种格式,本文将使用 hadoop fs 格式的执行语句进行演示。
HDFS 用户 Shell 列表
1. appendToFile
执行语句:
Hadoop fs -appendToFile <localsrc> <dst>
功能描述:
把一个或多个本地文件的内容追加到 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] <src>
功能描述:
显示一个或多个 HDFS 文件内容
选项描述:
-ignoreCrc:忽略数据校验和失败
样例演示:
输出/hdfstest/test.txt 与/hdfstest/write_test.txt 文件内容
hadoop fs -cat /hdfstest/test.txt /hdfstest/write_test.txt

注意多个文件内容输出时,无任何标识隔离文件间的内容
3. checksum
执行语句:
hadoop fs -checksum <src>
功能描述:
返回 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] <MODE[,MODE]... | OCTALMODE> 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 <thread count>] <localsrc> <dst>
功能描述:
拷贝本地文件到 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] <src> <localdst>
功能描述:
拷贝 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 [<storage type>]] [-u] [-x] [-e] <path>
功能描述:
统计 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] <src> <dst>
功能描述:
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 <snapshotDir> [<snapshotName>]
功能描述:
创建 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 <snapshotDir> <snapshotName>
功能描述:
删除 HDFS 指定路径内指定名称的快照
选项描述:
样例演示:
删除/hdfstest 的快照 s1
hadoop fs -deleteSnapshot /hdfstest s1

13. renameSnapshot
执行语句:
hadoop fs -renameSnapshot <snapshotDir> <oldName> <newName>
功能描述:
重命名 HDFS 指定路径的快照为新的名称
选项描述:
样例演示:
重命名/hdfstest 的快照 s1 为快照 s_init
hadoop fs -renameSnapshot /hdfstest s1 s_init

14. df
执行语句:
hadoop fs -df [-h] <path>
功能描述:
查看指定路径对应的 HDFS 系统的存储情况
选项描述:
-h:把数据单位显示为容易理解的单位
样例演示:
查询/hdfstest 与/hdfstest2 所在的 hdfs 系统空间
hadoop fs -df -h /hdfstest /hdfstest2

因为/hdfstest 与/hdfstest2 位于同一个 HDFS 环境,故空间信息一致
15. du
执行语句:
hadoop fs -du [-s] [-h] [-v] [-x] <path>
功能描述:
查看指定对象的存储情况
选项描述:
-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 <path> <expression>
功能描述:
按表达式搜索指定路径下的对象
选项描述:
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] <src> <localdst>
功能描述:
拷贝 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] <src> <localdst>
功能描述:
把 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] <path>
功能描述:
显示指定目录内的所有对象,或指定对象的信息
选项描述:
-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] <path>
功能描述:
创建目录
选项描述:
-p:即使文件夹存在也不会报错
样例演示:
在根目录下创建 hdfstest 文件夹
hadoop fs -mkdir -p /hdfstest

22. moveFromLocal
执行语句:
hadoop fs -moveFromLocal <localsrc> <dst>
功能描述:
移动本地文件到 HDFS 指定对象
选项描述:
样例演示:
把本地文件 mv_test.txt 移动到/hdfstest 下
hadoop fs -moveFromLocal mv_test.txt /hdfstest

23. moveToLocal
执行语句:
hadoop fs -moveToLocal <src> <localdst>
功能描述:
移动 HDFS 指定对象到本地(尚未实现)
24. mv
执行语句:
hadoop fs -mv <src> <dst>
功能描述:
在 HDFS 内部移动指定对象
选项描述:
样例演示:
把/hdfstest/mv_test.txt 移到/hdfstest2
hadoop fs -mv /hdfstest/mv_test.txt /hdfstest2

25. put
执行语句:
hadoop fs -put [-f] [-p] [-l] [-d] <localsrc> <dst>
功能描述:
将本地对象上传到 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] <src>
功能描述
删除指定对象
选项描述:
-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] <dir>
功能描述:
删除空目录
选项描述:
--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 <acl_spec>} <path>]|[--set <acl_spec> <path>]
功能描述:
设置指定对象的 ACL(访问控制列表)
选项描述:
-b:剔除基本 ACL(u/g/o 用户的权限)外的 ACL
-k:剔除 default ACL
-m:添加新的 ACL 条目
-x:删除指定的 ACL 条目
--set:添加新的 ACL 条目并覆盖原有的 ACL 条目(包含基本 ACL 覆盖)
-R:迭代指定对象内的所有对象
acl_spec:ACL 条目,填写规范为<user/group/other>:<用户名/组别名>:<r/w/x/-(必须达到 3 位权限)>,比如 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] <path>
功能描述:
查询指定对象的 ACL(访问控制列表)
选项描述:
-R:迭代指定对象内的所有对象
样例演示:
查询/hdfstest 的 ACL
hadoop fs -getfacl /hdfstest

30. setfattr
有关 Xattrs 扩展属性的具体内容,可访问《HDFS杂谈:Xattr扩展属性》
执行语句:
hadoop fs -setfattr {-n name [-v value] | -x name} <path>
功能描述:
设置指定对象的扩展属性
选项描述:
-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] <path>
功能描述:
查询指定对象的扩展属性
选项描述:
-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] <rep> <path>
功能描述:
更改指定对象的复制副本数。若指定对象为目录,将迭代更改目录内所有对象的复制副本数。
选项描述:
-R:为了向后兼容而设计,暂时无效果
-w:等待所有 DataNode 的数据同步后才结束命令
rep:设置副本数
样例演示:
将/hdfstest/test.txt 设置为 2 副本
hadoop fs -setrep -w 2 /hdfstest/test.txt

33. stat
执行语句:
hadoop fs -stat [format] <path>
功能描述:
根据格式显示指定对象的信息
选项描述:
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] <file>
功能描述:
显示文件最后 1kb 的内容
选项描述:
-f:持续输出文件内容
样例演示:
输出/hdfstest/test.txt 最后 1kb 的内容
hadoop fs -tail /hdfstest/test.txt

35. test
执行语句:
hadoop fs -test -[defswrz] <path>
功能描述:
判断指定对象的类型
选项描述:
-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] <src>
功能描述:
将 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] <path>
功能描述:
更新文件的创建时间或修改时间,若文件为空,则创建
选项描述:
-a:仅变更创建时间为当前时间
-m:仅变更修改时间为当前时间
-t:自定义时间(时间格式为 yyyyMMddHHmmss))代替当前时间
-c:即使文件不存在也不创建文件
样例演示:
修改/hdfstest/text.txt 的创建时间为当前时间
hadoop fs -touch -a /hdfstest/test.txt

38. touchz
执行语句:
hadoop fs -touchz <path>
功能描述:
创建一个 0 长度的文件。文件创建后仅在 NameNode 上创建元数据信息,等到数据写入文件时才会在 DataNode 上创建 block。
选项描述:
样例演示:
在/hdfstest/下创建 touchz_test.txt 文件
hadoop fs -touchz /hdfstest/touchz_test.txt

39. truncate
执行语句:
hadoop fs -truncate [-w] <length> <path>
功能描述:
将指定文件内容截断为指定长度并保存
选项描述:
-w:截断文件内容后必须等待所有的 DataNode 的数据同步后才结束命令
样例演示:
截断/hdfstest/test.txt 文件只有 10 长度的内容
hadoop fs -truncate -w 10 /hdfstest/test.txt

版权声明: 本文为 InfoQ 作者【罗小龙】的原创文章。
原文链接:【http://xie.infoq.cn/article/2f95eeab926e3af0331e0289e】。文章转载请联系作者。
评论