HDFS
HDFS(Hadoop Distributed File System)是 Hadoop 的分布式文件系统,具有高容错性和高吞吐量的特点。
概述
HDFS 是为大规模数据存储和处理而设计的分布式文件系统,主要特点包括:
- 高容错性: 数据自动复制到多个节点
- 高吞吐量: 适合大规模数据读写
- 可扩展性: 支持水平扩展到数千个节点
- 数据本地性: 计算向数据移动,减少网络传输
架构组成
NameNode
NameNode 是 HDFS 的主节点,负责管理文件系统的命名空间和元数据:
- 维护文件系统树和目录结构
- 记录文件与数据块的映射关系
- 管理 DataNode 的状态
DataNode
DataNode 是 HDFS 的从节点,负责存储实际的数据块:
- 存储和检索数据块
- 向 NameNode 汇报状态
- 执行数据块的复制
Secondary NameNode
Secondary NameNode 定期合并 NameNode 的 edit log 和 fsimage:
java
// HDFS 文件写入流程
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
Path path = new Path("/user/hadoop/example.txt");
FSDataOutputStream out = fs.create(path);
out.write("Hello, HDFS!".getBytes());
out.close();
fs.close();核心概念
数据块
HDFS 将文件分割成固定大小的数据块进行存储,默认块大小为 128MB。
副本机制
每个数据块默认复制 3 份:
- 一份存放在本地节点
- 一份存放在同一机架的不同节点
- 一份存放在不同机架的节点
数据本地性
HDFS 优先将数据存储在靠近计算节点的位置,减少网络传输开销。