前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EMR入门学习之HDFS上的一些常见Shell命令(五)

EMR入门学习之HDFS上的一些常见Shell命令(五)

原创
作者头像
披荆斩棘
修改2019-11-29 17:15:25
1.5K0
修改2019-11-29 17:15:25
举报
文章被收录于专栏:乘风破浪

文件系统(FS)shell包括各种类似shell的命令,这些命令直接与Hadoop分布式文件系统(HDFS)以及Hadoop支持的其他文件系统交互,例如本地FS,HFTP FS,S3 FS等。HDFS文件系统相关操作,主要使用以下2个命令:

hadoop fs {args}:可操作任何文件系统。

hdfs dfs {args}:dfs只能操作HDFS文件系统相关(包括与LocalFS间的操作),比如,Hadoop本地模式中fs是local file system,这个时候dfs就不能用,只能用fs。

命令介绍

  • appendToFile
说明

将单个src或多个srcs从本地文件系统追加到目标文件系统,也可从命令行读取输入。

用法
代码语言:javascript
复制
hadoop fs -appendToFile <localsrc> ... <dst>
示例
代码语言:javascript
复制
hadoop fs -appendToFile localfile /user/hadoop/hadoopfilehadoop fs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfilehadoop fs -appendToFile localfile hdfs://nn.example.com/hadoop/hadoopfilehadoop fs -appendToFile - hdfs://nn.example.com/hadoop/hadoopfile Reads the input from stdin.

返回码:0 成功,1 错误

  • cat
说明

将源路径复制到stdout。

用法
代码语言:javascript
复制
hadoop fs -cat URI [URI ...]
示例
代码语言:javascript
复制
hadoop fs -cat hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2hadoop fs -cat file:/// file3 / user / hadoop / file4

返回码:0 成功,-1 错误

  • checksum
说明

返回文件的校验信息

用法
代码语言:javascript
复制
hadoop fs -checksum URI
示例
代码语言:javascript
复制
hadoop fs -checksum hdfs://nn1.example.com/file1hadoop fs -checksum file:///etc/hosts
  • chgrp
说明

更改文件的分组。用户必须是文件的所有者,否则必须是超级用户。

用法
代码语言:javascript
复制
hadoop fs -chgrp [-R] GROUP URI [URI ...]
选项

选项

说明

-R

将通过目录结构递归地进行更改

  • chmod
说明

更改文件的权限。使用选项-R通过目录结构递归更改。用户必须是文件的所有者,否则必须是超级用户。

用法
代码语言:javascript
复制
hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]
选项

选项

说明

-R

将通过目录结构递归地进行更改

  • chown
说明

更改文件的所有者。用户必须是超级用户。

用法
代码语言:javascript
复制
hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]
选项

选项

说明

-R

将通过目录结构递归地进行更改

  • copyFromLocal
说明

与put命令类似,但源仅限于本地文件引用。

用法
代码语言:javascript
复制
hadoop fs -copyFromLocal <localsrc> URI
选项

选项

说明

-f

如果目标已存在,则将覆盖目标。

  • copyToLocal
说明

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

用法
代码语言:javascript
复制
hadoop fs -copyToLocal [-ignorecrc] [-crc] URI <localdst>
  • count
说明

计算指定匹配文件模式的路径下的目录、文件、字节数。

用法
代码语言:javascript
复制
hadoop fs -count [-q] [-h] [-v] <paths>
选项

选项

说明

-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

显示标题行

示例
代码语言:javascript
复制
hadoop fs -count hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2hadoop fs -count -q hdfs://nn1.example.com/file1hadoop fs -count -q -h hdfs://nn1.example.com/file1hdfs dfs -count -q -h -v hdfs://nn1.example.com/file1

返回码:0 成功,-1 错误

  • cp
说明

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

如果:

(1)源文件系统和目标文件系统支持它们(HDFS only)。

(2)所有源和目标路径名都在/.reserved/raw层次结构中。

则保留raw.*命名空间扩展属性。是否保留raw.*命名空间扩展属性与-p(preserve)标志无关。

用法
代码语言:javascript
复制
hadoop fs -cp [-f] [-p | -p[topax]] URI [URI ...] <dest>
示例
代码语言:javascript
复制
hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir

返回码:0 成功,-1 错误

  • createSnapshot
说明

创建快照目录的快照。此操作需要快照目录的所有者权限。

用法
代码语言:javascript
复制
hdfs dfs -createSnapshot <path> [<snapshotName>]
选项

路径

快照目录的路径

snapshotName

