8

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

 3 years ago
source link: https://xie.infoq.cn/article/2f95eeab926e3af0331e0289e
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

nI7RFza.png!mobile



6B32Qrm.png!mobile

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

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

I3QNJv.png!mobile

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

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

BfqIJnj.png!mobile

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

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

hadoop -appendToFile - /hdfstest/test.txt

J7riUnM.png!mobile

注意标准输入完成后必须按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

JziaiiQ.png!mobile

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

3. checksum

  • 执行语句:

hadoop fs -checksum <src>

  • 功能描述:

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

  • 选项描述:

  • 样例演示:

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

hadoop fs -checksum /hdfstest/test.txt

bENNj2M.png!mobile

其中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

修改前

eYZvIfR.png!mobile

修改后

za63Afu.png!mobile



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设置

vY7nuiq.png!mobile



uYVvayi.png!mobile


  • 样例演示:

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

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

ENZBRfQ.png!mobile

hadoop fs -chmod 764 /hdfstest/test.txt

fARjQj6.png!mobile



6. chown

  • 执行语句:

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

  • 功能描述:

更改指定对象的所属用户

  • 选项描述:

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

  • 样例演示:

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

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

UzuIZv3.png!mobile



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

ZNrqAf3.png!mobile

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

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

zAnEvqv.png!mobile

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

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

RJZZBr2.png!mobile



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

a6Z7Bb.png!mobile

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

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

uqQ7JzJ.png!mobile



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 /

uU73IjU.png!mobile

hadoop fs -count -u -v /

zqi6Brb.png!mobile

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

hadoop fs -count -q -v -h /

UjEZrmQ.png!mobile

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

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

zYzqmuF.png!mobile

查询SSD的配额信息

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

zYf6Nny.png!mobile

查询REM内存的配额信息

m2YJbiJ.png!mobile



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

zm2MVbf.png!mobile

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

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

vqYvimr.png!mobile



11. createSnapshot

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

  • 执行语句:

hadoop fs -createSnapshot <snapshotDir> [<snapshotName>]

  • 功能描述:

创建HDFS指定路径的快照

  • 选项描述:

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

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

  • 样例演示:

  • 设置/hdfstest允许设置快照

hdfs dfsadmin -allowSnapshot /hdfstest

MJVvInF.png!mobile

  • 创建/hdfstest的快照

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

hadoop fs -createSnapshot /hdfstest

A3q6jyZ.png!mobile

指定快照名称下创建快照

hadoop fs -createSnapshot /hdfstest s1

Q77bArU.png!mobile

查看所有快照

hadoop fs -ls -R /hdfstest/.snapshot

QjAbUv2.png!mobile



12. deleteSnapshot

  • 执行语句:

hadoop fs -deleteSnapshot <snapshotDir> <snapshotName>

  • 功能描述:

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

  • 选项描述:

  • 样例演示:

  • 删除/hdfstest的快照s1

hadoop fs -deleteSnapshot /hdfstest s1

N7JryyM.png!mobile



13. renameSnapshot

  • 执行语句:

hadoop fs -renameSnapshot <snapshotDir> <oldName> <newName>

  • 功能描述:

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

  • 选项描述:

  • 样例演示:

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

hadoop fs -renameSnapshot /hdfstest s1 s_init

IFBVfiM.png!mobile



14. df

  • 执行语句:

hadoop fs -df [-h] <path>

  • 功能描述:

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

  • 选项描述:

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

  • 样例演示:

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

hadoop fs -df -h /hdfstest /hdfstest2

vYBnAvj.png!mobile

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

15. du

  • 执行语句:

hadoop fs -du [-s] [-h] [-v] [-x] <path>

  • 功能描述:

查看指定对象的存储情况

  • 选项描述:

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

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

-v :显示标题行

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

  • 样例演示:

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

hadoop fs -du -v /hdfstest/

qEZJF3q.png!mobile

hadoop fs -du -v -h /hdfstest/

AzAnyaQ.png!mobile

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

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

B3eYRfe.png!mobile



16. expunge

  • 执行语句:

hadoop fs –expunge

  • 功能描述:

