HDFS读数据流程
(1)客户端给NameNode发起文件下载请求
(2)NameNode进行两项检查(1.检查用户是否有权限下载2.检查文件是否存在)检查通过后进行读取节点的选择(要遵从节点距离近、负载均衡的两个准则),之后NameNode返回目标文件的元数据
(3)客户端根据拿到的block信息,并向DataNode1请求读取Block1
(4)Datanode将该节点上的切片信息传输给客户端。
(5)如果没有获取到所有的切片信息,再与距离最近其他切片副本所在的DataNode建立通信通道,请求读取下一个Block,获取该节点的切片。如此重复,直到获取到所有的切片信息。
(6)客户端拿到所有切片后,将切片组装为完整的文件。
(2)里面节点距离的计算:
节点距离:两个节点到达最近的共同父节点的距离之和
上图中:节点1与节点2之间的距离是x+y