HDFS读过程

输入图片说明

    Configuration conf = new Configuration();  
    FileSystem fs = FileSystem.get(conf);  
    Path file = new Path("demo.txt");  
    FSDataInputStream inStream = fs.open(file);  
    String data = inStream.readUTF();  
    System.out.println(data);  
    inStream.close();  

1.初始化FileSystem,然后客户端用FileSystem的open函数打开文件

2.FileSystem用RPC调用元数据节点,得到文件的数据块信息,对于每一个数据块,元数据节点返回保存数据块的数据节点的地址。

3.FileSystem返回FSDataInputStream给客户端,用来读取数据,客户端调用FSDI的read()函数开始读取数据。

4.FSDataInputStream连接保存此文件第一个数据块的最近的数据节点,data从数据节点读到客户端。

5.当此数据块读取完毕时,FSDataInputStream关闭和此数据节点的连接,然后连接此文件下一个数据块的最近的数据节点。

6.当客户端读取完毕数据的时候,调用FSDataInputStream的close函数。

7.在读取数据的过程中,如果客户端在与数据节点通信出现错误,则尝试连接包含此数据块的下一个数据节点。

8.失败的数据节点会被记录,此后不再连接。

猜你喜欢

转载自my.oschina.net/134596/blog/1643486