HDFS读流程

HDFS 读流程 面试题

一般有以下几个步骤
1.client通过分布式FileSystem.open(path)方法,去与NN进行RPC通信,NN会校验是否存在 权限是否OK。
2.校验完成后,返回path文件的部分或全部的block列表(其实就是返回FSDataInputStream对象)
3.Client调用FSDataInputStream对象的read()方法

  • a.去与第一个块的最近的datanode进行read,读取完成后,会校验,假如OK,会关闭与当前的dn的通信。
    假设check fail,会记录失败的块+DN信息,下次就不会读取了,那么会去这个块的第二个DN地址读取
  • b.然后读取第二个块的最近的datanode,check后,会关闭与DN的通信
  • c.假设block列表读取完了,文件还没结束,就继续读取下一批次的block的列表

4.Client调用FSDataInputStream.close(),关闭输入流
附图说明:
HDFS读流程