HDFS上传文件流程
文件上传流程图如下 :

首先 , HDFS选用的是每启动一个线程 , 就传递一个块 , 然后接收到第一个块后的机器复制给其他机器 .
首先我们知道namenode的职责 :
- 管理整个文件系统的元数据 ( 目录树 文件和块对应信息 , dn信息)
- 响应整个客户端的所有请求 hdfs://node-1:9000
上传文件的流程
- 首先hdfs客户端通过RPC调用向nn发送请求上传文件1.txt
- 元数据根据请求信息查询元数据 , 判断是否可以上传
- 返回可以请求上传 , 响应给客户端
- 将数据的块(blk-1)[采用3副本]上传到元数据中
- 根据请求 , 并且结合dn信息返回3台可以用的dn的ip(dn1,dn2,dn3)
- nn返回上传副本的信息给客户端
- 客户端和dn1建立传输数据的管道(pipeline) , 与此同时 , dn1与dn2之间也建立传输数据的管道 , 直到最后一个为止
- 依次返回pipeline建立完毕信息 , 直到响应给客户端
- 传输数据包(packet) , 默认大小为64K , dn*把接收到的packet保存到指定的目录中 , 并且把packet继续往后发 , 直到最后一个
- 发送完毕后反方向追个返回ack应答 , 保证packet的安全稳定 , 直到返回给客户端
- 待第一块上传完毕 , 客户端按照上述流程走一遍 , 上传第二个块 , 从第4步开始 , 重新发起请求 , 寻找可用的dn位置
- 待所有块上传完毕 , 客户端把信息告知namenode , nn把信息同步到文件系统的元数据中

本文详细介绍了HDFS的文件上传和下载流程。在上传过程中,客户端通过RPC向NameNode请求,遵循3副本策略,建立数据传输管道,确保数据的安全稳定。下载时,客户端从NameNode获取文件Block位置,按拓扑结构排序DataNode,进行并行读取,通过checksum验证数据完整性。
最低0.47元/天 解锁文章
1952

被折叠的 条评论
为什么被折叠?



