HDFS Shell指南

目录

 

前言

appendToFile

cat

checksum

chgrp

chmod

chown

copyFromLocal

copyToLocal

count

cp

Snapshot

df

 

du

dus

expunge

find

get

getfacl

getfattr

getmerge

head

help

ls

lsr

mkdir

moveFromLocal

moveToLocal

mv

put

rm

rmdir

rmr

setfacl

setfattr

setrep

stat

tail

test

text

touch

touchz

truncate

usage


前言

文件系统的shell包含了各种各样的类linux shell的命令,用户可借助这些命令直接与HDFS或Hadoop支持的其它文件系统进行交互(比如本地文件系统, WebHDFS, S3 FS等等)。

调用FS shell的命令为:

bin/hadoop fs <args>

所有的文件系统shell命令都以路径URI为参数,URI格式:scheme://authority/path。比如对于HDFS来说,这里的scheme即为hdfs,对于本地文件系统,sheme就是file。scheme和authority是可选的,不指定时,默认使用配置文件中配置的scheme。比如:一个HDFS文件路径或者目录/parent/child也可以写成hdfs://namenodehost/parent/child。

文件系统shell的大多数命令跟类Unix系统的shell命令相似。每个命令都有不同之处。错误信息和输出均被发送到标准输出端。

如果HDFS能够正常使用,hadoop fs 命令与hdfs dfs是等价的。

也可以使用相对路径。对HDFS而言,当前工作路径指定的是HDFS的主目录(/user/username),这个目录通常会被自动创建。HDFS主目录也可以被隐式访问。比如HDFS的垃圾目录,一般即为.Trash。

appendToFile

用法:

hadoop fs -appendToFile <localsrc> ... <dst>

将本地单个或多个文件追加到HDFS,同时在标准输出中打印这几个文件的内容

返回值为0表示成功,1表示失败。

cat

用法:

hadoop fs -cat [-ignoreCrc] URI [URI ...]

在标准输出端打印文件内容

可用-ignorecrc选项复制CRC校验失败的文件:使用-CRC选项复制文件以及CRC信息。

例:

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

返回值为0表示成功,1表示失败。

checksum

用法:

hadoop fs -checksum URI

返回文件的校验信息。

例:

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

chgrp

用法:

hadoop fs -chgrp [-R] GROUP URI [URI ...]

修改文件或目录的所属组别,操作用户必须是该资源的拥有者,或者超级用户。

-R: 递归操作

chmod

用法:

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

修改资源权限,-R完成递归操作。用户必须是资源的拥有者,或者超级用户。

chown

用法:

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

修改资源拥有者。操作者必须是超级用户。-R完成递归操作

copyFromLocal

用法:

hadoop fs -copyFromLocal <localsrc> URI

作用类似于put命令, 但这里的源被限制为本地文件引用(put的源可以是标准输出)。

可选参数:

  • -p : 保留访问和修改时间、所有权和权限。(权限可跨文件系统时)
  • -f : 目标文件已存在时,覆盖写入。
  • -l : 允许DataNode惰性地将文件持久化到磁盘,强制复制因子为1。这将导致持久性下降。谨慎使用。
  • -d : 跳过以. _COPYING_为后缀的临时文件的创建过程。

copyToLocal

用法:

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

作用类似于get命令,但这里的目的文件被限制为本地文件引用(get的目的文件可以是标准输出)。

count

用法:

hadoop fs -count [-q] [-h] [-v] [-x] [-t [<storage type>]] [-u] [-e] <paths>

获取与指定模式匹配的路径的目录个数、文件个数、字节数。获取配额和使用情况。输出栏包括的信息依次为:目录个数、文件个数、所占字节数以及路径名称

可选参数:

  • -q 显示配额(QUOTA, REMAINING_QUOTA, SPACE_QUOTA, REMAINING_SPACE_QUOTA, DIR_COUNT, FILE_COUNT, CONTENT_SIZE, PATHNAME)
  • -u 限制只显示配额和使用情况(QUOTA, REMAINING_QUOTA, SPACE_QUOTA, REMAINING_SPACE_QUOTA, PATHNAME)
  • -t 显示每种存储类型的配额和使用情况。如果没有给出-u或-q选项,则忽略-t选项。可以在-t选项中使用的可选参数的列表:"", "all", "ram_disk", "ssd", "disk", "archieve"。
  • -h 以人类可读的形式显示字节大小
  • -v 显示头行
  • -x 从结果计算中排除快照。没有-x选项时,结果通常是由所有节点进行计算。如果使用了-u或者-q,则-x会被忽略。
  • -e 显示每个文件的擦除编码策略。DIR_COUNT, FILE_COUNT, CONTENT_SIZE, ERASURECODING_POLICY, PATHNAME

