HDFS源码解析(2)-block report

2018-04-18  本文已影响468人  AlstonWilliams

除了heartbeat,block report应该说是HDFS中另一个最重要的RPC。

DataNode通过block report告诉NameNode,它都有哪些block,然后NameNode根据block report来确定一个DataNode上哪些block是无效的,哪些应该被删除,以及哪个block应该被replicate到其他的机器上,以及如何进行replicate。

在这篇文章中,我们会介绍NameNode收到DataNode发送来的block report之后,是如何进行处理的,这一个过程。

我们先来看一个流程图:

我们可以看到,第一步就是根据NameNode上为这个DataNode维护的一些block的元数据的信息,来确定一个block的状态。

有这么几个场景:

在NameNode中,一个block可能处于下面的几个状态:

在DataNode上,一个replica有这么几种状态:

具体的代码,都在BlockManager.processReport()中,大致的流程,在上面也已经给出来了,请各位自行阅读源码。

上一篇 下一篇

猜你喜欢

热点阅读