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数据写入成功
本文详细阐述了Hadoop分布式文件系统(HDFS)中文件的写入过程,包括客户端如何与NameNode通信请求文件写入,NameNode如何分配DataNode进行数据存储,以及数据块在DataNode间复制的机制。

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