cp

用法:

hadoop fs -cp [-f] [-p | -p[topax]] URI [URI ...] <dest>

将文件从源端复制到目标文件夹,支持一次性复制多个文件,目标文件夹必须是一个目录

Snapshot

本部分内容篇幅较大,迁移到专门的博文

df

hadoop fs -df [-h] URI [URI ...]

显示空闲空间。

可选参数:

  • -h 将文件尺寸以可读的形式展示出来(例如:显示64.0m而不是67108864)

例:

hadoop fs -df /user/hadoop/dir1

 

du

用法:

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

显示给定目录中包含的文件和目录的大小或文件的长度(如果它只是一个文件)。

可选参数

  • -s 将显示文件长度的汇总,而不是单个文件。如果没有-s选项,计算是通过从给定路径深入1级来完成的。
  • -h 将文件尺寸以可读的形式展示出来(例如:显示64.0m而不是67108864)
  • -v 在首行显示列名
  • -x 从结果计算中排除快照。没有-x选项时,结果通常是由所有节点进行计算。

du命令将以如下形式返回三列信息:

size disk_space_consumed_with_all_replicas full_path_name

例:

hadoop fs -du /user/hadoop/dir1 /user/hadoop/file1 hdfs://nn.example.com/user/hadoop/dir1

成功时返回1,失败时返回-1

dus

hadoop fs -dus <args>

粗略的显示文件大小。

不建议使用此命令。而是使用hadoop fs -du -s。

expunge

hadoop fs -expunge [-immediate]

从垃圾目录中永久删除比保留阈值早的检查点中的文件,并创建新的检查点。

当创建检查点时,最近删除的垃圾文件将在检查点下移动。在下次调用-expunge命令时,fs. waste .interval之前的检查点中的文件将被永久删除。

如果文件系统支持该特性,用户可以配置为通过存储为fs.trash.checkpoint.interval(在core-site.xml中)的参数定期创建和删除检查点。这个值应该小于或等于fs.trash.interval。

如果传递了-immediate选项,那么当前用户在trash中的所有文件将立即被删除,忽略fs.trash.interval设置。

find

hadoop fs -find <path> ... <expression> ...

查找与指定表达式匹配的所有文件,并对其应用选定的操作。如果没有指定路径,则默认为当前工作目录。如果没有指定表达式,则默认为-print。

get

hadoop fs -get [-ignorecrc] [-crc] [-p] [-f] <src> <localdst>

将文件拷贝到本地文件系统。CRC较验失败的文件可以加上-ignorecrc参数,使用-crc参数时,文件和CRC均会被复制

可选参数:

  • -p : 保留访问和修改时间、所有权和权限。(权限可跨文件系统时)
  • -f : 如果目标已经存在,则重写它。
  • -ignorecrc : 跳过对下载的文件的CRC检查。
  • -crc : CRC较验和较验文件下载

getfacl

用法:

hadoop fs -getfacl [-R] <path>

显示文件和目录的ACL(Access Control Lists),如果目录拥有默认的ACL,此命令也将显示默认的ACL

可选参数:

  • -R : 递归显示指定路径下的目录和文件的ACL
  • path : 需列出信息的文件或目录

getfattr

用法:

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

显示文件或目录的扩展属性名称和值(如果有的话)。

