HDFS 读 数 据 流 程
1.向NameNode发送写数据请求:Client上传数据时会和NameNode打交道,获取原数据信息。
2.NameNode检查目录:一是检查目录是否存在,二是检查HDFS里是否有一样的文件。
3.上传:检查后没问题NameNode给Client发生可以上传的信息。
4.上传blk1:数据上传需要分块上传,所以Client先上传blk1。
5.查询DataNode信息:NameNode一是查询datanode是活跃的,二是查询哪个上面的datanode空间足够。
6.表示可以上传的地方:NameNode给Client表示可以上传到datanode1,datanode2,datanode3。
7.请求上传blk1:依就近原则Client向datanode1请求上传blk1。
8.建立管道完成:datanode1为Client传输blk(块)做准备。
9.上传数据:Client向datanode1上传数据。
9.1 datanode1等datanode2返回数据,datanode2等datanode3返回数据,然后datanode3给 9.2 datanode2发送以保存好的消息,datanode2同样给datanode1发送已保存好数据的消息。
10.上传完成的消息:datanode分别向Client和NameNode发送上传完成的消息。
10.1 向Client发送上传完成的消息是为了告诉可以上传blk2了。
10.2 向NameNode发送上传完成的消息是为了在NameNode上记录datanode还剩多少空间。
11.上传blk2:Client向NameNode请求上传blk2,然后再走一遍以上的流程。