Apache Hadoop 2.7.3 Shell 命令操作指南大全

目录

Overview

appendToFile

cat

checksum

chgrp

chmod

chown

copyFromLocal

copyToLocal

count

cp

createSnapshot

deleteSnapshot

df

du

dus

expunge

find

get

getfacl

getfattr

getmerge

help

ls

lsr

mkdir

moveFromLocal

moveToLocal

mv

put

renameSnapshot

rm

rmdir

rmr

setfacl

setfattr

setrep

stat

tail

text

text

touchz

truncate

usage


Overview

文件系统(FS)Shell 包括各种类似于Shell 的命令,这些命令可直接与Hadoop分布式文件系统(HDFS)以及Hadoop支持的其他文件系统(例如本地FS,HFTP FS,S3 FS等)进行交互。 FS Shell通过以下方式调用:

bin/hadoop fs <args>

所有的FS Shell命令都将路径URI作为参数。URI格式为 scheme://authority/path 。对于HDFS,方案为hdfs,对于本地FS,方案为file。方案和权限是可选的。如果未指定,则使用配置中指定的默认方案。可以将HDFS文件或目录 /parent/child 指定为 hdfs://namenodehost/parent/child 或简单地指定为 /parent/child(鉴于您的配置设置为指向 hdfs://namenodehost)。

FS Shell中的大多数命令的行为类似于相应的Unix命令。每个命令都描述了差异。错误信息将发送到stderr,输出将发送到stdout。

如果使用HDFS,则hdfs dfs是同义词。

有关通用shell程序选项,请参见《命令手册》。

appendToFile

用法:hadoop fs -appendToFile <localsrc> ... <dst>

从本地文件系统附加一个或多个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 Reads the input from stdin.

退出代码:执行成功返回0,失败返回1。

cat

用法:hadoop fs -cat URI [URI ...]

将源路径复制到标准输出。

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

Exit Code:

成功返回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,通过目录结构递归进行更改。用户必须是文件的所有者,或者是超级用户。其他信息在“ 权限指南”中

选项

  • -R选项将通过目录结构递归进行更改。

chown

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

更改文件的所有者。该用户必须是超级用户。其他信息在“ 权限指南”中

选项

  • -R选项将通过目录结构递归进行更改。

copyFromLocal

用法:hadoop fs -copyFromLocal <localsrc> URI

与put命令类似,不同之处在于源仅限于本地文件引用。

选项:

  • 如果目标已经存在,则 -f 选项将覆盖该目标。

copyToLocal

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

与get命令类似,除了目标仅限于本地文件引用。

count

用法:hadoop fs -count [-q] [-h] [-v] <路径>

计算与指定文件模式匹配的路径下的目录,文件和字节数。具有-count的输出列是:DIR_COUNT,FILE_COUNT,CONTENT_SIZE,PATHNAME

具有-count -q的输出列是:QUOTA,REMAINING_QUATA,SPACE_QUOTA,REMAINING_SPACE_QUOTA,DIR_COUNT,FILE_COUNT,CONTENT_SIZE,PATHNAME

选项:

-h 选项以人类可读的格式显示大小。

-v 选项显示标题行。

例:

  • 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
  • hdfs dfs -count -q -h -v hdfs://nn1.example.com/file1

Exit Code:

成功返回0,错误返回-1。

cp

用法:hadoop fs -cp [-f] [-p | -p [topax]] URI [URI ...] <目标>

将文件从源复制到目标。此命令也允许多个源,在这种情况下,目标必须是目录。

如果(1)源文件系统和目标文件系统支持它们(仅HDFS),并且(2)所有源文件路径和目标路径名都在/.reserved/raw层次结构中,则保留 raw.* 名称空间扩展属性。确定是否保留 raw.* 名称空间xattrs与-p(保留)标志无关。

选项:

  • 如果目标已经存在,则-f选项将覆盖该目标。
  • -p选项将保留文件属性[topx](时间戳,所有权,权限,ACL,XAttr)。如果-p不带arg,则保留时间戳,所有权,权限。如果指定了-pa,则还将保留权限,因为ACL是权限的超集。确定是否保留原始名称空间扩展属性与-p标志无关。

例:

  • hadoop fs -cp /user/hadoop/file1 /user/ hadoop/file2
  • hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir

退出代码:

成功返回0,错误返回-1。

createSnapshot

请参阅《HDFS快照指南》

deleteSnapshot

请参阅《HDFS快照指南》

df

用法:hadoop fs -df [-h] URI [URI ...]

显示可用空间。

选项:

  • -h 将以“人类可读”的方式格式化文件大小(例如64.0m而不是67108864)

例:

  • hadoop dfs -df /user/hadoop/dir1

du

用法:hadoop fs -du [-s] [-h] URI [URI ...]

显示给定目录中包含的文件和目录的大小,或仅在文件的情况下显示文件的长度。

