HDFS架构原理| 青训营笔记
这是我参与「第四届青训营 」笔记创作活动的的第14天
架构原理
HDFS组件
三大组件
- Client/SDK:即从某台机器访问,该机器为Client,例如命令行,其次就是SDK(程序会通过SDK访问HDFS)
- Namenode(HDFS的中枢结点)负责元数据管理
- datanode(所有用户的数据,最终都是持久化存放到用户的硬盘上的,也就是说用户数据最终并没有存在namenode上,是通过一系列的方式把它传送传输到datanode上,再存放到它本身的一个硬盘)
在实际生产中,namenode数量不多一般只有几个,但datanode以万次级。
Client写流程
从简单的命令行输入开始: SDK的作用就是如何将一个文件写入HDFS
在一个命令行中,发生了许多RPC请求
- 在步骤2.Client与namenode进行交互,询问有哪些结点可以写入,namenode有三个副本,从datanode中选择三块传递
- 然后客户端开始与第一个datanode发起建立连接
Client读流程
对比读写流程后发现: 当客户端在做这种io操作时,其实都是需要去问namenode,只有namenode告诉这些块的位置,无论是写入的目标定义,还是读的位置,都是需要通过namenode去获取的
元数据节点NameNode
- 维护目录树 维护目录树的增删改查操作,保证所有修改都能持久化,以便机器掉电不会造成数据丢失或不一致。
- 维护文件和数据块的关系 文件被切分成多个块,文件以数据块为单位进行多副本存放
- 维护文件块存放节点信息 通过接收DataNode的心跌飞汇报信愿,维护集群节点的拓扑结构和每个文件块所有副本所在的DataNode类表。
- 分配新文件存放节点 Client创建新的文件时候,需要有NameNode来确定分配目标DataNode
数据节点DataNode
数据块存取 DataNode需要高效实现对数据块在硬盘上的存取
- 对于数据块本身的IO行为都是直接与DataNode进行交互的
心跳汇报 把存放在本机的数据块列表发送给NameNode,以便NameNode能维护数据块的位置信息,同时让NameNode确定该节点处于正常存活状态
副本复制 1.数据写入时Pipeline lO操作
2.机器故障时补全副本

浙公网安备 33010602011771号