快照名称,这是一个可选参数。当省略它时,将使用时间戳生成默认名称,时间戳的格式为"'s'yyyyMMdd-HHmmss.SSS", e.g. "s20130412-151029.033"

  • deleteSnapshot
说明

从快照目录中删除快照。此操作需要快照目录的所有者权限。

用法
代码语言:javascript
复制
hdfs dfs -deleteSnapshot <path> <snapshotName>
选项

路径

快照目录的路径

snapshotName

快照的名字

  • df
说明

显示可用空间。

用法
代码语言:javascript
复制
hadoop fs -df [-h] URI [URI ...]
选项

路径

快照目录的路径

-h

将以“可读”的方式格式化文件大小(例如64.0M而不是67108864)

示例
代码语言:javascript
复制
hadoop dfs -df /user/hadoop/dir1
  • du
说明

显示给定目录中包含的文件和目录的大小,如果只是文件,则显示文件的长度。

用法
代码语言:javascript
复制
hadoop fs -du [-s] [-h] URI [URI ...]
选项

路径

快照目录的路径

-s

显示的是文件长度的汇总,而不是单个文件。

-h

将以“可读”的方式格式化文件大小(例如64.0M而不是67108864)

示例
代码语言:javascript
复制
hadoop fs -du /user/hadoop/dir1 /user/hadoop/file1 hdfs://nn.example.com/user/hadoop/dir1

返回码:0 成功,-1 错误

  • dus
说明

显示文件长度的摘要

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

用法
代码语言:javascript
复制
hadoop fs -dus <args>
  • expunge
说明

从trash目录中永久删除早于滞留阈的检查点中的文件,并创建新的检查点。

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

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

用法
代码语言:javascript
复制
hadoop fs -expunge
  • find
说明

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

识别以下主要表达式:

代码语言:javascript
复制
-name pattern-iname pattern

如果文件的basename与使用标准文件系统通配符的模式匹配,则计算为true。如果使用-iname,则匹配不区分大小写。

代码语言:javascript
复制
-print-print0Always

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

用法
代码语言:javascript
复制
hadoop fs -find <path> ... <expression> ...
示例
代码语言:javascript
复制
hadoop fs -find / -name test -print

返回码:0 成功,-1 错误

  • get
说明

将文件复制到本地文件系统。可以使用-ignorecrc选项复制CRC校验失败的文件。可以使用-crc选项复制文件和CRC。

用法
代码语言:javascript
复制
hadoop fs -get [-ignorecrc] [-crc] <src> <localdst>
示例
代码语言:javascript
复制
hadoop fs -get /user/hadoop/file localfilehadoop fs -get hdfs://nn.example.com/user/hadoop/file localfile

返回码:0 成功,-1 错误

  • getfacl
说明

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

用法
代码语言:javascript
复制
hadoop fs -getfacl [-R] <path>
选项

选项

说明

-R

递归列出所有文件和目录的ACL

path

要列出的文件或目录

示例
代码语言:javascript
复制
hadoop fs -getfacl /filehadoop fs -getfacl -R /dir

返回码:0 成功,非0数 错误

  • getfattr
说明

显示文件或目录的扩展属性名称和值。

用法
代码语言:javascript
复制
hadoop fs -getfattr [-R] -n name | -d [-e en] <path>
选项

选项

说明

-R

递归列出所有文件和目录的属性

-n name

Dump指定的扩展属性值

-d

Dump与pathname关联的所有扩展属性值

-e encoding

检索后对代码值进行编码。有效编码为“text”,“hex”和“base64”。编码为文本字符串的值用双引号(“)括起来,编码为十六进制和base64的值分别以0x和0s为前缀。

path

文件或目录

示例
代码语言:javascript
复制
hadoop fs -getfattr -d /filehadoop fs -getfattr -R -n user.myAttr /dir

返回码:0 成功,其他值 错误

  • getmerge
说明

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

用法
代码语言:javascript
复制
hadoop fs -getmerge [-nl] <src> <localdst>
示例
代码语言:javascript
复制
hadoop fs -getmerge -nl /src /opt/output.txthadoop fs -getmerge -nl /src/file1.txt /src/file2.txt /output.txt

返回码:0 成功,其他值 错误

  • help
说明

帮助命令,使用标准输出

用法
代码语言:javascript
复制
hadoop fs -help
  • ls
说明

将源路径复制到stdout。

用法
代码语言:javascript
复制
hadoop fs -ls [-d] [-h] [-R] <args>
选项

选项

说明

-d

目录列为纯文件

-h

以"可读"的方式格式化文件大小(例如64.0M而不是67108864)

