引言:HDFS——大数据的存储基石
Hadoop 分布式文件系统(HDFS)是整个 Hadoop 生态系统的存储基石,设计目标是在廉价硬件上存储海量数据,并提供高吞吐量的数据访问。理解 HDFS 的核心组件及其作用,是掌握 Hadoop 技术体系的基础。
本文将深入剖析 HDFS 的架构设计,详细解读每个组件的职责、协作机制及其在大数据处理中的关键作用。
一、HDFS 架构全景
1.1 主从架构设计
HDFS 采用经典的主从(Master/Slave)架构,由一组核心组件协同工作:
- NameNode:元数据管理
- Secondary NameNode:Checkpoint 辅助
- DataNode:数据存储与读写
- 客户端应用:读/写请求
1.2 核心组件概览
| 组件 | 数量 | 职责 | 高可用方案 |
|---|---|---|---|
| NameNode | 1 个(主) | 元数据管理、命名空间维护 | Active/Standby HA |
| DataNode | 多个 | 数据块存储、读写服务 | 多副本冗余 |
| Secondary NameNode | 1 个 | Checkpoint 辅助 | 仅限非 HA 集群 |
| JournalNode | 3/5/7 个 | HA 日志存储 | 奇数节点部署 |
| ZKFC | 每个 NameNode 一个 | 故障转移控制 | 与 NameNode 同节点 |
二、NameNode:HDFS 的大脑
2.1 核心职责
NameNode 是整个 HDFS 的核心控制节点,负责所有元数据的管理和决策:
| 职责 | 说明 | 重要性 |
|---|---|---|
| 元数据管理 | 维护文件系统树(文件和目录) | 整个 HDFS 的基础 |
| 命名空间维护 | 记录文件名、权限、所有者等信息 | 保障数据组织结构 |
| 数据块映射 | 记录文件到块的映射及块的位置信息 | 读写操作的关键 |
| 客户端请求入口 | 处理所有元数据操作请求 | 控制面核心 |
| DataNode 管理 | 接收心跳,监控节点健康 | 故障检测基础 |
2.2 元数据存储结构
NameNode 在内存中维护了高效的数据结构,支持快速的文件系统操作:
{
INodeDirectory rootDir;
Map<Long, INodeFile> inodeMap;
BlocksMap blocksMap;
Map<String, DataNodeDescriptor> datanodeMap;
}


