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

Alice菌 2021-01-20 21:52:28
命令 HDFS 干货 常用 知道吗


前言

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

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

Hadoop fs -cmd <args>

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

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

hadoop fs

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

[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 文件用于测试,文件的内容如下所示:

hello hadoop

2、-appendToFile

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

hadoop fs -appendToFile data.txt /data/data.txt

3、-cat

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

[root@node01 ~]# hadoop fs -cat /data/data.txt
hello hadoop
hello hadoop

4、-checksum

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

[root@node01 ~]# hadoop fs -checksum /data/data.txt
/data/data.txt MD5-of-0MD5-of-512CRC32C 000002000000000000000000c8e21d30c9ed5817cd5ff40768a34389

5、-chgrp

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

hadoop fs -chgrp hadoop /data/data.txt

6、-chmod

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

hadoop fs -chmod 700 /data/data.txt

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

7、chown

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

hadoop fs -chown alice:alice /data/data.txt

8、-copyFromLocal

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

hadoop fs -copyFromLocal a.txt /data/

9、-copyToLocal

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

hadoop fs -copyToLocal /data/data.txt /home/hadoop/input

10、-count

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

[root@node01 zwj]# hadoop fs -count /data/
4 9 456 /data

11、-cp

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

hadoop fs -cp /data/data.txt /data/data.tmp

12、-createSnapshot

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

[root@node01 zwj]# hadoop fs -mkdir /sn
[root@node01 zwj]# hdfs dfsadmin -allowSnapshot /sn
Allowing snaphot on /sn succeeded

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

[root@node01 zwj]# hadoop fs -createSnapshot /sn s1
Created snapshot /sn/.snapshot/s1

        说明创建快照成功。

13、-deleteSnapshot

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

hadoop fs -deleteSnapshot /sn sn1

        删除 /sn 目录的快照sn1

14、-df

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

[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 或目录中的文件大小。实例代码如下所示:

[root@node01 zwj]# hadoop fs -du -h -s -x /data
456 1.3 K /data

16、-expunge

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

[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 中指定目录下的文件。实例代码如下所示:

[root@node01 zwj]# hadoop fs -find /data /data/data.txt
/data
/data/a.txt
/data/data.txt

18、-get

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

hadoop fs -get /data/data.txt /home/hadoop/input

19、-getfacl

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

[root@node01 zwj]# hadoop fs -getfacl /data
# file: /data
# owner: root
# group: supergroup

20、-getfattr

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

[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 中的多个文件合并为一个文件,复制到本地服务器。实例代码如下所示:

hadoop fs -getmerge /data/a.txt /data/b.txt /home/hadoop/input/data.local

22、-head

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

[root@node01 zwj]# hadoop fs -head /data/data.txt
hello hadoop
hello hadoop

23、-help

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

[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 中指定目录下的信息,实例代码如下所示:

[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 上创建目录,实例代码如下所示:

hadoop fs -mkdir /test/data

26、-moveFromLocal

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

hadoop fs -moveFromLocal /home/hadoop/input/data.local /data/

27、-moveToLocal

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

hadoop fs -moveToLocal /data/data.txt /home/hadoop/input/

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

28、-mv

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

hadoop fs -mv /data/data.local /test

29、-put

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

hadoop fs -put /home/hadoop/input/data.local /data

30、-renameSnapshot

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

[root@node01 zwj]# hadoop fs -mkdir /sn
[root@node01 zwj]# hdfs dfsadmin -allowSnapshot /sn
Allowing snaphot on /sn succeeded

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

[root@node01 zwj]# hadoop fs -createSnapshot /sn s1
Created snapshot /sn/.snapshot/s1

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

hadoop fs -renameSnapshot /sn sn1 sn2

31、-rm

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

hadoop fs -rm /data/data.local

32、-rmkdir

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

hadoop fs -mkdir /test

33、-setrep

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

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:文件修改时间

        实例代码如下所示:

[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 选项能够实时显示追加的内容。实例代码如下所示:

[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

        实例代码如下所示:

hadoop fs -test -d /data

37、-text

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

[root@node01 zwj]# hadoop fs -text /data/data.txt
hello hadoop
hello hadoop

38、touch

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

hadoop fs -touch /data/data.touch

39、-truncate

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

[root@node01 zwj]# hadoop fs -truncate 26 /data/data.txt
Truncate /data/data.txt to length: 26

40、-usage

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

[[root@node01 zwj]# hadoop fs -usage cat
Usage: hadoop fs [generic options] -cat [-ignoreCrc] <src> ...

小结

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

        

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

在这里插入图片描述

版权声明
本文为[Alice菌]所创,转载请带上原文链接,感谢
https://alice.blog.csdn.net/article/details/112752525

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云