Hadoop读写流程

Hadoop读写流程*

写数据流程

一、启动Hadoop

NameNode其本身会存储数据的原信息,如文件路径、大小、权限、时间等。

启动过程中NameNode会和DataNode保持心跳机制,且DN会向NN发送当前自己block块的信息,构建映射关系

当用户开始行动,客户端会调用DistributedFileSystem中的create方法创建新文件,是否创建成功由NN进行校验,校验通过后,客户端向NN询问放数据的子节点有哪些,NN将合适的子节点发送到客户端中。

客户端会先将文件划分为block块,block块再划分为64kb的packet,包含Header和Data,Header主要包括数据的大小,以及是否是最后一个packet等重要信息,Data中则存在校验数据和真实数据,比例为1:128

四、准备发送阶段:客户端会先将packet放入数据队列,而后再拷贝一份放入确认队列,而后调用NN中的FSDataOutputStream,将数据包通过管道pipeline往外发送

五、发送至第一个子节点,该节点是NN通过机架感知获取的

​ 第一个节点收到packet后会向后发送至下一个节点,直至最后一个节点收取,再由最后一个节点向前发送ack值(确认信号),当客户端的确认队列收到该ack值后,便认为每个子节点都收到数据,最后删除确认队列中packet数据。

六、当最后一个packet进入确认队列并接受ack之后,写数据结束。

读数据

一、客户端发送请求到DistributeFileSystem,申请读取某一个文件

二、NN接受上面的DFS去查询文件信息,存在则返回成功状态,不存在则返回错误。

三、DFS创建FSInputStream对象,客户端通过该对象读取文件。NameNode发送block块与DN的映射关系。

四、客户端通过NN机架感知与最近的DN建立连接,依次读取文件block信息。

五、将读取的block合并成一个文件。

posted @ 2025-02-19 10:42  Roxan  阅读(372)  评论(0)    收藏  举报