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继续读。
客户端及读取HDFS中的数据的流程图
原文地址:http://blog.51cto.com/10314260/2060766
时间: 2024-10-16 12:47:09