可选参数:

  • -R : 递归
  • -n name : 转储命名扩展属性值。
  • -d : 转储与路径名关联的所有扩展属性值。
  • -e encoding : 在检索后对值进行编码。有效的编码是“text”、“hex”和“base64”。用文本字符串编码的值用双引号(")括起来,用十六进制和base64编码的值分别用0x和0作为前缀。
  • path : 路径,文件或目录

例:

hadoop fs -getfattr -d /file
hadoop fs -getfattr -R -n user.myAttr /dir

getmerge

用法:

hadoop fs -getmerge [-nl] <src> <localdst>

接收一个源目录(或多个源文件)和一个本地的目标文件,合并源目录的多个文件并输出到目标文件

设置-nl 参数可允许在每个文件的最后一行加一个新行符(LF)。-skip-empty-file 可避免合并空文件时产生的无用新行。

例:

hadoop fs -getmerge -nl /src /opt/output.txt
hadoop fs -getmerge -nl /src/file1.txt /src/file2.txt /output.txt

用法:

hadoop fs -head pathname

将文件的前几行显示到标准输出

help

用法:

hadoop fs -help

打印显示hadoop fs的用法

ls

用法:

fs -ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] <args>
  • -C: 只显示文件和目录的路径。
  • -d: 目录作为普通文件列出。
  • -h: 用人类可读的方式格式化文件大小(例如64.0m而不是67108864)。
  • -q: 用?替代不可打印的字符。
  • -R: 递归列出子目录。
  • -t: 根据修改时间(最近的第一个)排序
  • -S: 按文件大小排序输出。
  • -r: 反转排序顺序。
  • -u: 使用访问时间而不是修改时间来显示和排序。
  • -e: 只显示文件和目录的删除编码策略。

lsr

用法:

hadoop fs -lsr <args>

ls的递归版本。

不推荐使用lsr,而是使用 hadoop fs -ls -R。

mkdir

用法:

hadoop fs -mkdir [-p] <paths>

创建目录

可选参数:

  • -p 与Unix一样,沿着路径创建父目录。

例:

hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
hadoop fs -mkdir hdfs://nn1.example.com/user/hadoop/dir hdfs://nn2.example.com/user/hadoop/dir

moveFromLocal

用法:

hadoop fs -moveFromLocal <localsrc> <dst>

与put命令类似,但此命令会删除被移动后的资源。

moveToLocal

用法:

hadoop fs -moveToLocal [-crc] <src> <dst>

与get命令类似,但此命令会删除被移动后的资源。

mv

用法:

hadoop fs -mv URI [URI ...] <dest>

将源文件移动到目标文件夹,可一次移动多个文件,目标文件夹必须是一个目录,不允许跨文件系统移动文件。

例:

hadoop fs -mv /user/hadoop/file1 /user/hadoop/file2
hadoop fs -mv hdfs://nn.example.com/file1 hdfs://nn.example.com/file2 hdfs://nn.example.com/file3 hdfs://nn.example.com/dir1

put

用法:

hadoop fs -put [-f] [-p] [-l] [-d] [ - | <localsrc1> .. ]. <dst>

从本地文件系统复制单个资源或多个资源到目标文件系统,如果将源设置为"-",则可进行标准输出,写入到目标文件系统。

可选参数:

  • -p : 保留访问和修改时间、所有权和权限。(权限可跨文件系统时)。
  • -f : 如果目标文件已存在,则覆盖目标文件。
  • -l : 允许DataNode惰性地将文件持久化到磁盘,强制复制因子为1。这将导致持久性下降。谨慎使用。
  • -d : 跳过以. _COPYING_为后缀的临时文件的创建过程。

rm

用法:

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

删除指定文件。

如果启用了trash,文件系统则会在执行此命令时将指定文件移动到垃圾存放目录

当前版本的hadoop(3.2.1)trash默认是关闭的,用户可在core-site.xml中设置fs.trash.interval值大于零,即可开启trash。

可选参数:

  • -f:  文件不存在时,不显示诊断信息或修改反映错误的退出状态
  • -R: 递归地删除目录及其下的所有内容。
  • -r: 与-R相同
  • -skipTrash: 将绕过trash(如果启用),并立即删除指定的文件。这在需要从超配额目录中删除文件时非常有用。
  • -safely: 在删除文件总数大于hadoop.shell.delete.limit. number .files(在core-site.xml中)的目录之前需要进行安全确认。xml,默认值:100)。它可以与-skipTrash一起使用,以防止大目录的意外删除。当递归地遍历大目录以计算在确认之前要删除的文件数量时,预期会出现延迟。

rmdir

用法:

hadoop fs -rmdir [--ignore-fail-on-non-empty] URI [URI ...]

删除一个目录

可选参数:

  • --ignore-fail-on-non-empty: 当使用通配符时,目录中仍然包含文件的情况下不会失败。

rmr

用法:

hadoop fs -rmr [-skipTrash] URI [URI ...]

递归版本的rm命令,不推荐使用。

推荐使用hadoop fs -rm -r。

setfacl

用法:

hadoop fs -setfacl [-R] [-b |-k -m |-x <acl_spec> <path>] |[--set <acl_spec> <path>]

