HDFS数据流-----文件写入

HDFS数据上传大体分为两个阶段,第一阶段是客户端与NameNode交互阶段,第二阶段是客户端与DataNode交互阶段。

1.客户端与NameNode交互阶段

 

流程如下:

假设客户端要上传的文件为A.log(文件大小大于128M),目标目录/log

(1)客户端向NameNode请求上传文件;

(2)NameNode查看自己的目录和文件的属性信息,判断是否是重复目录或文件;

(3)如果判断目录或者文件没有重复,回复客户端可以上传;

(4)客户端请求上传文件A.log的第一个block(blk_1)到HDFS目录/log,且副本数为3;

(5)NameNode根据请求查看DataNode管理信息,返回合理的DataNode地址给客户端。

 

2.客户端与DataNode交互阶段

假设副本数配置为3,NameNode返回给客户端的DataNode为dn1,dn2,dn3。

流程如下:

(1)客户端连接dn1,请求建立传输通道pipeline,并通知dn1还需要将blk_1保存到dn2和dn3;

(2)dn1通知dn2,dn2通知dn3,同时在dn1,dn2,dn3之间建立pipeline;

(3)dn3通知dn2 pipeline建立完成,dn2通知dn1 pipeline建立完成,dn1通知客户端pipeline建立完成,可以传输数据;

(4)客户端将blk_1分为以packet(每个packet 大小为64k)为单位传输给dn1;

(5)dn1收到packet后保存下来,同时将packet传递给dn2,以此类推,dn2传递给dn3;

 

注:后续将进一步完善,不喜勿喷,欢迎大神指点,谢谢。

你可能感兴趣的:(HDFS)