Hadoop HDFS源码学习笔记(七)

现详细了解openInfo函数的内部实现,以及修改了什么

首先给出openInfo的调用序列图:

Hadoop HDFS源码学习笔记(七)

在openInfo函数中,首先会调用DFSClient的callGetBlockLocations,这个函数主要是通过跟namenode的交互,来完成从namenode取得用户请求的file的元数据信息,返回的内容为locatedBlocks

接下来会让DFSInputStream更新当前的locatedBlocks的信息,并且更新lastBlockBeingWrittenLength这个变量记录了当前读取file如果是underconstruction状态的话最后一个block正在写的字节长度

接下来会判断最后一个block是否处于complete状态,如果不是,则会根据元数据提供的block的pipeline来到datanode上获得block的写入长度,并赋值给lastBlockBeingWrittenLength

最后要对当前的currentNode赋值为null,因为currentNode记录的是当前操作的block的当前连接的datanode的info

下面看一下相关的类图:

Hadoop HDFS源码学习笔记(七)

相关阅读:

Hadoop HDFS源码学习笔记(一)

Hadoop HDFS源码学习笔记(二)

Hadoop HDFS源码学习笔记(三)

Hadoop HDFS源码学习笔记(四)

Hadoop HDFS源码学习笔记(五)

Hadoop HDFS源码学习笔记(六)

Hadoop HDFS源码学习笔记(七)--DFSInputStream -- openInfo

Hadoop HDFS源码学习笔记(八)---HdfsProxy 

更多Hadoop相关信息见Hadoop 专题页面 ?tid=13

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/43819676bbd65ce7f7cb2dbaf02e337f.html