Hdfs基础知识 | 青训营笔记

121 阅读2分钟

Hdfs基础知识 | 青训营笔记

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

  1. 功能特性

  • 分布式
  • 容错
  • 高可用

    • 一主多备模式实现元数据高可用,数据多副本实现用户教据的高可用
  • 高吞吐

    • Client直接从DataNode读取用户数据,服务端支持海量client并发读写
  • 可扩展

    • 支持联邦集群模式
  • 廉价

    • 只需要通用硬件,不需要定制高端的昂贵硬件设备
  1. 架构组成

\

  1. 元数据节点NameNode

  • 维护目录树

    • 维护目录树的增删改查操作,保证所有修改都能持久化,以便机器掉电不会造成数据丢失或不—致。
  • 维护文件和数据块的关系

文件被切分成多个块,文件以数据块为单位进行多副本存放

  • 维护文件块存放节点信息

    • 通过接收DataNode的心跳汇报信息,维护集群节点的拓扑结构和每个文件块所有副本所在的DataNode类表。
  • 分配新文件存放节点

    • Client创建新的文件时候,需要有NameNode来确定分配目标DataNode

\

fsimage

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

\

EditLog

  • 目录树的修改日志
  • client更新目录树需要持久化EditLog后才能表示更新成功
  • EditLog可存放在本地文件系统,也可以放在专用系统上
  • NN HA方案一个关键点就是如何实现EditLog共享

\

实战

Hadoop之HDFS03【NameNode工作原理】_波波烤鸭的博客-CSDN博客

  1. 数据节点Datanode

  • 数据块存取

    • 需要高效实现队数据块在硬盘上的存取
  • 心跳汇报

    • 把存放在本机的数据块列表发送给Namenode,以便NN能维护数据块的位置信息,同时让NN确定该节点处于正常存活状态
  • 副本复制

    • 数据写入时Pipeline IO操作
    • 机器故障时补全副本

\

数据快信息维护

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

\

数据的放置策略

新数据存放到哪些节点

数据均衡需要怎么合理搬迁数据

三个副本怎么合理放置

\

数据块的硬盘存放

文件在NN已分割为block

DN以blocd对单位进行存取