选项:

  • -s 选项将导致显示文件长度的汇总摘要,而不是单个文件的摘要。
  • -h 选项将以“人类可读”的方式格式化文件大小(例如64.0m而不是67108864)

例:

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

退出代码:成功返回0,错误返回-1。

dus

用法:hadoop fs -dus <args>

显示文件长度的摘要。

注意:不推荐使用此命令。而是使用hadoop fs -du -s。

expunge

用法:hadoop fs -expunge

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

创建检查点时,垃圾桶中最近删除的文件将移动到检查点下。下次调用-expunge命令时,检查点中早于fs.trash.checkpoint.interval的文件将被永久删除。

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

有关HDFS垃圾功能的更多信息,请参阅HDFS体系结构指南

find

用法:hadoop fs -find <路径> ... <表达式> ...

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

可以识别以下主要表达式:

  • -name pattern
    -iname pattern

    如果文件的基本名称使用标准文件系统全局匹配模式,则评估为true。如果使用-iname,则匹配不区分大小写。

  • -print 
    -print0Always

    评估为true。使当前路径名写入标准输出。如果使用-print0表达式,则将附加ASCII NULL字符。

可以识别以下运算符:

  • expression -a expression 
    expression-and expression 
    expression expression

    用于连接两个表达式的逻辑AND运算符。如果两个子表达式都返回true,则返回true。由两个表达式的并置暗示,因此不需要明确指定。如果第一个表达式失败,则第二个表达式将不适用。

例:

hadoop fs -find / -name test -print

Exit Code:

成功返回0,错误返回-1。

get

用法:hadoop fs -get [-ignorecrc] [-crc] <src> <localdst>

将文件复制到本地文件系统。未通过CRC检查的文件可以使用-ignorecrc选项进行复制。可以使用-crc选项复制文件和CRC。

例:

  • hadoop fs -get /user/hadoop/file localfile
  • hadoop fs -get hdfs://nn.example.com/user/hadoop/file localfile

Exit Code:

成功返回0,错误返回-1。

getfacl

用法:hadoop fs -getfacl [-R] <路径>

显示文件和目录的访问控制列表(ACL)。如果目录具有默认ACL,则getfacl还将显示默认ACL。

选项:

  • -R:递归列出所有文件和目录的ACL。
  • path:要列出的文件或目录。

例子:

  • hadoop fs -getfacl /文件
  • hadoop fs -getfacl -R /目录

Exit Code:

成功返回0,错误返回非零。

getfattr

用法:hadoop fs -getfattr [-R] -n名称| -d [-e en] <路径>

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

选项:

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

例子:

  • hadoop fs -getfattr -d /文件
  • hadoop fs -getfattr -R -n user.myAttr /目录

退出代码:

成功返回0,错误返回非零。

getmerge

用法:hadoop fs -getmerge [-nl] <src> <localdst>

将源目录和目标文件作为输入,并将src中的文件串联到目标本地文件中。可以选择将-nl设置为允许在每个文件的末尾添加换行符(LF)。

例子:

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

退出代码:

成功返回0,错误返回非零。

help

用法:hadoop fs -help

返回用法输出。

ls

用法:hadoop fs -ls [-d] [-h] [-R] <args>

选项:

  • -d:目录被列为纯文件。
  • -h:以人类可读的格式设置文件大小(例如64.0m而不是67108864)。
  • -R:递归列出遇到的子目录。

对于文件ls以以下格式返回文件的状态:

权限 number_of_replicas userid groupid 文件大小 修改日期 修改时间 文件名

对于目录,它返回其直接子级列表,如Unix中一样。目录列出为:

权限 userid groupid 修改日期 修改时间 目录名

默认情况下,目录中的文件按文件名排序。

例:

  • hadoop fs -ls /user/hadoop/file1

退出代码:

成功返回0,错误返回-1。

lsr

用法:hadoop fs -lsr <args>

ls的递归版本。

注意:不推荐使用此命令。而是使用hadoop fs -ls -R

mkdir

用法:hadoop fs -mkdir [-p] <路径>

将路径uri作为参数并创建目录。

选项:

  • -p选项的行为与Unix mkdir -p非常相似,它会沿着路径创建父目录。

例:

  • 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

退出代码:

成功返回0,错误返回-1。

moveFromLocal

用法:hadoop fs -moveFromLocal <localsrc> <dst>

与put命令类似,不同之处在于复制后将源文件删除。

moveToLocal

用法:hadoop fs -moveToLocal [-crc] <src> <dst>

显示“尚未执行”消息。

mv

用法:hadoop fs -mv URI [URI ...] <目标>

将文件从源移动到目标。此命令还允许多个源,在这种情况下,目标位置必须是目录。不允许跨文件系统移动文件。

例:

  • 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

退出代码:

成功返回0,错误返回-1。

put

用法:hadoop fs -put <localsrc> ... <dst>