-R

递归列出遇到的子目录

对于文件,ls使用以下格式返回文件的stat:

代码语言:javascript
复制
permissions number_of_replicas userid groupid filesize modification_date modification_time filename

在Unix中对于目录,它返回其直接子节点的列表。目录列为:

代码语言:javascript
复制
permissions userid groupid modification_date modification_time dirname

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

示例
代码语言:javascript
复制
hadoop fs -ls /user/hadoop/file1

返回码:0 成功,-1 错误

  • lsr
说明

ls的递归版本

用法
代码语言:javascript
复制
hadoop fs -lsr <args>

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

  • mkdir
说明

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

用法
代码语言:javascript
复制
hadoop fs -mkdir [-p] <paths>
选项

选项

说明

-p

该选项行为很像Unix mkdir -p,沿路径创建父目录

示例
代码语言:javascript
复制
hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2hadoop fs -mkdir hdfs://nn1.example.com/user/hadoop/dir hdfs://nn2.example.com/user/hadoop/dir

返回码:0 成功,-1 错误

  • moveFromLocal
说明

与put命令类似,只是在复制后删除了源localsrc

用法
代码语言:javascript
复制
hadoop fs -moveFromLocal <localsrc> <dst>
  • moveToLocal
说明

显示“Not implemented yet”消息

用法
代码语言:javascript
复制
hadoop fs -moveToLocal [-crc] <src> <dst>
  • mv
说明

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

用法
代码语言:javascript
复制
hadoop fs -mv URI [URI ...] <dest>
示例
代码语言:javascript
复制
hadoop fs -mv /user/hadoop/file1 /user/hadoop/file2hadoop 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
说明

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

用法
代码语言:javascript
复制
hadoop fs -put <localsrc> ... <dst>
示例
代码语言:javascript
复制
hadoop fs -put localfile /user/hadoop/hadoopfilehadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdirhadoop fs -put localfile hdfs://nn.example.com/hadoop/hadoopfilehadoop fs -put - hdfs://nn.example.com/hadoop/hadoopfile Reads the input from stdin.

返回码:0 成功,-1 错误

  • renameSnapshot
说明

重命名快照。此操作需要快照目录的所有者权限

用法
代码语言:javascript
复制
hdfs dfs -renameSnapshot <path> <oldName> <newName>
选项

路径

快照目录的路径

oldName

旧快照名称

newName

新快照名称

  • rm
说明

删除指定为args的文件

