Hadoop 命令操作大全

2021-04-27 10:27:48 浏览数 (1)

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

Overview

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

代码语言:javascript复制
bin/hadoop fs 

所有的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 ...

从本地文件系统附加一个或多个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] URI [URI ...]

更改文件的权限。使用-R,通过目录结构递归进行更改。用户必须是文件的所有者,或者是超级用户。其他信息在“ 权限指南”中。

选项

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

chown

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

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

选项

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

copyFromLocal

用法:hadoop fs -copyFromLocal URI

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

选项:

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

copyToLocal

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

与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

显示文件长度的摘要。

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

将文件复制到本地文件系统。未通过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中的文件串联到目标本地文件中。可以选择将-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]

选项:

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

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

代码语言:javascript复制
权限 number_of_replicas userid groupid 文件大小 修改日期 修改时间 文件名

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

代码语言:javascript复制
权限 userid groupid 修改日期 修改时间 目录名

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

例:

  • hadoop fs -ls /user/hadoop/file1

退出代码:

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

lsr

用法:hadoop fs -lsr

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

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

moveToLocal

用法:hadoop fs -moveToLocal [-crc]

显示“尚未执行”消息。

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 ...

将单个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 ] | [-set ]]

设置文件和目录的访问控制列表(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] <路径>

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

选项:

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

例:

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

退出代码:

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

stat

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

以指定格式打印有关上文件/目录的统计信息。格式接受以块(%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

获取源文件并以文本格式输出文件。允许的格式是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

返回单个命令的帮助。

0 人点赞