判官007 发表于 2015-11-21 10:12:51

hadoop中的Heartbeat

  Heartbeat在分布式的架构中有着无可替代的重要作用。
通过Heartbeat维持着master和slave之间,或者slave与slave之间的关系,让master了解slave的状态,让slave从master处获取最新命令,或者让各个slave了解其他slave的状态。
  同样的,在hadoop中Heartbeat也有着重要的作用。
Datanode通过定期的向Namenode发送心跳,告诉当前Datanode的状态信息,顺便告诉Namenode自己还活着,
而Namenode通过对Datanode的心跳的答复发送一些命令信息,比如说哪些BLOCK可以删除了,哪些BLOCK损坏了,哪些块需要增加副本等等。
  在hadoop中通过dfs.heartbeat.interval参数来控制Datanode向Namenode发送心跳的频率,该参数默认值如下:
  <property>
<name>dfs.heartbeat.interval</name>
<value>3</value>
<description>Determines datanode heartbeat interval in seconds.</description>
</property>
  默认值是3秒,即每3秒发送一次,过高的频率可能会对带宽有影响,多低的频率可能会导致Namenode很难获得Datanode的最新状态。
  下面简单的介绍下Namenode在接收到Datanode的Heartbeat后的处理过程:
1,首先对Datanode的身份进行检查,版本信息,注册信息
2,更新Namenode中关于该Datanode的状态信息,比如总空间,使用空间,空闲空间等等
3,查询该Datanode相应的BLOCK的状态,生成对Datanode的命令列表。比如删除损坏BLOCK,增加副本个数不够的BLOCK等等
4,检查当前的分布式更新状态
5,将生成的命令反馈给相应的Datanode
6,Heartbeat处理完毕
页: [1]
查看完整版本: hadoop中的Heartbeat