清空回收站

  • 选项描述:

  • 样例演示:

  • 清空当前回收站

hadoop fs -expunge

i2AZfmE.png!mobile



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

yaauA3I.png!mobile

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

nQn6f2v.png!mobile

当使用通配符*按关键字搜索时,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

ZJvqEnI.png!mobile



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

viUnaeM.png!mobile

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

22IrIvY.png!mobile

由上述结果可知,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

UbQzUjj.png!mobile

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

hadoop fs -ls -t -r /hdfstest

3EBZbyI.png!mobile

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

hadoop fs -ls -u -h /hdfstest

MNF7Bny.png!mobile

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

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

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

zqeUruB.png!mobile

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

21. mkdir

  • 执行语句:

hadoop fs -mkdir [-p] <path>

  • 功能描述:

创建目录

  • 选项描述:

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

  • 样例演示:

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

hadoop fs -mkdir -p /hdfstest

VJbYVzz.png!mobile



22. moveFromLocal

  • 执行语句:

hadoop fs -moveFromLocal <localsrc> <dst>

  • 功能描述:

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

  • 选项描述:

  • 样例演示:

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

hadoop fs -moveFromLocal mv_test.txt /hdfstest

INbqYfQ.png!mobile



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

I3aeQbZ.png!mobile



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

FFjq2ym.png!mobile

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

muEF3eB.png!mobile

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

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

RfaQnm.png!mobile



27. rmdir

  • 执行语句:

hadoop fs -rmdir [--ignore-fail-on-non-empty] <dir>

  • 功能描述:

删除空目录

  • 选项描述:

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

  • 样例演示:

  • 删除/hdfstest2

hadoop fs -rmdir /hdfstest2

AzeUf2M.png!mobile

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

YvMfUb6.png!mobile

  • 删除/hdfstest2/rm_dir

hadoop fs -rmdir /hdfstest2/rm_dir

Bve6Zrj.png!mobile



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

QjuAJ3U.png!mobile

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

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

NzqIZvn.png!mobile

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

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

yaqmIj.png!mobile

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

yqi6f2.png!mobile

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

hadoop fs -setfacl -k /hdfstest

UVjMfym.png!mobile

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

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

A7BjAjA.png!mobile

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

36NRRfy.png!mobile

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

29. getfacl

  • 执行语句:

hadoop fs -getfacl [-R] <path>             

  • 功能描述:

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

  • 选项描述:

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

  • 样例演示:

  • 查询/hdfstest的ACL

hadoop fs -getfacl /hdfstest

3iA7Vn.png!mobile



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

N3Azqyf.png!mobile

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

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

Ujmyam3.png!mobile

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

ZVZbAfQ.png!mobile



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

I3yuuaJ.png!mobile

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

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

FjmQr2J.png!mobile

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

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

eAVB7zI.png!mobile



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

MreUNby.png!mobile



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

VFjM7ff.png!mobile



34. tail

  • 执行语句:

hadoop fs -tail [-f] <file>

  • 功能描述:

显示文件最后1kb的内容

  • 选项描述:

-f :持续输出文件内容

  • 样例演示:

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

hadoop fs -tail /hdfstest/test.txt

aIbANb6.png!mobile



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

y6bYZvi.png!mobile

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

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

z2YNJzN.png!mobile



36. text

  • 执行语句:

hadoop fs -text [-ignoreCrc] <src>

  • 功能描述:

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

  • 选项描述:

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

  • 样例演示:

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

hadoop fs -text /hdfstest/test.txt

YNVNBry.png!mobile

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

hadoop fs -text /hdfstest/test.zip

AB3y2aU.png!mobile



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

UBJv6fZ.png!mobile



38. touchz

  • 执行语句:

hadoop fs -touchz <path>

  • 功能描述:

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

  • 选项描述:

  • 样例演示:

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

hadoop fs -touchz /hdfstest/touchz_test.txt

VfymYrn.png!mobile



39. truncate

  • 执行语句:

hadoop fs -truncate [-w] <length> <path>

  • 功能描述:

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

  • 选项描述:

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

  • 样例演示:

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

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

uaA3myz.png!mobile



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK