HDFS 核心组件深度解析:分布式文件系统架构
引言
Hadoop 分布式文件系统(HDFS)是整个大数据生态的存储基石。它的设计目标是在廉价硬件上存储海量数据,并提供高吞吐量的数据访问。理解 HDFS 的核心组件及其协作机制,是掌握 Hadoop 技术体系的关键。
一、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 在内存中维护了高效的数据结构,支持快速的文件系统操作。以下是简化后的核心数据结构示例:
public class FSNamesystem {
// 1. 目录树结构(INode 层次结构)
private INodeDirectory rootDir;
// 2. 文件到块的映射
Map<Long, INodeFile> inodeMap;
BlocksMap blocksMap;
Map<String, DatanodeDescriptor> datanodeMap;
}


