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

61 阅读3分钟

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

这是我参与「第四届青训营 -大数据场」笔记创作活动的的第4篇笔记

HDFS的构成

分布式文件系统的特点:

  • 大容量

    机器数量多,存储空间大

  • 高可靠

    多个副本提高容错能力

  • 低成本

    不需要高端硬件扩展

HDFS功能特性

  1. 分布式

    java语言实现的GFS的开源版本

  2. 容错

    自动处理,规避多种错误场景

  3. 高可用

    一主多备份实现元数据的高可用,数据多副本实现用户数据的高可用

  4. 高吞吐

    Client直接从DN读取用户数据

  5. 可扩展

    支持联邦集群模式

  6. 廉价

    不需要高端的硬件设备

架构原理

Name Node(元数据节点)

目录树:

Z%`N7~N22WMJRGJ0CF$F)P7.png

功能:

1.维护目录树

维护目录树的增删改查操作,保证所有修改可持久化

防止机器掉电造成数据丢失或不一致

2.维护文件和数据块的关系

文件被切分为多个块,文件一数据块为单位进行多副本存储

3.维护文件块存放结点信息

通过接收DN的心跳汇报信息,维护集群结点的拓扑结构和每个文件所有副本所在的DN类表

4.分配新文件存放节点

Client创建新文件时,需要NN确定分配目标DN

Data Node(元数据节点)

数据块存取

心跳汇报

将存放在本机的数据块列表发送给NN,NN维护数据块的位置信息(因为NN存放元数据信息),同时让NN确定该节点处于正常存活状态

副本复制

数据写入时进行pipeline

机器故障补全副本

关键设计

1.容错(能处理绝大多数异常场景)

2.一致性模型(数据多副本存放,保障多个副本内的内容一样)

3.可扩展

4.节点体系 (保障高可用)

5.数据放置(因为数据多副本,系统多节点,数据放置的合理策略)

6.单机存储引擎(根据系统特点,高效存取硬盘数据)

目录树维护

1.fsimage

  • 文件系统目录树
  • 完整的存放在内存中
  • 定时存放到硬盘中
  • 修改只会修改内存的目录树

2.Edit log

  • 目录树的修改日志
  • client更新目录树需要持久化editlog
  • editlog可存放在本机或者专用系统

NN数据放置

数据块信息维护

  • 目录树保存每个文件的块id
  • NN维护了每个数据块所在的节点信息
  • NN根据DN汇报的信息动态维护位置信息
  • NN不会持久化数据块位置信息

HDFS异常处理

1.租约

Client要修改一个文件时,需要通过NN上锁,此锁为租约

可能写文件时client挂掉

导致副本不一致、锁无法释放

解决办法:释放锁

2.pipeline recovery

写入时DN端挂掉了

3.Client读异常

读取文件位置时,DN端挂掉了