将单个src或多个src从本地文件系统复制到目标文件系统。还从stdin读取输入并写入目标文件系统。

  • hadoop fs -put localfile /user/hadoop/hadoopfile
  • hadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdir
  • hadoop fs -put localfile hdfs://nn.example.com/hadoop/hadoopfile
  • hadoop fs -put - hdfs://nn.example.com/hadoop/hadoopfile Reads the input from stdin.

退出代码:

成功返回0,错误返回-1。

renameSnapshot

请参阅《HDFS快照指南》

rm

用法:hadoop fs -rm [-f] [-r | -R] [-skipTrash] URI [URI ...]

删除指定为args的文件。

如果启用了垃圾桶(trash类似window系统的回收站),则文件系统会将已删除的文件移动到垃圾桶目录(由FileSystem#getTrashRoot提供)。

当前,默认情况下禁用垃圾桶功能。用户可以通过为参数fs.trash.interval(在core-site.xml中)设置一个大于零的值来启用垃圾箱。

有关删除垃圾桶中文件的信息,请参阅删除

选项:

  • 如果文件不存在,-f选项将不显示诊断消息或修改退出状态以反映错误。
  • -R选项以递归方式删除目录及其下的任何内容。
  • -r选项等效于-R。
  • -skipTrash选项将绕过垃圾桶(如果启用),并立即删除指定的文件。当需要从超配额目录中删除文件时,这很有用。

例:

  • hadoop fs -rm hdfs://nn.example.com/file /user/hadoop/emptydir

退出代码:

成功返回0,错误返回-1。

rmdir

用法:hadoop fs -rmdir [-非空时忽略失败] URI [URI ...]

删除目录。

选项:

  • --ignore-fail-on-non-empty:使用通配符时,如果目录仍然包含文件,命令扔能成功执行。

例:

  • hadoop fs -rmdir /user/hadoop/emptydir

rmr

用法:hadoop fs -rmr [-skipTrash] URI [URI ...]

递归版本的删除。

注意:不推荐使用此命令。而是使用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_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

退出代码:

成功返回0,错误返回非零。

setfattr

用法:hadoop fs -setfattr -n名称[-v值] | -x名称<路径>

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

选项:

  • -b:除去基本ACL条目之外的所有条目。保留用户,组和其他用户的条目,以与权限位兼容。
  • -n name:扩展属性名称。
  • -v value:扩展属性值。该值有三种不同的编码方法。如果参数用双引号引起来,则该值为引号内的字符串。如果参数以0x或0X为前缀,则将其视为十六进制数。如果参数以0s或0S开头,则将其作为base64编码。
  • -x name:删除扩展属性。
  • path:文件或目录。

例子:

  • hadoop fs -setfattr -n user.myAttr -v myValue /文件
  • hadoop fs -setfattr -n user.noValue /文件
  • hadoop fs -setfattr -x user.myAttr /文件

退出代码:

成功返回0,错误返回非零。

setrep

用法:hadoop fs -setrep [-R] [-w] <numReplicas> <路径>

更改文件的复制因子。如果path是目录,则该命令以递归方式更改以path为根的目录树下所有文件的复制因子。

选项:

  • -w标志请求命令等待复制完成。这可能会花费很长时间。
  • 接受-R标志是为了向后兼容。没有作用。

例:

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

退出代码:

成功返回0,错误返回-1。

stat

用法:hadoop fs -stat [格式] <路径> ...

以指定格式打印有关<path>上文件/目录的统计信息。格式接受以块(%b),类型(%F),所有者的组名(%g),名称(%n),块大小(%o),复制(%r),所有者的用户名(% u)和修改日期(%y,%Y)。%y将UTC日期显示为“ yyyy-MM-dd HH:mm:ss”,%Y显示自1970年1月1日以来的毫秒数。如果未指定格式,则默认使用%y。

例:

  • hadoop fs -stat "%F %u:%g %b %y %n" /file

退出代码:成功返回0,错误返回-1。

tail

用法:hadoop fs -tail [-f] URI

显示要输出的文件的最后千字节。

选项:

  • 与Unix中一样,-f选项将随着文件的增长输出附加的数据。

例:

  • hadoop fs -tail 路径名

退出代码:成功返回0,错误返回-1。

text

用法:hadoop fs -test-[defsz] URI

选项:

  • -d:f路径是目录,返回0。
  • -e:如果路径存在,则返回0。
  • -f:如果路径是文件,则返回0。
  • -s:如果路径不为空,则返回0。
  • -z:如果文件长度为零,则返回0。

例:

  • hadoop fs -test -e 文件名

text

用法:hadoop fs -text <src>

获取源文件并以文本格式输出文件。允许的格式是zip和TextRecordInputStream。

touchz

用法:hadoop fs -touchz URI [URI ...]

创建一个零长度的文件。

例:

  • hadoop fs -touchz 路径名

退出代码:成功返回0,错误返回-1。

truncate

用法:hadoop fs -truncate [-w] <长度> <路径>

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

选项:

  • 该-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

返回单个命令的帮助。