Hdfs基础知识 | 青训营笔记
这是我参与「第四届青训营 」笔记创作活动的第1天
-
功能特性
- 分布式
- 容错
高可用
- 一主多备模式实现元数据高可用,数据多副本实现用户教据的高可用
高吞吐
- Client直接从DataNode读取用户数据,服务端支持海量client并发读写
可扩展
- 支持联邦集群模式
廉价
- 只需要通用硬件,不需要定制高端的昂贵硬件设备
-
架构组成
\
-
元数据节点NameNode
维护目录树
- 维护目录树的增删改查操作,保证所有修改都能持久化,以便机器掉电不会造成数据丢失或不—致。
- 维护文件和数据块的关系
文件被切分成多个块,文件以数据块为单位进行多副本存放
维护文件块存放节点信息
- 通过接收DataNode的心跳汇报信息,维护集群节点的拓扑结构和每个文件块所有副本所在的DataNode类表。
分配新文件存放节点
- Client创建新的文件时候,需要有NameNode来确定分配目标DataNode
\
fsimage
- 文件系统目录树
- 完整的存放在内存中
- 定时存放到硬盘上
- 修改只会修改内存中的目录树
\
EditLog
- 目录树的修改日志
- client更新目录树需要持久化EditLog后才能表示更新成功
- EditLog可存放在本地文件系统,也可以放在专用系统上
- NN HA方案一个关键点就是如何实现EditLog共享
\
实战
Hadoop之HDFS03【NameNode工作原理】_波波烤鸭的博客-CSDN博客
-
数据节点Datanode
数据块存取
- 需要高效实现队数据块在硬盘上的存取
心跳汇报
- 把存放在本机的数据块列表发送给Namenode,以便NN能维护数据块的位置信息,同时让NN确定该节点处于正常存活状态
副本复制
- 数据写入时Pipeline IO操作
- 机器故障时补全副本
\
数据快信息维护
- 目录树保存每个文件的块id
- NN维护了每个数据块所在的节点信息
- NN根据DN汇报的信息动态维护位置信息
- NN不会持久化数据块位置信息
\
数据的放置策略
新数据存放到哪些节点
数据均衡需要怎么合理搬迁数据
三个副本怎么合理放置
\
数据块的硬盘存放
文件在NN已分割为block
DN以blocd对单位进行存取