美文网首页
Hadoop源码分析-HDFS写数据之申请block

Hadoop源码分析-HDFS写数据之申请block

作者: 晨磊的微博 | 来源:发表于2021-01-23 23:55 被阅读0次

4. 申请block

下面我们应该再去从dataQueue中读取packet了。而从dataQueue读取packetDatastream线程,所以我们直接看它的run方法

  1. Datastream.run(),代码比较多,分开看看。
    1.1 这里看while的判断条件,如果dataQueue的size=0,那么就等待

    image
    1.2 1:错误判断,pass;2:空判断pass;3:在这里获取了第一个packet;
    image
    1.3 这里可注释,就是从namenode上获取block。其实还有管道。nextBlockOutputStream()这里是获取block和管道。
    image
  2. Datastream.nextBlockOutputStream(),这里有个方法名字很怪locateFollowingBlock(),但是他就是申请block的方法。

    image
  3. Datastream.locateFollowingBlock(),看到了熟悉的RPC调用。那么接下来该去NanmeNodeRpcServer.addBlock()了。

    image
  4. NanmeNodeRpcServer.addBlock(),又是调用了 FSNamesystem 的一个方法。那么我们跟进FSNamesystem.getAdditionalBlock()吧。

    image
  5. FSNamesystem.getAdditionalBlock(),这的代码比较多,还好有注释。
    5.1 看注释,这里就是为新的block选择目标host.

    image
    5.2 1:创建个新的block;2:然后把创建的这个block信息添加到fsimage中并持久化(元数据管理的内容);3:最后把block和5.1中获得的主机地址一起封装到LocatedBlock对象里.然后返回LocatedBlock
    image

这些就是申请一个block了。画个图简单总结下:


image

相关文章

网友评论

      本文标题:Hadoop源码分析-HDFS写数据之申请block

      本文链接:https://www.haomeiwen.com/subject/gmvdzktx.html