al+大数据每日学习笔记35

2026年9月9日

Hadoop中HDFS 架构与读写流程总结

一、HDFS 概述

HDFS(Hadoop Distributed File System)是Apache Hadoop生态的核心分布式文件系统,基于廉价商用硬件设计,具备高容错、高吞吐、可横向扩展、一次写入多次读取的核心特性。区别于传统本地文件系统,HDFS专为海量大数据集的流式读写、批量处理场景优化,放松了部分POSIX标准,极大提升了大数据场景下的数据读写性能,是大数据存储的基石组件。

HDFS 核心设计理念:移动计算比移动数据更划算。大数据场景中数据集体量极大,优先将计算任务调度至数据所在节点执行,减少网络传输开销,提升集群整体吞吐量。

二、HDFS 主从架构核心角色

HDFS 采用经典 Master/Slave 主从架构,集群核心分为三大角色,各司其职、解耦运行,从根本上保障集群稳定性与并发能力:

1. NameNode(主节点)

集群管理核心,仅负责维护文件元数据 (目录结构、文件名、权限、数据块ID、块对应DataNode节点地址、副本数),不存储任何真实业务数据。核心职责:处理客户端读写请求、校验操作权限、分配数据存储节点、维护文件块与节点的映射关系、记录集群元数据变更日志。

2. DataNode(从节点)

集群数据存储节点,是HDFS真正存储数据的载体。负责存储文件拆分后的Block数据块及副本,响应客户端读写请求,执行磁盘数据读写、数据校验;同时定时向NameNode发送心跳机制与块报告,上报自身运行状态与存储的所有数据块信息。

3. Client(客户端)

用户操作HDFS的入口,支持Shell命令、Java API等多种交互方式。核心功能:与NameNode交互获取元数据、与DataNode交互完成数据传输、文件分块、数据校验、缓存读写数据,是连接用户与HDFS集群的桥梁。

三、HDFS 文件写入流程(标准8步)

本文以本地文件 /root/gateway/records.txt 上传至HDFS集群为例,结合原理图梳理完整写入流程,同时补充底层核心机制:

1、客户端通过 DistributedFileSystem 模块向NameNode发起文件上传请求,请求上传 /root/gateway/records.txt

2、NameNode执行前置校验,检查客户端权限、目标文件是否存在、父目录是否合法,校验通过后响应客户端允许上传;

3、客户端向NameNode请求第一个Block(默认128M)的存储节点地址;

4、NameNode基于机架感知策略,返回DN1、DN2、DN3三个可用DataNode节点,用于存储3副本数据;

5、客户端通过 FSDataOutputStream 发起连接请求,DN1、DN2、DN3逐级调用,搭建流水线传输通道;

6、三个DataNode节点逐级向上应答客户端,确认传输通道搭建成功;

7、客户端将本地数据缓存至内存,以64KB Packet为最小传输单元推送数据,通过流水线逐级同步至三个节点,同时维护应答队列保障数据可靠;

8、单个Block传输完成后,重复上述步骤上传后续数据块,所有Block写入完毕后,客户端通知NameNode完成最终元数据落地,写入流程结束。

四、写入核心底层机制

1. Pipeline 流水线副本机制

HDFS写入不采用客户端多节点分别推送的模式,而是流水线同步模式。客户端仅向首个节点DN1传输数据,DN1接收Packet后立即同步至DN2,DN2同步至DN3。该机制大幅节省客户端带宽,提升多副本写入效率,是HDFS高吞吐的核心保障。

2. 机架感知与副本放置策略

副本放置直接决定集群可靠性与读写性能,默认3副本策略兼顾容错与效率:

  • 第一副本:客户端所在节点,客户端集群外则随机选取节点;

  • 第二副本:跨机架的随机节点,避免单机架故障导致数据丢失;

  • 第三副本:与第二副本同机架的不同节点,减少跨机架网络传输损耗。

该策略仅占用两个机架资源,在不降低数据可靠性的前提下,有效提升写入性能。

五、HDFS 文件读取流程(标准7步)

以读取HDFS文件 /car.txt 下载至本地 /root/car.txt 为例,完整读取流程如下:

1、客户端向NameNode发起请求,申请下载HDFS的 /car.txt 文件;

2、NameNode查询元数据,返回文件所有数据块列表、对应DataNode节点地址信息;

3、客户端遵循就近原则,选择最优DataNode节点,请求读取第一个数据块blk1;

4、目标DataNode从本地磁盘读取blk1数据,以Packet为单位流式传输给客户端;

5、blk1数据读取完成后,客户端继续请求读取第二个数据块blk2;

6、对应DataNode完成blk2数据传输,客户端接收并缓存数据;

7、所有数据块读取完毕,客户端关闭输入流,整合数据生成完整本地文件,读取流程结束。

六、读取核心机制与容错策略

  • 就近读取策略:优先同机架节点、其次同机房节点、最后跨机房节点,最小化网络延迟;

  • 数据完整性校验:以64KB Packet为传输单元,自带校验和,客户端接收数据后自动校验,避免网络、磁盘故障导致的数据损坏;

  • 自动容错重试:单个DataNode读取失败时,客户端自动切换至该数据块的副本节点继续读取,全程无感知故障。

七、读写流程核心总结

1、NameNode全程不参与真实数据传输,仅处理元数据交互,规避主节点性能瓶颈;

2、读写数据最小传输单元为Packet(64KB),文件存储分块单元为Block(128MB);

3、写流程核心是流水线副本同步,读流程核心是就近节点择优读取、副本容错;

4、HDFS遵循一次写入、多次读取模型,仅支持文件追加,不支持随机修改,适配大数据批量处理场景。

相关推荐
lvts_cs1 小时前
汽车零部件产业发展趋势,对地方招商工作带来的影响
大数据·人工智能·汽车
abcyuu1 小时前
福州中小企业业财一体化系统权限管理与数据安全实践方案
大数据·网络·数据库
小白说大模型1 小时前
去AI味提示词大全:25个实用Prompt帮你降低AI率
大数据·人工智能·pytorch·深度学习·机器学习·prompt
kyrie_sakura1 小时前
MySQL学习笔记4 -- select的7大子句,子查询
笔记·学习·mysql
UIU1142 小时前
补码运算与整数溢出(上
学习·c#·补码·补码运算
GIR1232 小时前
垫装式固态绝缘开关设备 行业地位与成长性研究报告:占有率跃升路径、收入增速与销量趋势
大数据
进阶的DW2 小时前
LLM上下文管理
笔记
huashengzsj2 小时前
渠道数据管理用什么工具 新零售渠道数据管理系统推荐
大数据·人工智能·零售
TMT星球2 小时前
松延动力推出具身智能子品牌Scalabot:让智能,在真实世界生长
大数据·人工智能