HDFS架构原理 | 青训营笔记

124 阅读3分钟

这是我参与【第四届青训营】笔记创作的第1天。

1.HDFS组件

1)从某台机器访问HDFS,这台机器就是client,命令行就是client

2)NameNode:中枢节点,三大件最为复杂的,元数据管理

3)DataNode:所有用户的数据持久化存储在DataNode硬盘上。

接下来具体介绍三大组件的具体作用如下:

1、NameNode(nn):就是Master,它是一个 管理者。

1 )管理 HDFS 的名称空间;

2 )配置副本策略;

3 )管理数据块( Block )映射信息;

4 )处理客户端读写请求。

2、 DataNode :就是 Slave 。 NameNode 下达命 令, DataNode 执行实际的操作。

1 )存储实际的数据块;

2 )执行数据块的读 / 写操作

3、 Client :就是客户端。

1 )文件切分。文件上传 HDFS 的时候, Client 将文件切分成一个一个的 Block ,然后进行上传;

2 )与 NameNode 交互,获取文件的位置信息;

3 )与 DataNode 交互,读取或者写入数据;

4 ) Client 提供一些命令来管理 HDFS ,比如 NameNode 格式化;

5 ) Client 可以通过一些命令来访问 HDFS ,比如对 HDFS 增删查改操作

2.Client写流程

需要和NameNode交互,可以写到哪个节点上,NameNode会在自己的DataNode选择三块返回给他,拿到列表后,客户端和NameNode建立连接,开始传输数据。第三步横跨三个链接,虽然每个块有3个副本,SDK链接的时候是跟第一个DataNode去交互,第一个DataNode再把数据复制到第二个节点,第二个节点再发给第三个节点,叫做pipeline写。

3.Client读流程

先问NameNode块存储在哪些节点上,返回给客户端,客户端选择第一个节点去读,只需要和第一个数据块的进行交互就可以读到内容。

4.源数据节点NameNode

1)维护目录树:维护目录树的增删改查操作,保证所有修改都能持久化,以便机器掉电不会造成数据丢失或不一致。

2)维护文件和数据块的关系:文件被切分成多个块,文件以数据块为单位进行多副本存放,这些块存放在DataNode上,由NameNode来维护

3)维护文件快存放节点信息:通过接受DataNode的心跳汇报信息,维护集群节点的拓扑结构和每个文件块所有副本所在的DataNode等。

4)分配新文件存放节点:client创建新的文件时候,需要由NameNode来确定分配目标DataNode

5.数据节点DataNode

1)数据块存取:DataNode需要高效实现对数据块在硬盘上的存取

2)心跳汇报:把存取在本机的数据块列表发送给NameNode,以便NameNode能维护数据块的位置信息,同时让NameNode确定该节点处于正常存活状态

3)副本复制:

1.数据写入时Pipeline IO操作

2.机器故障时补全副本**。** 小结: