前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >干货 | HDFS常用的40个命令,你都知道吗?

干货 | HDFS常用的40个命令,你都知道吗?

作者头像
大数据梦想家
发布2021-01-27 16:57:27
1.7K0
发布2021-01-27 16:57:27
举报
文章被收录于专栏:大数据成长之路

前言

众所周知,Hadoop 提供了命令行接口,对HDFS中的文件进行管理操作,如读取文件新建目录移动文件复制文件删除目录上传文件下载文件列出目录等。本期文章,菌哥打算为大家详细介绍 Hadoop 的命令行接口!希望大家看完之后,能够有所收获 |ू・ω・` )

在这里插入图片描述
在这里插入图片描述

HDFS命令行的格式如下所示:

代码语言:javascript
复制
Hadoop fs -cmd <args>

其中,cmd是要执行的具体命令;是要执行命令的参数,但不限于一个参数。

要查看命令行接口的帮助信息,只需在命令行中输入如下命令:

代码语言:javascript
复制
hadoop fs

即不添加任务具体的执行命令,Hadoop 就会列出命令行接口的帮助信息,如下所示:

代码语言:javascript
复制
[root@node01 ~]# hadoop fs
Usage: hadoop fs [generic options]
        [-appendToFile <localsrc> ... <dst>]
        [-cat [-ignoreCrc] <src> ...]
        [-checksum <src> ...]
        [-chgrp [-R] GROUP PATH...]
        [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
        [-chown [-R] [OWNER][:[GROUP]] PATH...]
        [-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>]
        [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
        [-count [-q] [-h] [-v] [-x] <path> ...]
        [-cp [-f] [-p | -p[topax]] <src> ... <dst>]
        [-createSnapshot <snapshotDir> [<snapshotName>]]
        [-deleteSnapshot <snapshotDir> <snapshotName>]
        [-df [-h] [<path> ...]]
        [-du [-s] [-h] [-x] <path> ...]
        [-expunge]
        [-find <path> ... <expression> ...]
        [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
        [-getfacl [-R] <path>]
        [-getfattr [-R] {-n name | -d} [-e en] <path>]
        [-getmerge [-nl] <src> <localdst>]
        [-help [cmd ...]]
        [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [<path> ...]]
        [-mkdir [-p] <path> ...]
        [-moveFromLocal <localsrc> ... <dst>]
        [-moveToLocal <src> <localdst>]
        [-mv <src> ... <dst>]
        [-put [-f] [-p] [-l] <localsrc> ... <dst>]
        [-renameSnapshot <snapshotDir> <oldName> <newName>]
        [-rm [-f] [-r|-R] [-skipTrash] <src> ...]
        [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
        [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
        [-setfattr {-n name [-v value] | -x name} <path>]
        [-setrep [-R] [-w] <rep> <path> ...]
        [-stat [format] <path> ...]
        [-tail [-f] <file>]
        [-test -[defsz] <path>]
        [-text [-ignoreCrc] <src> ...]
        [-touchz <path> ...]
        [-usage [cmd ...]]

Generic options supported are
-conf <configuration file>     specify an application configuration file
-D <property=value>            use value for given property
-fs <local|namenode:port>      specify a namenode
-jt <local|resourcemanager:port>    specify a ResourceManager
-files <comma separated list of files>    specify comma separated files to be copied to the map reduce cluster
-libjars <comma separated list of jars>    specify comma separated jar files to include in the classpath.
-archives <comma separated list of archives>    specify comma separated archives to be unarchived on the compute machines.

The general command line syntax is
bin/hadoop command [genericOptions] [commandOptions]

1、文件准备

在服务器本地创建 data.txt 文件用于测试,文件的内容如下所示:

代码语言:javascript
复制
hello hadoop

2、-appendToFile

将服务器本地的文件追加到HDFS指定的文件中,如果多次运行相同的参数,则会在 HDFS 的文件中追加多行相同的内容。实例代码如下所示:

代码语言:javascript
复制
hadoop fs -appendToFile data.txt /data/data.txt

3、-cat

主要用来查看 HDFS 中的非压缩文件的内容。实例代码如下所示:

代码语言:javascript
复制
[root@node01 ~]# hadoop fs -cat  /data/data.txt
hello hadoop
hello hadoop

4、-checksum

查看 HDFS 中文件的校验和。实例代码如下所示:

代码语言:javascript
复制
[root@node01 ~]# hadoop fs -checksum  /data/data.txt
/data/data.txt  MD5-of-0MD5-of-512CRC32C        000002000000000000000000c8e21d30c9ed5817cd5ff40768a34389

5、-chgrp

改变 HDFS 中文件或目录的所属组,-R 选项可以改变目录下所有子目录的所属组,执行此命令的用户必须是文件或目录的所有者或超级用户。实例代码如下所示:

代码语言:javascript
复制
hadoop fs -chgrp hadoop /data/data.txt

6、-chmod

修改 HDFS 中文件或目录的访问权限,-R 选项可以修改目录下的所有子目录的访问权限,执行此命令的用户必须是文件或目录的所有者或超级用户。实例代码如下所示:

代码语言:javascript
复制
hadoop fs -chmod 700 /data/data.txt

此时,data.txt 文件当前的访问权限已经被修改为“ -rwx------”

7、chown

修改文件或目录的所有者,-R选项可以修改目录下所有子目录的所有者,此命令的用户必须是超级用户。实例代码如下所示:

代码语言:javascript
复制
hadoop fs -chown alice:alice /data/data.txt

8、-copyFromLocal

将本地服务器上的文件复制到HDFS中。实例代码如下所示:

代码语言:javascript
复制
hadoop fs -copyFromLocal a.txt /data/

9、-copyToLocal

将 HDFS 中的文件复制到服务器本地。实例代码如下所示:

代码语言:javascript
复制
hadoop fs -copyToLocal /data/data.txt /home/hadoop/input

10、-count

显示目录下的子目录数、文件数、占用字节数、所有文件和目录名,-q 选项显示目录和空间的配额信息。实例代码如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -count /data/
           4            9                456 /data

11、-cp

复制文件或目录,如果源文件或目录有多个,则目标必须为目录。实例代码如下所示:

代码语言:javascript
复制
hadoop fs -cp /data/data.txt /data/data.tmp

12、-createSnapshot

为HDFS中的文件创建快照,实例代码如下: 首先在 HDFS 中创建目录 /sn,并将 /sn 目录设置为可快照,如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -mkdir /sn
[root@node01 zwj]# hdfs dfsadmin -allowSnapshot /sn
Allowing snaphot on /sn succeeded

接下来执行创建快照操作,如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -createSnapshot /sn s1
Created snapshot /sn/.snapshot/s1

说明创建快照成功。

13、-deleteSnapshot

删除 HDFS 中的文件快照,实例代码如下所示:

代码语言:javascript
复制
hadoop fs -deleteSnapshot /sn sn1

删除 /sn 目录的快照sn1

14、-df

查看 HDFS 中目录空间的使用情况。实例代码如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -df -h /data
Filesystem             Size    Used  Available  Use%
hdfs://node01:8020  130.1 G  13.7 G     57.8 G   11%

15、-du

查看 HDFS 或目录中的文件大小。实例代码如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -du -h -s -x /data
456  1.3 K  /data

16、-expunge

清空HDFS中的回收站,实例代码如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -expunge
20/12/27 20:41:48 INFO fs.TrashPolicyDefault: TrashPolicyDefault#deleteCheckpoint for trashRoot: hdfs://node01:8020/user/root/.Trash
20/12/27 20:41:48 INFO fs.TrashPolicyDefault: TrashPolicyDefault#deleteCheckpoint for trashRoot: hdfs://node01:8020/user/root/.Trash
20/12/27 20:41:48 INFO fs.TrashPolicyDefault: Deleted trash checkpoint: /user/root/.Trash/201028063715
20/12/27 20:41:48 INFO fs.TrashPolicyDefault: Deleted trash checkpoint: /user/root/.Trash/201031181139
20/12/27 20:41:48 INFO fs.TrashPolicyDefault: TrashPolicyDefault#createCheckpoint for trashRoot: hdfs://node01:8020/user/root/.Trash
20/12/27 20:41:48 INFO fs.TrashPolicyDefault: Created trash checkpoint: /user/root/.Trash/201227204148

17、-find

查找 HDFS 中指定目录下的文件。实例代码如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -find /data /data/data.txt
/data
/data/a.txt
/data/data.txt

18、-get

将 HDFS 中的文件复制到本地服务器。实例代码如下所示:

代码语言:javascript
复制
hadoop fs -get /data/data.txt  /home/hadoop/input

19、-getfacl

查看HDFS中指定目录下的文件的访问控制列表,-R 选项可以查看所有子目录下的文件访问控制列表。实例代码如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -getfacl /data
# file: /data
# owner: root
# group: supergroup

20、-getfattr

查看 HDFS 上的文件扩展属性信息,-R 选项可以查看当前目录下所有子目录中的文件扩展属性信息或子目录下文件的扩展属性信息。实例代码如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -getfattr -R -d /data
# file: /data
# file: /data/a.txt
# file: /data/data.txt
# file: /data/input

21、-getmerge

将 HDFS 中的多个文件合并为一个文件,复制到本地服务器。实例代码如下所示:

代码语言:javascript
复制
hadoop fs -getmerge /data/a.txt /data/b.txt /home/hadoop/input/data.local

22、-head

以head方式查看 HDFS 中的文件,此命令后面的文件只能为文件,不能为目录,实例代码如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -head /data/data.txt
hello hadoop
hello hadoop

23、-help

查看 Hadoop 具体命令的帮助信息。实例代码如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -help cat
-cat [-ignoreCrc] <src> ... :
  Fetch all files that match the file pattern <src> and display their content on
  stdout.

24、-ls

列出 HDFS 中指定目录下的信息,实例代码如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -ls /data
Found 3 items
-rw-r--r--   3 root supergroup          6 2020-12-27 20:11 /data/a.txt
-rw-r--r--   3 root supergroup         26 2020-12-27 18:59 /data/data.txt
drwxr-xr-x   - root supergroup          0 2020-09-18 19:16 /data/input

25、-mkdir

在 HDFS 上创建目录,实例代码如下所示:

代码语言:javascript
复制
hadoop fs -mkdir /test/data

26、-moveFromLocal

移动本地服务器上的某个文件到 HDFS 中。实例代码如下所示:

代码语言:javascript
复制
hadoop fs -moveFromLocal /home/hadoop/input/data.local /data/

27、-moveToLocal

移动 HDFS 中的文件到本地服务器的某个目录下。

代码语言:javascript
复制
hadoop fs -moveToLocal  /data/data.txt  /home/hadoop/input/

注意:| 此命令在 Hadoop3.2.0 版本中尚未实现

28、-mv

移动 HDFS 中的目录到 HDFS 中的另一个目录下。实例代码如下所示:

代码语言:javascript
复制
hadoop fs -mv /data/data.local /test

29、-put

复制本地文件到 HDFS 中的某个目录下。实例代码如下所示:

代码语言:javascript
复制
hadoop fs -put /home/hadoop/input/data.local /data

30、-renameSnapshot

重命名 HDFS 上的文件快照。实例代码如下: 首先在 HDFS 中创建目录 /sn,并将 /sn 目录设置为可快照,如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -mkdir /sn
[root@node01 zwj]# hdfs dfsadmin -allowSnapshot /sn
Allowing snaphot on /sn succeeded

接下来执行创建快照操作,如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -createSnapshot /sn s1
Created snapshot /sn/.snapshot/s1

说明创建快照成功。 接下来将 /sn 目录的快照名称 sn1 重命名为 sn2,如下所示:

代码语言:javascript
复制
hadoop fs -renameSnapshot /sn sn1 sn2

31、-rm

删除文件或目录。实例代码如下所示:

代码语言:javascript
复制
hadoop fs -rm /data/data.local

32、-rmkdir

删除HDFS上的目录,此目录必须是空目录。实例代码如下所示:

代码语言:javascript
复制
hadoop fs -mkdir /test

33、-setrep

设置 HDFS 上的文件的目标副本数量,-R 选项可以对子目录逐级进行相同的操作, -w 选项等待副本达到设置值。实例代码如下所示:

代码语言:javascript
复制
hadoop fs -setrep 5 /data/data.txt

34、-stat

查看 HDFS 上文件或目录的统计信息,以 format 的格式列出。可选的 format 格式如下:

  1. %b:文件所占的块数
  2. %g:文件所属的用户组
  3. %n:文件名
  4. %o:文件块大小
  5. %r:备份数
  6. %u:文件所属用户
  7. %y:文件修改时间

实例代码如下所示:

代码语言:javascript
复制
[root@node01 zwj]$ hadoop fs -stat %b,%g,%n,%o,%r,%u,%y /data
0,hive,data,0,0,hive,2020-11-16 07:54:04

35、-tail

显示一个文件的末尾数据,通常是显示文件最后的 1KB 的数据。-f 选项可以监听文件的变化,当有内容追加到文件中时,-f 选项能够实时显示追加的内容。实例代码如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -tail /data/data.txt
hello hadoop
hello hadoop

36、-test

检测文件的信息,参数选项如下:

  1. -d:如果路径为目录则返回0
  2. -e:如果路径存在则返回0
  3. -f:如果路径为文件则返回0
  4. -s:如果路径中的文件大于0字节则返回0
  5. -w:如果路径存在并且具有写权限则返回0
  6. -r:如果路径存在并且具有读权限则返回0
  7. -z:如果路径中的文件为0字节则返回0,否则返回1

实例代码如下所示:

代码语言:javascript
复制
hadoop fs -test -d /data

37、-text

查看文件内容。text 命令除了能够查看非压缩的文本文件内容之外,也能查看压缩后的文本文件内容;cat命令只能查看非压缩的文本文件内容。实例代码如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -text /data/data.txt
hello hadoop
hello hadoop

38、touch

在 HDFS 上创建文件,如果文件不存在则不报错,实例代码如下所示:

代码语言:javascript
复制
hadoop fs -touch /data/data.touch

39、-truncate

切断 HDFS 上的文件,实例代码如下所示:

代码语言:javascript
复制
[root@node01 zwj]# hadoop fs -truncate 26 /data/data.txt
Truncate /data/data.txt to length: 26

40、-usage

列出指定命令的使用格式,实例代码如下所示:

代码语言:javascript
复制
[[root@node01 zwj]# hadoop fs -usage cat
Usage: hadoop fs [generic options] -cat [-ignoreCrc] <src> ...

小结

本期内容为大家介绍了 40 个 HDFS常用的命令,还有一些不常用的命令我就没有列出来,等着感兴趣的小伙伴们自行去探索。之后的文章,我会先把FlinkSQL的内容更完,然后会根据自己平时做的笔记,出一些硬核的知识总结,等到复习的差不多了,开始更一个实时数仓的项目,感兴趣的小伙伴们记得及时关注,第一时间获取技术干货!你知道的越多,你不知道的也越多,我是Alice,我们下一期见!!!

文章持续更新,可以微信搜一搜「 猿人菌 」第一时间阅读,思维导图,大数据书籍,大数据高频面试题,海量一线大厂面经…期待您的关注!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1、文件准备
  • 2、-appendToFile
  • 3、-cat
  • 4、-checksum
  • 5、-chgrp
  • 6、-chmod
  • 7、chown
  • 8、-copyFromLocal
  • 9、-copyToLocal
  • 10、-count
  • 11、-cp
  • 12、-createSnapshot
  • 13、-deleteSnapshot
  • 14、-df
  • 15、-du
  • 16、-expunge
  • 17、-find
  • 18、-get
  • 19、-getfacl
  • 20、-getfattr
  • 21、-getmerge
  • 22、-head
  • 23、-help
  • 24、-ls
  • 25、-mkdir
  • 26、-moveFromLocal
  • 27、-moveToLocal
  • 28、-mv
  • 29、-put
  • 30、-renameSnapshot
  • 31、-rm
  • 32、-rmkdir
  • 33、-setrep
  • 34、-stat
  • 35、-tail
  • 36、-test
  • 37、-text
  • 38、touch
  • 39、-truncate
  • 40、-usage
  • 小结
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档