HDFS的读机制:

1、初始化FileSystem ,客户端调用FileSystem 中的open方法打开文件。

2、FileSystem 调用远程RPC服务,获取namenode上的文件的数据块信息,每个数据块namenode返回数据块的节点地址。

3、FileSystem返回FSDataIputStream 给client客户端,客户端调用FSDataIputStream 中的read方法开始读取数据。

4、FSDataIputStream 连接保存此文件的第一个数据块的DataNode,读取数据。

5、数据读取完毕,关闭流连接,连接文件的下一个数据块的DataNode。

6、client客户端将文件读取完毕后,调用FSDataInputStream的close方法关闭文件输入流连接。

注意:若在读数据的过程中,客户端和DataNode的通信出现错误,则会尝试连接下一个 包含次文件块的DataNode。

同时记录失败的DataNode,此后不再被连接。

05-11 19:30