HDFS源码解析(1)-heartbeat

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

heartbeat是HDFS中最重要的RPC中的一个,DataNode通过heartbeat告诉NameNode的关于DataNode的存活状态,以及DataNode的一些信息,比如,有多少可用存储空间。

然后,NameNode会给DataNode发送一些Command,基于NameNode上为各个NameNode维护的一些信息,比如有哪些block要被删除等。

大致上NameNode和DataNode之间的heartbeat的过程如下:

DataNode通过Heartbeat发送给NameNode的信息包括这么一些:

如下图所示:

然后,NameNode最终会调用DatanodeManager.handleHeatbeat()来处理heartbeat。

关于这个方法的处理过程,在上面的流程图中已经写的非常详细了,主要就是做这么四件事:

这里第三点以及第四点都是蛮重要也蛮复杂的部分,我们会在后面的文章中详细介绍。

在DataNode收到NameNode发送过来的Command之后,就会做相应的处理,对应的代码如下:

同时,在DataNode中,还会根据对应的处理结果,来决定是否进行block report以及cache report等。

heartbeat的实现,本身并不复杂,复杂的是NameNode收到heartbeat后对应的处理,如lease recovery等。

上一篇 下一篇

猜你喜欢

热点阅读