Hadoop 2.0 Datanode

Hadoop 2.0 Datanode 更加细分,将结构分为两个大部分。

DataNode相当于一个包装转发器,将请求发送给相应的处理单元。

DataNode 分为以下两部分:

1、与NameNode汇报的逻辑,block report,heartbeat

2、底层与文件系统交互的datanode 存储逻辑

 

其中第一部分的调用如下:

DataNode —>  BlockProolManager  —>  BPOfferService  —>   BPServiceActor

第二部分的调用如下:

DataNode  —>  FSDataSetImpl     —>     FSVolumeList(FSVolume)     —>     BLockPoolSlice

 

DataNode启动流程:

1、Main

2、StartDatanode

3、初始化BlockPoolManager

4、doRefreshNamenodes

     从配置里面读出相应的namespace id,namenode id(HA)

     初始化BPOfferService,每个namespace对应一个BPOfferService。

     初始化BPActor,每个namenode对应一个BPActor,即Active NameNode和StandbyNameNode各对应一个BPActor。

5、启动所有的BPActor。

     BPActor启动过程如下:

     (1)与NameNode进行handshake,首先建立BPActor对NameNode的RPC连接

     (2)获得namespace info,比较一下与现有的version,目前不会由于svn version不一致直接报错了

     (3)verifyAndSetNamespaceInfo,BPOfferService搞定后,调用DataNode的initBlockPool

     首先向BlockPoolManager注册该BPOfferService。在这个阶段,初始化FSDataSet,初始化存储层,初始化FSVolume,初始化FSVolumeList和ReplicaMap。启动DataBlockScanner和DirectoryScanner。向底层的文件交互FSVolume注册该BlockPool

     (4)handshake第二部,向NameNode注册,NameNode向其内部的DataNode注册该DataNode

     (5)设置BlockReport的细节

Print Friendly

jiang yu

Leave a Reply