写点什么

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

用户头像
罗小龙
关注
发布于: 2021 年 01 月 20 日
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 <localsrc> ... <dst>]	[-cat [-ignoreCrc] <src> ...]	[-checksum <src> ...]	[-chgrp [-R] GROUP PATH...]	[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]	[-chown [-R] [OWNER][:[GROUP]] PATH...]	[-copyFromLocal [-f] [-p] [-l] [-d] [-t <thread count>] <localsrc> ... <dst>]	[-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]	[-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] [-e] <path> ...]	[-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>]	[-createSnapshot <snapshotDir> [<snapshotName>]]	[-deleteSnapshot <snapshotDir> <snapshotName>]	[-df [-h] [<path> ...]]	[-du [-s] [-h] [-v] [-x] <path> ...]	[-expunge]	[-find <path> ... <expression> ...]	[-get [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]	[-getfacl [-R] <path>]	[-getfattr [-R] {-n name | -d} [-e en] <path>]	[-getmerge [-nl] [-skip-empty-file] <src> <localdst>]	[-help [cmd ...]]	[-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [<path> ...]]	[-mkdir [-p] <path> ...]	[-moveFromLocal <localsrc> ... <dst>]	[-moveToLocal <src> <localdst>]	[-mv <src> ... <dst>]	[-put [-f] [-p] [-l] [-d] <localsrc> ... <dst>]	[-renameSnapshot <snapshotDir> <oldName> <newName>]	[-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...]	[-rmdir [--ignore-fail-on-non-empty] <dir> ...]	[-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]	[-setfattr {-n name [-v value] | -x name} <path>]	[-setrep [-R] [-w] <rep> <path> ...]	[-stat [format] <path> ...]	[-tail [-f] <file>]	[-test -[defsz] <path>]	[-text [-ignoreCrc] <src> ...]	[-touch [-a] [-m] [-t TIMESTAMP ] [-c] <path> ...]	[-touchz <path> ...]	[-truncate [-w] <length> <path> ...]	[-usage [cmd ...]]
复制代码


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


发布于: 2021 年 01 月 20 日阅读数: 430
用户头像

罗小龙

关注

镜花水月 2020.08.18 加入

数据工作者,目前就职于商业银行数据部门,擅长数据架构、数据建模、数据开发及数据分析

评论

发布
暂无评论
Hadoop编程实战:HDFS用户Shell详解