Skip to content

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 优先将数据存储在靠近计算节点的位置,减少网络传输开销。