用法:hdfs dfs | hadoop fs [COMMAND [COMMAND_OPTIONS]]
appendToFile
用法:hadoop fs -appendToFile <localsrc> ... <dst>
将本地文件系统中的单个 src 或多个 src 追加到目标文件系统。还从 stdin 读取输入并追加到目标文件系统。
例:
hadoop fs -appendToFile localfile /user/hadoop/hadoopfile
hadoop fs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfile
hadoop fs -appendToFile localfile hdfs://nn.example.com/hadoop/hadoopfile
hadoop fs -appendToFile - hdfs://nn.example.com/hadoop/hadoopfile
从 stdin 读取输入
cat
用法:hadoop fs -cat [-ignoreCrc] URI [URI ...]
将源文件复制到标准输出/目的文件。
选项:
-ignoreCrc
禁用检查结果验证
例:
hadoop fs -cat hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
hadoop fs -cat file:///file3 /user/hadoop/file4
checksum
用法:hadoop fs -checksum [-v] URI
返回文件的校验和信息。
选项:
-v
显示文件的块大小
例:
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 通过目录结构以递归方式进行更改。用户必须是文件的所有者,否则就是超级用户。
选项:
-R
将通过目录结构以递归方式进行更改
chown
用法:hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]
更改文件的所有者。用户必须是超级用户。
选项:
-R
将通过目录结构以递归方式进行更改
count
用法:hadoop fs -count [-q] [-h] [-v] [-x] [-t [<storage type>]] [-u] [-e] [-s] <paths>
计算与指定文件模式匹配的路径下的目录、文件和字节数。
选项:
-t
显示每种存储类型的配额和使用情况-h
以可读格式显示大小-v
显示标题行-x
从结果计算中排除快照-e
显示每个文件的纠删码策略-s
每个目录的快照计数
例:
hadoop fs -count hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
hadoop fs -count -q hdfs://nn1.example.com/file1
hadoop fs -count -q -h hdfs://nn1.example.com/file1
hadoop fs -count -q -h -v hdfs://nn1.example.com/file1
hadoop fs -count -u hdfs://nn1.example.com/file1
hadoop fs -count -u -h hdfs://nn1.example.com/file1
hadoop fs -count -u -h -v hdfs://nn1.example.com/file1
hadoop fs -count -e hdfs://nn1.example.com/file1
hadoop fs -count -s hdfs://nn1.example.com/file1
cp
用法:hadoop fs -cp [-f] [-p | -p[topax]] [-t <thread count>] [-q <thread pool queue size>] URI [URI ...] <dest>
将文件从源复制到目标。此命令还允许多个源,在这种情况下,目标必须是目录。
选项:
-f
如果目标已存在,则覆盖它-d
跳过创建后缀为._COPYING_
的临时文件-p
保留文件属性 [topx](时间戳、所有权、权限、ACL、XAttr)。如果指定了不带 arg 的 -p,则保留时间戳、所有权和权限。如果指定了 -pa,则保留权限,因为 ACL 是权限的超集-t <线程计数>
要使用的线程数,默认值为 1。在复制包含 1 个以上文件的目录时很有用-q <线程池队列大小>
要使用的线程池队列大小,默认值为 1024。仅当线程计数大于 1 时,它才会生效
例:
hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2
hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir
hadoop fs -cp -t 5 /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir
hadoop fs -cp -t 10 -q 2048 /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir
df
用法:hadoop fs -df [-h] URI [URI ...]
显示可用空间。
选项:
-h
以可读格式显示大小
例:
hadoop dfs -df /user/hadoop/dir1
du
用法:hadoop fs -du [-s] [-h] [-v] [-x] URI [URI ...]
显示给定目录中包含的文件和目录的大小,或者如果它只是一个文件,则显示文件的长度。
返回以下三列信息:
size disk_space_consumed_with_all_replicas full_path_name
选项:
-s
显示文件长度的聚合摘要,而不是单个文件-h
以可读格式显示大小-v
选项将列名显示为标题行-x
选项将从结果计算中排除快照。如果没有 -x 选项(默认值),则始终从所有 INode(包括给定路径下的所有快照)计算结果
例:
hadoop fs -du /user/hadoop/dir1 /user/hadoop/file1 hdfs://nn.example.com/user/hadoop/dir1
expunge
用法:hadoop fs -expunge [-immediate] [-fs <path>]
从回收站目录中永久删除早于保留阈值的检查点中的文件,并创建新的检查点。
创建检查点时,回收站中最近删除的文件将移动到检查点下。早于 fs.trash.interval
的检查点中的文件将在下次调用 -expunge
命令时被永久删除。
如果文件系统支持该功能,则用户可以配置为通过存储为 fs.trash.checkpoint.interval
的参数(在核心站点中.xml)定期创建和删除检查点。此值应小于或等于 fs.trash.interval
。
选项:
--immediate
立即删除当前用户的回收站中的所有文件,忽略fs.trash.interval
设置-fs
清除指定的文件系统,而不是创建缺省文件系统和检查点
例:
hadoop fs -expunge --immediate -fs s3a://landsat-pds/
find
用法:hadoop fs -find <path> ... <expression> ...
查找与指定表达式匹配的所有文件,并将所选操作应用于这些文件。如果未指定路径,则默认为当前工作目录。如果未指定表达式,则默认为 -print。
选项:
-name
查找指定名称文件-iname
查找指定名称文件,不区分大小写
例:
hadoop fs -find / -name test -print
get / copyToLocal
用法:hadoop fs -get [-ignorecrc][-crc] [-p][-f] [-t <thread count>][-q ] <src> ... <localdst>
将文件复制到本地文件系统。
选项:
-p
保留访问和修改时间,所有权和权限(假设权限可以跨文件系统传播)-f
如果目标已存在,则覆盖它-ignorecrc
跳过对已下载文件的CRC检查-crc
为下载的文件写入CRC校验和-t <线程计数>
要使用的线程数,默认值为 1。下载包含 1 个以上文件的目录时很有用-q <线程池队列大小>
要使用的线程池队列大小,默认值为 1024。仅当线程计数大于 1 时,它才会生效
例:
hadoop fs -get /user/hadoop/file localfile
hadoop fs -get hdfs://nn.example.com/user/hadoop/file localfile
hadoop fs -get -t 10 hdfs://nn.example.com/user/hadoop/dir1 localdir
hadoop fs -get -t 10 -q 2048 hdfs://nn.example.com/user/hadoop/dir* localdir
getfacl
用法:hadoop fs -getfacl [-R] <path>
显示文件和目录的访问控制列表 (ACL)。
选项:
-R
以递归方式列出所有文件和目录的 ACL
例:
hadoop fs -getfacl /file
hadoop fs -getfacl -R /dir
getfattr
用法:hadoop fs -getfattr [-R] -n name | -d [-e en] <path>
显示文件或目录的扩展属性名称和值(如果有)。
选项:
-R
以递归方式列出所有文件和目录的属性-n name
转储命名的扩展属性值-d
转储与路径名关联的所有扩展属性值-e encoding
检索值后对其进行编码。有效的编码是 “text”, “hex”, 和 “base64”
例:
hadoop fs -getfattr -d /file
hadoop fs -getfattr -R -n user.myAttr /dir
getmerge
用法:hadoop fs -getmerge [-nl] <src> <localdst>
将源目录或多个源文件写入到本地目标文件。
选项:
-nl
允许在每个文件的末尾添加换行符-skip-empty-file
可用于在出现空文件时避免不需要的换行符
例:
hadoop fs -getmerge -nl /src /opt/output.txt
hadoop fs -getmerge -nl /src/file1.txt /src/file2.txt /output.txt
head
用法:hadoop fs -head URI
显示文件的前一千字节。
例:
hadoop fs -head pathname
help
用法:hadoop fs -help
显示帮助。
ls
用法:hadoop fs -ls [-C][-d] [-h][-q] [-R][-t] [-S][-r] [-u][-e] <args>
(list) 显示信息。
选项:
-C
仅显示文件和目录的路径-d
目录作为普通文件列出-h
以可读格式显示文件大小-q
打印 ?而不是不可打印的字符-R
递归列出遇到的子目录-t
按修改时间对输出进行排序(最近的时间在前)-S
按文件大小对输出进行排序-r
反转排序顺序-u
使用访问时间而不是修改时间进行显示和排序-e
仅显示文件和目录的纠删码策略
mkdir
用法:hadoop fs -mkdir [-p] <paths>
创建目录。
选项:
-p
沿路径创建父目录。
例:
hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
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 / copyFromLocal
用法:hadoop fs -put [-f][-p] [-l][-d] [-t <thread count>][-q ] [ - | <localsrc> ...] <dst>
将单个或多个源文件从本地文件系统复制到目标文件系统(HDFS)。
选项:
-p
保留访问和修改时间,所有权和权限-f
如果目标已存在,则覆盖它-l
允许 DataNode 将文件懒惰地保存到磁盘,强制复制因子为 1(此标志将导致持久性降低)-d
跳过创建后缀为._COPYING_
的临时文件-t <线程计数>
要使用的线程数,默认值为 1-q <线程池队列大小>
要使用的线程池队列大小,默认值为 1024
例:
hadoop fs -put localfile /user/hadoop/hadoopfile
hadoop fs -put -f localfile1 localfile2 /user/hadoop/hadoopdir
hadoop fs -put -d localfile hdfs://nn.example.com/hadoop/hadoopfile
hadoop fs -put - hdfs://nn.example.com/hadoop/hadoopfile
从 stdin 读取输入hadoop fs -put -t 5 localdir hdfs://nn.example.com/hadoop/hadoopdir
hadoop fs -put -t 10 -q 2048 localdir1 localdir2 hdfs://nn.example.com/hadoop/hadoopdir
rm
用法:hadoop fs -rm [-f][-r |-R] [-skipTrash][-safely] URI [URI ...]
删除指定文件/目录。如果启用了垃圾桶,则文件系统会将已删除的文件移动到垃圾箱目录。目前,默认情况下,垃圾桶功能处于禁用状态。用户可以通过为参数 fs.trash.interval
设置大于零的值来启用垃圾桶(core-site.xml)。
选项:
-f
如果文件不存在,-f 选项将不显示诊断消息或修改退出状态以反映错误-R | -r
以递归方式删除目录及其下的任何内容-skipTrash
跳过垃圾箱(如果启用),并立即删除指定的文件-safely
选项在删除文件总数大于hadoop.shell.delete.limit.num.files
的目录之前需要安全确认(在 core-site.xml中,默认值:100)
rmdir
用法:hadoop fs -rmdir [--ignore-fail-on-non-empty] URI [URI ...]
删除指定空目录。
选项:
--ignore-fail-on-non-empty
:如果目录仍包含文件,则不会失败
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 或 0S 开头,则将其作为 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
等待复制完成
例:
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
将随着文件的增长输出追加的数据(动态显示)
test
用法:hadoop fs -test -[defswrz] URI
判断一些信息。
选项:
-d
如果路径是目录,则返回 0-e
如果路径存在,则返回 0-f
如果路径是文件,则返回 0-s
如果路径不为空,则返回 0-w
如果路径存在并授予写入权限,则返回 0-r
如果路径存在并授予了读取权限,则返回 0-z
如果文件长度为零,则返回 0
例:
hadoop fs -test -e filename
text
用法:hadoop fs -text <src>
获取源文件并以文本格式输出该文件。允许的格式是 zip 和 TextRecordInputStream。
touch
用法:hadoop fs -touch [-a][-m] [-t TIMESTAMP][-c] URI [URI ...]
将 URI 指定的文件的访问和修改时间更新为当前时间。如果该文件不存在,则会在 URI 处创建一个空文件,并将当前时间作为该 URI 的时间戳。
选项:
-a
仅更改访问时间-m
仅更改修改时间-t
指定时间戳(格式为 yyyyMMdd:HHmmss)而不是当前时间-c
如果文件不存在,则不创建文件
例:
hadoop fs -touch pathname
hadoop fs -touch -m -t 20180809:230000 pathname
hadoop fs -touch -t 20180809:230000 pathname
hadoop fs -touch -a pathname
touchz
用法:hadoop fs -touchz URI [URI ...]
创建长度为零的文件。如果存在长度不为零的该文件,则返回错误。
truncate
用法:hadoop fs -truncate [-w] <length> <paths>
将指定文件模式匹配的所有文件截断为指定长度。
选项:
-w
请求命令等待块恢复完成
例:
hadoop fs -truncate 55 /user/hadoop/file1 /user/hadoop/file2
hadoop fs -truncate -w 127 hdfs://nn1.example.com/user/hadoop/file1
concat
用法:hadoop fs -concat <target file> <source files>
将现有(多个)源文件连接到目标文件中。目标文件和源文件应位于同一目录中。
例:
hadoop fs -concat hdfs://cluster/user/hadoop/target-file hdfs://cluster/user/hadoop/file-0 hdfs://cluster/user/hadoop/file-1
usage
用法:hadoop fs -usage command
返回单个指定命令的帮助信息。