1. 程式人生 > >【圖文跟進 】HADOOP 核心設計——心跳機制

【圖文跟進 】HADOOP 核心設計——心跳機制

心跳機制(沒有耐心看完,你也不配學會!)

1.心跳機制(heart+beat)

問題1:hdfs叢集中namenode負載管理所有的datanode,namenode如何管理?

問題2:怎麼獲取datanode存活的狀況的?

解析:通過心跳策略獲取的,datanode在叢集執行的過程中會定期的向namenode傳送自己的心跳報告,目的是報告namenode自己的存活狀態。

心跳報告的週期引數如下圖(hdfs-default.xml):

  • 629行中,interval是間隔的意思
  • 631行中,in 後面跟著單位seconds為妙

從圖中可以領悟的,datanode每隔3妙回想namenode傳送一個心跳報告

如果一個datanode宕機了,namenode通過多長時間斷定?

考慮到這兒情況,打個比方,某人休克了,暫時停止了呼吸,那你能說這個人死亡了嗎?肯定不能丫!那到底怎麼斷定呢?

namenode連續10次接受不到datanode的心跳報告的時候,會認為當前datanode可能宕機了,這其中要注意到連續這個詞,就是說一次為3妙,10此就是30妙,當你檢測到第20秒的時候,還沒有接收到,但是第22秒接收到了。那這時是接著之前的時間算,還是接著第22秒開始呢?答案是22秒開始

當連續到第11秒的時候任然沒有返回心跳報告,這時是什麼情況呢,打個比方:你是這個紅色向上的箭頭,你11天沒去上班了,老闆可能會覺得你可能掛掉了,或者是出事了!這時候呢,他絕壁打個電話採訪你的死亡過程對不,就是這個向下的紅色箭頭代表,而圓圈中的橫杆表示的都是一個後臺守護程序,等待當前檢測的響應結果,響應了是代表沒問題。 

namenode進行datanode的一次檢測的時間是(給出原始碼):300000毫秒—>300秒—>5分鐘

會主動連續檢測2次,若兩次檢測都沒有響應,這時則斷定當前datenode宕機了。

  • 148行,recheck是複查的意思

總結一哈馬匹:namenode 斷定datanode宕機的時間是10次*30毫秒+2次*5分鐘=10分鐘30秒