大数据笔记 2--hdfs读数据流程
注:以下简化名称所对应的全称:
NN == NameNode;
IO == hdfsFileinputStream;
DN == DataNode;
DN1 == DataNode1;
DN2 == DataNode2;
DN3 == DataNode3;
详细流程:
1、客户端向NN发送一个带有相关文件的路径请求,例如hdfs://input/xx.txt这样的一个读文件请求;
2、NN会在元数据中查找集群中是否有相关文件的记录,如果有NN会将这些数据所在的(正常工作)节点返回给客户端,也就是所谓的元数据。(假设该文件的三个block分别存放在三个节点上(block1:DN1;block2:DN2;block3:DN3 ))
3、客户端请求DN1传输第一个block块数据;
4、DN1应答请求开始传输第一个block块数据;
5、客户端请求DN2传输第二个block块数据;
6、DN2应答请求开始传输第二个block块数据;
7、客户端请求DN3传输第三个block块数据;
8、DN3应答请求开始传输第三个block块数据;
9、传输过来的block块会在客户端内存中顺序合并成文件,如果内存无法放下所有block块,客户端会合并一部分写入磁盘后再进行下一部分的合并,直到合并完成后hdfs的读数据流程结束。