设置文件和目录的访问控制列表(acl)。

  • -b: 删除基本ACL条目以外的所有条目。为了与权限位兼容,保留了用户、组和其他人的条目。
  • -k: 删除默认的ACL。
  • -R: 递归地对所有文件和目录应用操作。
  • -m: 修改ACL。新条目被添加到ACL中,现有条目被保留。
  • -x: 删除指定的ACL条目。保留其他ACL条目。
  • --set: 完全替换ACL,丢弃全部现有条目。acl_spec必须包含针对用户、组和其他用户的条目,以便与权限兼容。如果ACL规范只包含访问项,则保留现有的默认项。如果ACL规范只包含默认条目,则保留现有的访问条目。如果ACL规范同时包含访问和默认条目,则两者都将被替换。
  • acl_spec: ACL条目的逗号分隔列表。
  • path: 要修改的文件或目录。

例:

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

setfattr

用法:

hadoop fs -setfattr -n name [-v value] | -x name <path>

为文件或目录设置扩展属性名称和值。

可选参数:

  • -n name: 扩展属性名。
  • -v value: 扩展属性值。有三种不同的值编码方法。如果参数用双引号括起来,那么值就是引号内的字符串。如果参数以0x或0x为前缀,则将其视为十六进制数。如果参数以0或0开头,那么它被认为是base64编码。
  • -x name: 删除扩展属性。
  • path: 文件或目录。

例:

hadoop fs -setfattr -n user.myAttr -v myValue /file
hadoop fs -setfattr -n user.noValue /file
hadoop fs -setfattr -x user.myAttr /file

setrep

用法:

hadoop fs -setrep [-R] [-w] <numReplicas> <path>

更改文件的复制因子。如果path是一个目录,则该命令递归地更改以path为根的目录树下所有文件的复制因子。当执行此命令时,EC文件将被忽略。

可选参数:

  • -w: 要求命令等待复制完成。这可能需要很长时间。
  • -R: 为了向后兼容。没有实际效果。

例:

hadoop fs -setrep -w 3 /user/hadoop/dir1

stat

用法:

hadoop fs -stat [format] <path> ...

以指定的格式打印<路径>的文件/目录的信息。接受八进制(%a)和符号(%A),以字节(%b)进行文件化,类型(%F),所有者的组名(%g),名称(%n),块大小(%o),是否复制(%r),所有者的用户名(%u),访问日期(%x, %x),修改日期(%y, %y)。%x和%y显示UTC日期为“yyyy-MM-dd HH:mm:ss”,%x和%y显示从1970年1月1日UTC开始的毫秒。如果未指定格式,则默认使用%y。

例:

hadoop fs -stat "type:%F perm:%a %u:%g size:%b mtime:%y atime:%x name:%n" /file

tail

用法:

hadoop fs -tail [-f] URI

可选参数:

  • -f 随着文件的增长输出追加的数据。(跟Unix里面的命令一样)

test

用法:

hadoop fs -test -[defswrz] URI

可选参数

  • -d: 如果路径是一个目录,返回0。
  • -e: 如果路径存在,返回0。
  • -f: 如果路径是文件,返回0。
  • -s: 如果路径不为空,返回0。
  • -w: 如果路径存在并且授予了写权限,则返回0。
  • -r: 如果路径存在并且授予了读权限,则返回0。
  • -z: 如果文件大小为零,则返回0。

text

用法:

hadoop fs -text <src>

获取一个源文件并以文本格式输出该文件。允许的格式为:zip, TextRecordInputStream。

touch

用法:

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

将URI指定的文件的访问和修改时间更新为当前时间。如果该文件不存在,则在URI上创建一个空文件,并将当前时间作为该URI的时间戳。

可选参数:

  • -a: 只更改访问时间
  • -m: 只更改修改时间
  • -t: 指定时间戳(格式为yyyyMMddHHmmss)
  • -c: 如果文件不存在,使用此选项将不创建文件

touchz

用法:

hadoop fs -touchz URI [URI ...]

创建一个空文件。如果文件非空,则返回错误。

也就是说,如果存在一个非空的同名文件,则执行此命令时,将返回错误。

truncate

用法:

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

将与指定文件模式匹配的所有文件截断为指定长度。

可选参数:

  • -w : 请求命令等待块恢复完成(如果需要的话)。如果没有-w标志,文件可能会在恢复过程中保持一段时间未关闭。在此期间,文件无法重新打开以进行追加。

例:

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

usage

hadoop fs -usage command

返回单个命令的帮助。

对象存储部分将另写博文介绍。

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值