首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

hadoop corrupt处置流程

2014-07-17 
hadoop corrupt处理流程?Datanode blockcorrupt流程说明1、 Datanode上有一个线程DataBlockScanner对Datano

hadoop corrupt处理流程

?

Datanode blockcorrupt流程说明

1、 Datanode上有一个线程DataBlockScanner对Datanode上面的block进行数据校验,其中该类中最重要的方法是verifyBlock(Block block),在verifyBlock(Blockblock)方法中利用了BlockSender,其方法是将block读入到一个空设备(IOUtils.NullOutputStream())中,通过读写进行检验。

2、 ?如果检验失败后handleScanFailure(Blockblock),通过RPC直接向Namenode汇报存在坏块,即调用Namenode的reportBadBlocks(blocks)方法

3、Namenode向FSNamesystem转发调用markBlockAsCorrupt(Block blk,DatanodeInfo dn),经过校验后将该block放置入neededReplications结构中,至此Datanode向Namenode汇报结束

4、 ?Namenode通过ReplicationMonitor线程,对block出现的问题(excess,neededreplica…)进行处理。该线程调用computeDatanodeWork()方法,该方法首先调用computeReplicationWork()方法。

5、 ?在computeReplicationWork()方法中,从neededReplicaions结构中按照优先级构建出需要复制的block—blocksToReplicate,对每个block调用computeReplicationWorkForBlock()方法

6、 ?随后调用ReplicationTargetChooser类的chooseTarget去获取目的主机,用于放置block

7、 ?随后更改6中获得的DatanodeDescriptor的状态,将该block放置入需要replicate的队列中,同时pendingReplications加入该block准备复制

8、 ?最后修改corrupt的block对应的DatanodeDescriptor状态,将该block置入invalidate队列中

9、 ?再下一次心跳汇报时,会将对应的block已DatanodeCommand的形式,发送给datanode进行处理

?

?

?

注:集群中主机数需要大于相应副本数才会进行复制,对corrupt进行处理,否则第6步找不出目的主机

?

热点排行