HDFS数据写入流程

1:Client 发起文件写入请求,通过 RPC 与 NameNode 建立通讯,NameNode检查目标文件,返回是否可以上传;

2:Client 请求第一个 block 该传输到哪些 DataNode 服务器上;

3:NameNode 根据副本数量和副本放置策略进行节点分配,返回DataNode节点,如:A,B,C

4:Client 请求A节点建立pipeline管道,A收到请求会继续调用B,然后B调用C,将整个pipeline管道建立完成,后逐级返回消息到Client;

5:Client收到A返回的消息之后开始往A上传第一个block块,block块被切分成64K的packet包不断的在pepiline管道里传递,从A到B,B到C进行复制存储

6:当一个 block块 传输完成之后,Client 再次请求 NameNode 上传第二个block块的存储节点,不断往复存储

7.当所有block块传输完成之后,Client调用FSDataOutputSteam的close方法关闭输出流,最后调用FileSystem的complete方法告知NameNode数据写入成功

猜你喜欢

转载自blog.csdn.net/lxpqxl/article/details/102968714