HDFS读数据流程
作者:互联网
一:HDFS客户端通过DistributedFileSystem向NameNode请求获得文件开始或全部block列表;
二:在这个列表中对于每个返回的block,都包含其对应数据所在的DataNode地址;
三:这些DataNode会按照Hadoop定义的集群拓扑结构计算得出与HDFS客户端之间的距离,然后再进行排序,HDFS客户端会优先从距离最近的DataNode上读取数据;
四:HDFS客户端会利用FSDataInputStream的read()方法读取数据;
五:FSDataInputStream中包含的DFSInputStream找出离HDFS客户端最近的DataNode并连接DataNode,这时如果出现读取失败等异常情况,DFSInputStream会尝试连接下一个离它最近的DataNode,连接成功后,在数据流中反复调用read()函数,直到这个块全部读完为止。
六:当第一个block块读完,就会关闭指向第一个block块的DataNode的连接,接着读取下一个block块,如果所有的block块都读取完,就会关闭所有的数据流。
标签:HDFS,读取,流程,读数据,DataNode,连接,block,客户端 来源: https://blog.csdn.net/qq_62615118/article/details/121048658