Client读取HDFS中数据的流程
1.客户端通过调用FileSystem对象的open()方法打开希望读取的文件。
2.DistributedFileSystem通过使用RPC来调用namenode,以确定文件起始块的位置。
3.Client对输入流调用read()方法。
4.存储着文件起始块的natanoe地址的DFSInputStream[注2]随即链接距离最近的datanode。通过对数据流反复调用read()方法,可以将数据从datanode传输到Client。
5.到达快的末端时,DFSInputStream会关闭与该datanode的连接,然后寻找下一个快递最佳datanode。
6.Client读取数据是按照卡开DFSInputStream与datanode新建连接的顺序读取的。它需要询问namenode来检索下一批所需要的datanode的位置。一旦完成读取,调用FSDataInputStream调用close()方法。