HDFS原理与架构设计 | 青训营笔记

73 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第8天

HDFS(Hadoop Distributed File System)

分布式存储系统的特点:

  • 容错能力:能够处理大部分异常场景
  • 一致性模型:多副本内容一致
  • 可扩展性:具备横向扩张的能力
  • 节点体系:主从模式、对等模式等,必须达到高可用的功能
  • 数据放置:多个副本数据存放的策略
  • 单机存储引擎:数据落盘持久化,单机引擎解决如何高效存取硬盘数据

HDFS作为分布式文件系统,具备分布式、容错、高可用、高吞吐、可扩展、适用廉价设备的功能特性。

架构原理

image.png

写流程

image.png

读流程

image.png

元数据节点 NameNode

  • 维护目录树
  • 维护文件和数据块的关系
  • 维护文件块存放的节点信息
  • 分配新文件存放节点

数据节点 DataNode

  • 数据块存取
  • 心跳汇报
  • 副本复制

关键设计

NameNode维护目录树:

  • fsimage:文件系统目录树,完整存放在内存中,定时存放到硬盘上,修改只修改内存中的目录树
  • EditLog:目录树的修改日志,目录树更新要持久化EditLog才算更新成功

NameNode数据放置:

  • 数据块信息维护
    • 目录属保存每个文件的块id
    • NameNode维护了每个数据块所在的节点信息
    • NameNode根据DataNode汇报的信息动态维护位置信息
    • NameNode不会持久化数据块位置信息
  • 数据放置策略
    • 新数据从南方到哪些节点
    • 数据均衡怎么合理搬迁数据
    • 3个副本怎么合理放置

DataNode数据块存取:

  • 文件在NameNode分割成block
  • DataNode以block为单位对数据进行存取

DataNode启动扫盘:

  • DataNode需要知道本机存放了哪些数据块
  • 启动时把本机硬盘上的数据块列表加载到内存

写异常处理:

  • Lease Recovery
  • Pipeline Recovery

读异常处理:

  • 节点Failover

旁路系统:

  • Balancer:均衡DataNode的容量
  • Mover:确保副本放置符合策略要求

控制面建设:

  • 可观测性设施
  • 运维体系建设