学习 HDFS(一):概览

HDFS 是 Hadoop Distributed File System (Hadoop 分布式文件系统)的缩写,是 Hadoop 核心项目之一(另外两个分别是 YARN 和 MapReduce)。HDFS 提供了高容错、高吞吐、易扩展、高可用的文件系统。

架构

HDFS 是一个主从(Master/Slave)架构的分布式系统,由主节点 NameNode 和从节点 DataNode 构成。

HDFS Architecture

Data Block

HDFS 上的文件是以数据块(Data Block)的形式存储的,数据块是 HDFS 文件处理的最小单元。数据块会以文件的形式存储在 DataNode 节点的磁盘上。数据块默认大小是 128 MB,可以通过属性 dfs.blocksize 进行配置。

在 HDFS 上,文件会被切分为一个或多个数据块分布在 DataNode 节点上存储。同一个数据块会冗余存储在不同的 DataNode 节点上,默认副本数是 3,可以通过属性 dfs.replication 进行配置。

NameNode

NameNode 是 HDFS 的主节点,管理这文件系统的命名空间,包括:

  • 文件系统目录树
  • 文件/目录信息
  • 文件的数据块索引

这些信息以文件的形式保存在 NameNode 节点的磁盘上,即空间镜像 fsimage 文件和编辑日志 edits 文件。

DataNode

DataNode 是 HDFS 的从节点,根据客户端或 NameNode 写入数据块到本地存储,或读取本地存储上的数据块。