干货 您所在的位置:网站首页 hdfs命令查看文件列表 干货

干货

2024-06-16 22:57| 来源: 网络整理| 查看: 265

前言

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

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

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

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

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

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

代码语言:javascript复制hadoop fs

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

代码语言:javascript复制[root@node01 ~]# hadoop fs Usage: hadoop fs [generic options] [-appendToFile ... ] [-cat [-ignoreCrc] ...] [-checksum ...] [-chgrp [-R] GROUP PATH...] [-chmod [-R] PATH...] [-chown [-R] [OWNER][:[GROUP]] PATH...] [-copyFromLocal [-f] [-p] [-l] ... ] [-copyToLocal [-p] [-ignoreCrc] [-crc] ... ] [-count [-q] [-h] [-v] [-x] ...] [-cp [-f] [-p | -p[topax]] ... ] [-createSnapshot []] [-deleteSnapshot ] [-df [-h] [ ...]] [-du [-s] [-h] [-x] ...] [-expunge] [-find ... ...] [-get [-p] [-ignoreCrc] [-crc] ... ] [-getfacl [-R] ] [-getfattr [-R] {-n name | -d} [-e en] ] [-getmerge [-nl] ] [-help [cmd ...]] [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [ ...]] [-mkdir [-p] ...] [-moveFromLocal ... ] [-moveToLocal ] [-mv ... ] [-put [-f] [-p] [-l] ... ] [-renameSnapshot ] [-rm [-f] [-r|-R] [-skipTrash] ...] [-rmdir [--ignore-fail-on-non-empty] ...] [-setfacl [-R] [{-b|-k} {-m|-x } ]|[--set ]] [-setfattr {-n name [-v value] | -x name} ] [-setrep [-R] [-w] ...] [-stat [format] ...] [-tail [-f] ] [-test -[defsz] ] [-text [-ignoreCrc] ...] [-touchz ...] [-usage [cmd ...]] Generic options supported are -conf specify an application configuration file -D use value for given property -fs specify a namenode -jt specify a ResourceManager -files specify comma separated files to be copied to the map reduce cluster -libjars specify comma separated jar files to include in the classpath. -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 hadoop2、-appendToFile

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

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

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

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

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

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

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

代码语言:javascript复制hadoop fs -chgrp hadoop /data/data.txt6、-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.txt8、-copyFromLocal

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

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

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

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

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

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

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

代码语言:javascript复制hadoop fs -cp /data/data.txt /data/data.tmp12、-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 /data16、-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/20122720414817、-find

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

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

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

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

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

代码语言:javascript复制[root@node01 zwj]# hadoop fs -getfacl /data # file: /data # owner: root # group: supergroup20、-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/input21、-getmerge

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

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

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

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

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

代码语言:javascript复制[root@node01 zwj]# hadoop fs -help cat -cat [-ignoreCrc] ... : Fetch all files that match the file pattern 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/input25、-mkdir

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

代码语言:javascript复制hadoop fs -mkdir /test/data26、-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 /test29、-put

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

代码语言:javascript复制hadoop fs -put /home/hadoop/input/data.local /data30、-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 sn231、-rm

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

代码语言:javascript复制hadoop fs -rm /data/data.local32、-rmkdir

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

代码语言:javascript复制hadoop fs -mkdir /test33、-setrep

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

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

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

%b:文件所占的块数%g:文件所属的用户组%n:文件名%o:文件块大小%r:备份数%u:文件所属用户%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:0435、-tail

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

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

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

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

实例代码如下所示:

代码语言:javascript复制hadoop fs -test -d /data37、-text

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

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

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

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

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

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

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

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

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

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有