大数据 -07-HDFS 集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件

点一下关注吧!!!非常感谢!!持续更新!!!
🚀 AI 篇持续更新中!(长期更新)
目前 2025 年 06 月 05 日更新到:
**AI 炼丹日志-28 - Audiblez 将你的电子书 epub 转换为音频 mp3 做有声书**,持续打造实用 AI 工具指南!📐🤖
💻 Java 篇正式开启!(300 篇)
目前 2025 年 06 月 05 日更新到:
**Java-39 深入浅出 Spring - AOP 切面增强 核心概念 通知类型 XML+注解方式 附代码**
MyBatis 已完结,Spring 正在火热更新中,深入浅出助你打牢基础!
📊 大数据板块已完成多项干货更新(300 篇):
包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!
目前 2025 年 06 月 05 日更新到:
**大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT 案例 详解**
👉 点个关注,不迷路!后续还将持续更新更多大模型+数据智能+工程实战内容,敬请期待!
章节内容
上一节完成:
Hadoop 历史服务器配置
Hadoop 历史日志聚集
Hadoop 历史日志可视化
2C4G 编号 h121
2C4G 编号 h122
2C2G 编号 h123

请确保上一章节已经全部跑通!
HDFS 简介
HDFS (全称:Hadoop Distribute File System
,Hadoop 分布式文件系统)是 Hadoop 核心组成,是分布式存储服务。分布式文件系统横跨多台计算机,在大数据时代有着广泛的应用前景,它们为存储和处理超大规模数据提供所需的扩展能力。
HDFS
是分布式文件系统
中的一种。
HDFS
通过统一的命名空间目录树
来定位文件; 另外,它是分布式
的,由很多服务
器联合起来实现。集群中的服务器有各自的角色
。
典型的
Master/Slave
架构 集群往往是 一个NameNode + 多个DataNode
(HA
下是2个NameNode
)NameNode 是主节点,DataNode 是从节点。分块机制(
block机制
)HDFS 中是按分块存储的,Hadoop2.x 版本默认
是128MB
一块命名空间(
NameSpace
)支持传统的文件组织结构,用户或程序可以创建目录,将文件保存到文件夹中。NameNode
负责维护
文件系统的名字空间,所有操作
都会被NameNode记录
下来。NameNode 元数据管理,元数据中记录
每一个文件对应的block信息
DataNode 数据存储,文件的
各个block
具体由DataNode节点承担
,一个 block 会由多个 DataNode 进行存储。DataNode
定时向NameNode
来汇报自己的信息。副本机制。为了容错,每个 block 都有自己的
副本
。每个文件的 block 大小和副本系数都是可以配置
的。副本系数可以在创建文件的时候指定,也可以在之后改变,副本数量默认是3个
。一次写入,多次写出。
HDFS 设计成一次写多次读的场景。且不支持修改,支持追加写入,但是不能随机写更新。
具体的组成结构如下图:

NameNode
NameNode
(nn)HDFS集群
的管理
者,Master
维护管理
HDFS 的名称空间 NameSpace维护副本
策略记录
文件块Block
的映射信息负责
处理客户端
的读写请求
DataNode
NameNode
下达命令
,DataNode
执行实际操作
,Slave
。
保存
实际
的数据
块负责
数据块的读写
Client
上传文件到 HDFS 的时候,Client 负责将文件
切分成Block
,然后进程上传。请求
NameNode交互
,获取文件的位置信息读取或写入文件,
与DataNode交互
Client 可以使用一些命令来管理 HDFS 或者访问 HDFS

HDFS 读数据

客户端 Distributed FileSystem
向 NameNode请求下载文件
,NameNode 通过查询元数据
,找
到文件块所在的DataNode
地址。挑
选一台DataNode
(就近选择,然后随机),请求读
取数据DataNode开始传输
数据给客户端,从磁盘里读取数据输入流,以 Packet 单位来做校验。客户端以 Packet 为单位接收,
先
在本地缓存
,然后写入
目标文件。
HDFS 写数据

客户端通过 Distributed FileSystem 模块
向NameNode请求
上传文件,NameNode检查
目标文件是否已存在
,父目录是否存在。NameNode
返回
是否可以上传客户端请求
第一个Block
上传到哪几个DataNode服务器
NameNode 返回 3 个 DataNode 节点,分别为
dn1, dn2, dn3
客户端通过 FSDataOutputStream 模块请求上传 dn1,dn1 接到请求后会
继续调用
dn2,dn2 再调用 dn3。然后 dn1,dn2、dn3逐级应答
客户端。客户端开始往 dn1 上传第一个 Block(先从磁盘读取数据放到一个本地缓存),以 Packet 为单位,dn1 收到一个 Packet 就传给 dn2,dn2 给 dn3,dn1 每传一个 Packet 会
放入
一个确认队列
等待确认。当一个 Block 传输完成之后,客户端
再次请求
NameNode 上传第二个
Block 的服务器
HDFS 的应用场景
大数据处理:如 Hadoop MapReduce、Spark 等大数据处理框架,通常需要处理大量结构化和非结构化数据,而 HDFS 提供了大规模数据存储的基础。
数据存档:HDFS 适合用于存储企业的大数据备份、归档文件,因为其具备高容错和高吞吐的特点。
日志存储与分析:HDFS 适用于存储和管理日志数据,很多公司会把日志数据直接导入 HDFS,然后进行分布式计算和分析。
HDFS 集群的管理
HDFS 作为 Hadoop 生态中的核心组件,为大规模数据存储和处理提供了可靠的基础设施。它采用了分布式的存储方式,具有高容错性和可扩展性,非常适合批处理大数据分析任务。尽管它在小文件处理和实时更新方面存在一定的限制,但 HDFS 依然是目前广泛应用于数据密集型行业的数据存储解决方案。
配置管理:集群管理员需要配置文件系统的路径、副本数、块大小、DataNode 数量等。通常使用 hdfs-site.xml 和 core-site.xml 来配置 HDFS 参数。
监控和维护:HDFS 提供了多种监控工具,如 Hadoop 的 Web UI,通过它可以监控节点的状态、查看元数据和数据块的分布情况。
容灾与备份:可以通过设置备份 NameNode 或使用分布式的文件系统管理来实现灾难恢复。同时,还可以定期备份 HDFS 的数据。
版权声明: 本文为 InfoQ 作者【武子康】的原创文章。
原文链接:【http://xie.infoq.cn/article/71b91e92358d5c527a5857a14】。文章转载请联系作者。
评论