You need to enable JavaScript to run this app.
导航
使用说明
最近更新时间:2025.04.01 20:13:39首次发布时间:2024.11.12 16:54:07
我的收藏
有用
有用
无用
无用

概述

HDFS 全称为 Hadoop Distributed File System,是业界应用最为广泛的开源分布式文件系统。它具备较高的容错性,能够提供高吞吐量的数据访问,尤其适用于大规模数据集上的应用。HDFS 提供了一种高度容错且高吞吐量的海量数据存储解决办法。

HDFS架构

HDFS 采用 master/slave 架构。一个 HDFS 集群通常由一个 NameNode 和若干 DataNode 组成。在考虑 NameNode 高可用时,还会有一个 SecondaryNameNode 负责做元数据的 checkpoint。
Image

名词解释

参数名词

解释说明

NameNode

是整个文件系统的管理节点:

  • 它维护着整个文件系统的文件目录树、文件/目录的元信息以及每个文件对应的数据块列表。
  • 它用于接收用户的操作请求,例如文件的打开、关闭、重命名文件或者目录。
  • 它负责确定文件到 block 的映射,以及 block 到具体 DataNode 的映射。

SecondaryNameNode

HdfsHA 的一个解决方案,但不支持热备。
Hadoop 会维护一个 fsimage 文件,也就是 namenode 中 metedata 的镜像,然而 fsimage 不会随时与 namenode 内存中的 metedata 保持一致,而是每隔一段时间通过合并 edits 文件来更新内容。
Secondary namenode 就是用于合并 fsimage 和 edits 文件以更新 NameNode 的 metedata。

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

FsImageNameNode 的元数据存储快照,持久化在 NameNode 的本地磁盘上。