HDFS 全名 Hadoop Distributed File System,是业界使用最广泛的开源分布式文件系统。它有一定高度的容错性,而且提供了高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS 提供了一个高度容错性和高吞吐量的海量数据存储解决方案。
HDFS 采用 master/slave 架构。一个 HDFS 集群通常由一个 NameNode 和若干 DataNode 组成。在不考虑 NameNode 高可用时,还会有一个 SecondaryNameNode 来负责做元数据的 checkpoint。
参数名词 | 解释说明 |
---|---|
NameNode | 是整个文件系统的管理节点:
|
SecondaryNameNode | Hdfs HA 的一个解决方案,但不支持热备。 |
Client | 客户端代表用户通过与 NameNode 和 DataNode 交互来访问整个文件系统,HDFS 对外开放文件命名空间并允许用户数据以文件形式存储。用户通过客户端(Client)与 HDFS 进行通讯交互。 |
DataNode | DataNode 是 HDFS 的实际数据存储节点,负责管理它所在节点的存储,客户端的读写请求。定期上报心跳 (Heartbeat) 和块的存储位置信息 (Blockreport) 。DataNode 在 NameNode 的指令下进行数据块的创建、删除、复制。 |
Block | HDFS 上一个大文件如果大于配置的 blocksize(默认是128MB),会被分成多个数据块 (block) 存储,这些数据块会分散存储在不同的 DataNode 上。 |
EditLog | 在 HDFS 发起的创建、删除等操作其实是一个事务,NameNode 会使用事务日志 (EditLog) 来记录文件系统元数据的每一个变化。EditLog 持久化在 NameNode 的本地磁盘上。 |
FsImage | FsImage 是 NameNode 的元数据存储快照,持久化在 NameNode 的本地磁盘上。 |