HDFS原理与应用| 青训营笔记

132 阅读2分钟

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

HDFS

简单介绍

  • HDFS全称为 Hadoop Distributed File System

功能特性

分布式 容错 高可用 高吞吐 可扩展 廉价

基础概念

HDFS组件

  • Client/SDK 读写操作的发起点,HDFS很多读写逻辑都是在SDK中实现的。
  • NameNode:元数据节点,是HDFS的中枢节点,也是服务的入口。
  • DataNode:数据节点,存放实际用户数据。

写流程

image.png

读流程

image.png

元数据节点NN

  • 维护目录树
  • 维护文件和数据块的关系
    • 文件以数据块为单位,进行多副本存放
  • 维护文件块存放节点信息
    • 接收DataNode的心跳汇报新信息,维护集群节点的拓扑结构和每个文件块所有副本所在的DataNode类表
  • 分配新文件存放节点

数据节点DN

  • 数据块存取
  • 心跳汇报
    • 把存放本机的数据列表发送给NameNode,以便NameNode的维护数据块的位置信息,同时让NameNode确定该节点处于正常存活状态
  • 副本复制
    • 数据写入时Pipeline IO操作
    • 机器故障时补全副本

三、关键设计

基本概念

  • 容错能力
  • 一致性模型
  • 可扩展性
  • 节点体系
  • 数据放置
  • 单机存储引擎

NameNode

目录树维护

  • fsimage
    • 文件系统目录树
    • 完整的存放的内存中
    • 顶点存放到硬件上
    • 修改是只会修改内存中的目录树
  • EditLog
    • 目录树的修改日志
    • client更新目录树需要持久化EditLog后才能表示更新成功
    • EditLog可存放在本地系统,也可存放在专用系统
    • NameNode HA方案一个关键点就是实现EditLog共享

数据放置

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

DataNode

数据块的硬盘存放

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

启动扫盘

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

HDFS写异常处理

Lease Recovery

image.png

Pipeline Recovery

image.png

Client读异常

image.png

旁路系统

image.png

控制面建设

image.png