Hadoop(四):HDFS读数据的基本流程
-
shell发送下载请求
-
NameNode检测文件系统,查找a的元数据(block和block所在的位置信息)
-
返回元数据给shell,返回的元数据会排序,排序规则:
-
拓扑距离近排前面。
-
返回心跳健康排前面。
-
-
shell按照排序,向各个节点请求下载block。
-
底层上本质是建立Socket Stream(FSDataInputStream),重复的调用父类DataInputStream的read方法,直到这个块上的数据读取完毕
-
-
把下载的文件合并起来。
-
读取完一个block都会进行checksum验证,如果读取DataNode时出现错误,客户端会通知NameNode,然后再从下一个拥有该block副本的DataNode继续读。