如果启用了trash,则文件系统会将已删除的文件移动到trash 目录(由FileSystem#getTrashRoot提供)。

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

用法
代码语言:javascript
复制
hadoop fs -rm [-f] [-r |-R] [-skipTrash] URI [URI ...]
选项

选项

说明

-f

如果文件不存在,-f选项将不显示诊断消息或修改退出状态以反映错误

-R

选项以递归方式删除目录及其下的任何内容

-r

等效于-R

-skipTrash

将绕过trash(如果已启用),并立即删除指定的文件。当需要从超配额目录中删除文件时,这非常有用。

示例
代码语言:javascript
复制
hadoop fs -rm hdfs://nn.example.com/file /user/hadoop/emptydir

返回码:0 成功,-1 错误

  • rmdir
说明

删除目录

用法
代码语言:javascript
复制
hadoop fs -rmdir [--ignore-fail-on-non-empty] URI [URI ...]
选项

选项

说明

--ignore-fail-on-non-empty

使用通配符时,如果目录仍包含文则不允许失败

示例
代码语言:javascript
复制
hadoop fs -rmdir /user/hadoop/emptydir
  • rmr
说明

删除的递归版本

用法
代码语言:javascript
复制
hadoop fs -rmr [-skipTrash] URI [URI ...]

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

  • setfacl
说明

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

用法
代码语言:javascript
复制
hadoop fs -setfacl [-R] [-b |-k -m |-x <acl_spec> <path>] |[--set <acl_spec> <path>]
选项

除去基本ACL项之外的所有项。为了与permission bits兼容,user、group和其他项保留。

选项

说明

-b

删除除去基本ACL项之外的所有项。为了与permission bits兼容,user、group和其他项保留

-k

删除默认的ACL

-R

递归地对所有文件和目录应用操作

-m

修改ACL。新条目将添加到ACL,并保留现有条目

-x

删除指定的ACL条目。保留其他ACL条目

--set

完全替换ACL,丢弃所有现有条目。所述acl_spec必须包括user,group条目和其他用于与permission bits兼容性

-acl_spec

以逗号分隔的ACL条目列表

-path

要修改的文件或目录

示例
代码语言:javascript
复制
hadoop fs -setfacl -m user:hadoop:rw- /filehadoop fs -setfacl -x user:hadoop /filehadoop fs -setfacl -b /filehadoop fs -setfacl -k /dirhadoop fs -setfacl --set user::rw-,user:hadoop:rw-,group::r--,other::r-- /filehadoop fs -setfacl -R -m user:hadoop:r-x /dirhadoop fs -setfacl -m default:user:hadoop:r-x /dir

返回码:0 成功,其他值 错误

  • setfattr
说明

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

用法
代码语言:javascript
复制
hadoop fs -setfattr -n name [-v value] | -x name <path>
选项

选项

说明

-b

删除除基本ACL条目之外的所有条目。保留user,group和其他条目以与permission bits兼容

-n name

扩展属性名称

-v value

扩展属性值。该值有三种不同的编码方法。如果参数用双引号括起来,那么值就是引号内的字符串。如果参数的前缀为0x或0X,则将其视为十六进制数。如果参数以0或0S开头,则将其视为base64编码。

-x name

删除扩展属性。

path

文件或目录。

示例
代码语言:javascript
复制
hadoop fs -setfattr -n user.myAttr -v myValue /filehadoop fs -setfattr -n user.noValue /filehadoop fs -setfattr -x user.myAttr /file

返回码:0 成功,其他值 错误

  • setrep
说明

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

用法
代码语言:javascript
复制
hadoop fs -setrep [-R] [-w] <numReplicas> <path>
选项

选项

说明

-w

标志请求命令等待复制完成。这可能需要很长时间。

-P

标志是为了向后兼容。

示例
代码语言:javascript
复制
hadoop fs -setrep -w 3 /user/hadoop/dir1

返回码:0 成功,-1 错误

  • stat
说明

以指定格式打印有关 <path>的文件/目录的统计信息。格式接受blocks(%b),type(%F),所有者group name(%g),name(%n),block size(%o),replication (%r),所有者user name (%u)和修改日期(%y,%Y)。%y将显示为UTC日期格式“yyyy-MM-dd HH:mm:ss”,%Y显示自January 1, 1970 UTC以来的毫秒数。如果未指定格式,则默认使用%y。

用法
代码语言:javascript
复制
hadoop fs -stat [format] <path> ...
示例
代码语言:javascript
复制
hadoop fs -stat "%F %u:%g %b %y %n" /file
  • tail
说明

显示文件的最后一千字节到stdout。

用法
代码语言:javascript
复制
hadoop fs -tail [-f] URI
示例
代码语言:javascript
复制
hadoop fs -tail pathname

返回码:0 成功,-1 错误

  • test
说明

选项

说明

-d

如果路径是目录,返回0。

-e

如果路径存在,则返回0。

-f

如果路径是文件,则返回0。

-s

如果路径不为空,则返回0。

-z

如果文件长度为零,则返回0。

用法
代码语言:javascript
复制
hadoop fs -test -[defsz] URI
示例
代码语言:javascript
复制
hadoop fs -test -e filename

返回码:0 成功,-1 错误

  • text
说明

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

用法
代码语言:javascript
复制
hadoop fs -text <src>
  • touchz
说明

创建一个零长度的文件。

用法
代码语言:javascript
复制
hadoop fs -touchz URI [URI ...]
示例
代码语言:javascript
复制
hadoop fs -touchz pathname

返回码:0 成功,-1 错误

  • truncate
说明

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

用法
代码语言:javascript
复制
hadoop fs -truncate [-w] <length> <paths>
选项
代码语言:javascript
复制
-w标志请求命令在必要时等待block 完成恢复。如果没有-w标志,在恢复过程中文件可能会保持一段时间的未关闭状态。在此期间,无法重新打开文件进行追加。
示例
代码语言:javascript
复制
hadoop fs -truncate 55 /user/hadoop/file1 /user/hadoop/file2hadoop fs -truncate -w 127 hdfs://nn1.example.com/user/hadoop/file1
  • usage
说明

返回单个命令的帮助

用法
代码语言:javascript
复制
hadoop fs -usage command

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 命令介绍
相关产品与服务
弹性 MapReduce
弹性 MapReduce (EMR) 是基于云原生技术和泛 Hadoop 生态开源技术的安全、低成本、高可靠的开源大数据平台。提供易于部署及管理的 Hive、Spark、HBase、Flink、StarRocks、Iceberg、Alluxio 等开源大数据组件,帮助客户高效构建云端企业级数据湖技术架构。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档