这是我参与「第四届青训营」笔记创作活动的第十天。
HDFS基本概念
特性
- 分布式
- 容错
- 高可用
- 高吞吐
- 可扩展
- 廉价
HDFS架构
核心组件
Client/SDK
client写流程
client读流程
NameNode
- 维护目录树,维护目录树的增删改查操作,保证所有修改都能持久化,以便机器掉电不会造成数据丢失或不一致。
- 维护文件和数据块的关系,文件被切分成多个块,文件以数据块为单位进行多副本存放。
- 维护文件块存放节点信息通过接收DataNode的心跳汇报信息,维护集群节点的拓扑结构和每个文件块所有副本所在的DataNode类表。
- 分配新文件存放节点,Client创建新文件时为它分配目标DataNode 目录树
- fsimage:文件系统目录树,存储在内存中,定时存储到硬盘
- EditLog:目录树修改日志,client修改目录树需持久化EditLog后才算更新成功,可存储在本地或专用系统上
数据块信息维护 目录树保存了每个文件的块id,NameNode依据DataNode的信息动态维护位置信息,且不会持久化位置信息、
DataNode
- 数据块存取
- 心跳和汇报
- 副本复制
硬盘存放:DataNode以block为单位对数据进行存取
启动扫盘:
HDFS异常处理
lease recovery
异常:client挂了 可能造成副本版本不一致;lease无法释放
client要修改数据时会通过NameNode获取锁,即lease租约
lease recovery:超过一定时间没有续租,则认为client死亡
Pipeline recovery
DataNode 侧出现异常挂掉了;
client读取失败
Client读取文件时DataNode挂了
节点failover
HDFS旁路系统
- Balancer
- Mover
控制面建设
- 可观测性设施
- 指标埋点
- 访问日志
- 数据分析
- 数据采集
- 运维体系建设