news 2026/7/3 4:34:34

Hadoop(常用命令+文件读写流程)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hadoop(常用命令+文件读写流程)

HDFS分布式文件系统

启动

start-dfs.sh

HDFS常用的40个命令

cmd为具体要执行的命令

Hadoop fs -cmd <args>

不添加任务具体的执行命令,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 文件用于测试

vim 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

改变 所属组

执行此命令的用户必须是文件或目录的所有者或超级用户

hadoop fs -chgrp hadoop /data/data.txt

6、-chmod

修改 访问权限,执行此命令的用户必须是文件或目录的所有者或超级用户

hadoop fs -chmod 700 /data/data.txt

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

7、chown

修改所有者,此命令的用户必须是超级用户

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/

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 -rmdir /test

33、-setrep

设置 HDFS 上的文件的目标副本数量

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 的数据。

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

HDFS 文件的读写流程

一、HDFS 写入流程

1、创建存放文件目录

mkdir /root/目录 cd /root/目录 vim 文件

2、客户端向NameNode请求上传文件

3、NameNode响应可以上传

4、文件创建完成后,客户端准备切割第一个数据块,向 NameNode申请该 Block 的副本存放节点列表

5、NameNode返回DN1,DN2,DN3节点,DN1→DN2→DN3,表示采用这三个节点存储数据

6、客户端请求建立Block传输通道,DN1,DN2,DN3应答成功

7、客户端将数据封装为 Packet 数据包,向DN1传输数据Packet,N1 落地本地磁盘,同时转发 Packet 给 DN2;DN2 落地后继续转发给 DN3

8、DN3 写完 Packet 后,反向逐级发送 ACK 确认包:DN3→DN2→DN1→客户端

9、客户端收到 ACK 后发送下一个 Packet,单个 Block 读取完成,循环传输所有数据块

10、全部数据块传输完成,客户端调用close()关闭输出流,通知 NameNode 文件上传完毕;NameNode 修改元数据,将文件状态标记为已完成,整个 HDFS 写入流程结束

二、HDFS 文件读取流程

1、客户端向 NameNode 发起读取文件请求

2、NameNode 校验权限与文件存在性,返回该文件所有 Block 及对应 DN 节点列表(就近排序)

3、客户端选取第一个 Block,连接距离最近的 DataNode

4、客户端从 DN 读取 Block 数据,同时校验数据完整性

5、若数据损坏,自动切换该 Block 其他副本 DN 重新读取

6、单个 Block 读取完成,继续循环读取后续所有 Block

7、全部数据读取完毕,客户端关闭连接,读取流程结束

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 4:28:01

3分钟让你的Windows拥有macOS同款优雅鼠标指针

3分钟让你的Windows拥有macOS同款优雅鼠标指针 【免费下载链接】macOS-cursors-for-Windows Tested in Windows 10 & 11, 4K (125%, 150%, 200%). With 2 versions, 2 types and 3 different sizes! 项目地址: https://gitcode.com/gh_mirrors/ma/macOS-cursors-for-Wind…

作者头像 李华
网站建设 2026/7/2 11:41:42

Python爬虫经典案例014:爬虫数据存储方案Redis——高性能键值数据库的缓存与队列艺术

一、引言 在爬虫开发中,Redis作为一种高性能的键值数据库,扮演着不可或缺的角色。它以其卓越的性能、丰富的数据结构和灵活的应用场景,成为爬虫系统中缓存、队列、分布式锁、去重等功能的首选方案。 Redis在爬虫中的主要应用场景: URL去重:存储已爬取的URL,避免重复请求…

作者头像 李华
网站建设 2026/7/2 21:32:41

Awesome Kotlin:一份 Kotlin 生态的全景资源清单

文章目录Awesome Kotlin&#xff1a;一份 Kotlin 生态的全景资源清单为什么需要这种仓库Libraries 分类最值得关注Applications 和 Samples其他资源Awesome Kotlin&#xff1a;一份 Kotlin 生态的全景资源清单 学 Kotlin 的人应该都听过 awesome 系列。GitHub 上有一类仓库&am…

作者头像 李华
网站建设 2026/7/1 4:25:05

计算机毕业设计之jsp基于用户喜好度的SSM动漫周边交易平台

本文介绍了一款使用SSM和JSP开发的动漫周边交易平台&#xff0c;及其设计与实现过程。根据软件工程对软件系统开发定制的规则和标准&#xff0c;详细的介绍了系统的分析与设计过程&#xff0c;并且详细的概括了系统的开发与测试过程。本文的管理系统使用了java进行系统的后端开…

作者头像 李华
网站建设 2026/7/1 4:24:35

2026年下半年量化入门,先拆学习表达开发验证

量化学习对零基础读者最不友好的地方&#xff0c;是它看起来没有明显起点。交易概念、代码、API 和验证同时出现时&#xff0c;人很容易以为自己必须一次学完全部内容。规则要先变得可检查更适合初学者的做法&#xff0c;是先把路径分成学习、表达、开发和验证。学习阶段回答“…

作者头像 李华
网站建设 2026/7/1 4:24:28

Sultan Bin Ahmed出席在西班牙举行的媒体硕士毕业典礼

沙迦副酋长兼沙迦大学&#xff08;UOS&#xff09;校长Sheikh Sultan bin Ahmed bin Sultan Al Qasimi殿下于周五在巴塞罗那大学出席了“媒体创业与数字创新理学硕士”项目首届毕业典礼。该项目为同类首创&#xff0c;由沙迦大学传播学院与巴塞罗那大学合作开设&#xff0c;并获…

作者头像 李华