希望多多指导,qq 86497564 。

© 天行自息
Powered by LOFTER

心跳机制

    Hadoop集群是master/slave模式,master包括NameNode和ResourceManager,slave包括DataNode和NodeManager。

     master启动的时候,会开一个 rpc server那里,等待slave心跳。slave启动时,会连接master,并每隔3秒钟主动向master发送一个"心跳",这个时间可以通过"hearbeat.recheck.interval"属性来设置,将自己的状态信息告诉master,然后master也是通过这个心跳的返回值,向slave节点传达指令。

    需要指出的是,namenode与datanode之间的通信,ResourceManager与NodeManager之间的通信,都是通过"心跳"完成的。

(一)DataNode与NameNode之间的心跳:

            DataNode上对于每个NameNode都有个BPServiceActor线程,这个线程会定期向其NameNode发送心跳报告。

             在NameNode端,DataNode这一边的BPServiceActor线程通过BP和Rpc机制将心跳报文发送到NameNode这一边,然后就睡眠等待Namenode发回响应报文。

              在NameNode端,NameNode这一边由NameNodeRpcServer负责接收和处理来自各个DataNode的心跳和报告做出反应,所以NameNode上的pb层接收到来自DataNode的心跳报文以后会调用NameNodeRpcserver的sendHearbeat()方法。

               DataNode这一边sendHearbeat,NameNode这一边receiveHearbeat,但是由于rpc要求两边的函数名相同,所以Namenode这一边也是sendHearbeat。但事实上,Namenode不会发送心跳信号。

评论
热度 ( 2 )