hdfs读取流程


hdfs读取流程


获取file文件,假设文件200M,则共有2个块,block1为128M(hdfs默认块大小为128M),block2为72M。默认三个副本。

  1. ClientNode调用DistributedFileSystem的 open 方法获取FSDataInputStream。
  2. DistributedFileSystem向NameNode发出请求获取file文件的元数据,包括所有块所在的DataNode的位置信息。
  3. ClientNode调用FSDataInputStream获取数据流。
  4. FSDataInputStream调用就近DanaNode获取block1。DanaNode开始传输数据给客户端,从磁盘里面读取数据输入流,以Packet为单位来做校验。ClientNode以Packet为单位接收数据,先在本地缓存,然后写入目标文件。文件仍存在未读取的block2,则继续执行4。直到文件所有数据读取完成。
  5. 全部数据接收完成,关闭数据流FSDataInputStream。


分享到:


相關文章: