文字说明
1、使用 HDFS 提供的客户端 Client,向远程的 namenode 发起 RPC 请求;
2、namenode 会视情况返回文件的全部 block 列表,对于每个 block,namenode 都会返回有该 block 拷贝的 datanode 地址;
3、客户端Client会选取离客户端最近的datanode来读取block;如果客户端本身就是datanode,那么将从本地直接获取数据;
4、读取完当前 block 的数据后,关闭当前的 datanode 链接,并为读取下一个 block 寻找最佳的 datanode;
5、当读完列表 block 后,且文件读取还没有结束,客户端会继续向 namenode 获取下一批的block 列表;
6、读取完一个 block 都会进行 checksum 验证,如果读取 datanode 时出现错误,客户端会通知 namenode,然后再从下一个拥有该 block 拷贝的 datanode 继续读。