HDFS常用命令总结

1. HDFS简介

HDFS(Hadoop Distributed File System)是一种Hadoop分布式文件系统,具备高度容错特性,支持高吞吐量数据访问,可以在处理海量数据(TB或PB级别以上)的同时最大可能的降低成本。HDFS适用于大规模数据的分布式读写,特别是读多写少的场景。

HDFS是经典的Master和Slave架构,其关键组件包括:

  1. NameNode(名称节点):它是HDFS的主服务器,负责管理文件系统的命名空间和客户端对文件的访问。NameNode执行文件系统的命名操作,如打开、关闭、重命名文件或目录。它不存储实际数据,但维护文件系统树及元数据(metadata)的所有信息,如文件的权限、文件的位置等信息。对于文件内容的修改也是首先通过NameNode进行协调。

  2. DataNode(数据节点):在HDFS中,实际的数据被存储在DataNode上。这些节点根据NameNode的指示存储和检索数据块(block),并定期向NameNode报告它们所持有的数据块的列表。DataNode是HDFS的工作节点,负责处理文件系统客户端的读写请求。在HDFS中,文件被分割成一个或多个数据块,这些数据块存储在一个或多个DataNode上。

  3. 块(Block):HDFS将文件分割成块大小的多个片段,每个块默认为128MB(在早期版本中为64MB)。这样做的目的是便于在网络中分布式传输,提高系统的可靠性和效率。每个数据块在多个DataNode上有多个副本(默认情况下是三个),以实现容错。

📝 每一个HDFS集群包括一个NameNode和多个DataNode。NameNode管理所有文件的元数据信息,并且负责与客户端交互。DataNode负责管理存储在该节点上的文件。每一个上传到HDFS的文件都会被划分为一个或多个数据块,这些数据块根据HDFS集群的数据备份策略被分配到不同的DataNode上,位置信息交由NameNode统一管理。

HDFS的特点如下:

  • 容错性:通过在多个DataNode上复制数据块,HDFS能够保证在某个节点失败时数据的可用性和系统的持续运行。
  • 高吞吐量:HDFS能够提供高数据吞吐量,适合于处理大量数据集。
  • 适合批处理操作:HDFS支持大文件的存储,并且最适合一次写入、多次读取的场景。
  • 可扩展性:HDFS可以通过添加更多的硬件来轻松扩展其存储能力。
  • 跨平台兼容性:HDFS支持在多种操作系统上运行,提高了其可用性。

当客户端需要读取或写入数据时,它首先与NameNode通信以获取数据块所在的DataNode地址。对于写操作,NameNode还将决定将数据块放在哪些DataNode上。一旦客户端获得了这些信息,它就可以直接与DataNode通信来读取或写入数据,这样设计是为了减轻NameNode的负担,使得数据传输效率更高。

2. hdfs dfs

HDFS提供了一套强大的命令行工具,通过这些工具,用户可以执行从基本的文件操作到复杂的集群管理任务。以下是在管理HDFS时最为常用的几个子命令,它们代表了与HDFS交互的基础和核心:

  • dfs: 此命令是与HDFS进行日常文件操作的基石,涵盖了文件上传、下载、删除以及目录创建和列举等功能。通过 hdfs dfs 命令,用户可以轻松地在HDFS中导航和管理数据,使其成为数据工程师日常工作的重要组成部分。

  • fsck: 对于确保数据的完整性和系统的可靠性至关重要,hdfs fsck 提供了一种强大的机制来对HDFS进行健康检查。它允许管理员识别和修复文件系统中的问题,保障数据的安全和访问的稳定性。

  • dfsadmin: 管理HDFS集群的高级功能通过 hdfs dfsadmin 命令实现,它使得管理员能够执行如报告集群状态、管理数据节点和调整配置参数等关键任务。这个命令是集群维护的核心,提供了对集群运行状况的全面控制。

  • balancer: 在分布式环境中,保持数据的均衡分布是提高效率和优化资源使用的关键。hdfs balancer 命令自动调整数据在集群内的分布,确保负载均衡,从而维持集群的高性能运行。

  • version: 在进行系统升级、故障排查时,了解当前Hadoop集群的版本信息是非常有用的。hdfs version 命令快速提供了这一信息,包括详细的版本号、构建日期和源码版本控制详情,对于管理员和开发者来说是一个不可或缺的工具。

在所有 hdfs 子命令中,dfs 子命令可能是最频繁使用的。这是因为 hdfs dfs 命令提供了与HDFS中存储的数据进行日常交互的基础功能,包括文件上传(-put)、下载(-get)、列出目录内容(-ls)、删除文件(-rm)以及创建目录(-mkdir)等操作。这些操作是数据工程师、系统管理员和开发者在使用Hadoop处理和管理数据时的常规需求。

因此,本文只介绍 hdfs dfs 的常用命令,对于其他子命令,读者可自行查阅资料。

⚠️ FS(File System)是文件系统,DFS(Distributed File System)是分布式文件系统,显然FS > DFS,所以在分布式的环境下,FS和DFS无区别,hadoop fshdfs dfs 命令等价。注意,hadoop fs 可以操作任何文件系统,而 hdfs dfs 只能操作HDFS文件系统。


命令作用
hdfs version查看版本
hdfs dfs -help获取帮助
hdfs dfs -ls <path>查看指定路径下的所有文件
hdfs dfs -mkdir <path>创建目录
hdfs dfs -rm <path>删除文件或者目录(删除目录需要加上 -r
hdfs dfs -get <hdfs_path> <local_path>从HDFS下载文件到本地
hdfs dfs -put <local_path> <hdfs_path>从本地上传文件至HDFS
hdfs dfs -cat <file>查看文件内容
hdfs dfs -mv <source> <target>移动或重命名文件
hdfs dfs -cp <source> <target>拷贝文件
hdfs dfs -find <path> -name <file>在指定路径中查找文件
hdfs dfs -cp <source> <target>拷贝文件
hdfs dfs -touchz <file>创建一个空文件
hdfs dfs -du -h <path>显示文件的大小或者目录中所有文件的大小
hdfs dfs -chmod 777 <path>改变文件或目录的权限(777 只是一个示例)
hdfs dfs -df -h显示HDFS的容量和使用情况

Ref

[1] https://bbs.huaweicloud.com/blogs/218061
[2] https://www.hadoopdoc.com/hdfs/hdfs-shell
[3] https://help.aliyun.com/zh/emr/emr-on-ecs/user-guide/common-commands-of-hdfs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Iareges

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值