2012年11月26日 星期一

TaskTracker send heartbeat cases

 可以看到TaskTracker中對於 heartbeat傳送時機有兩種


TaskTracker.java
...
private long getHeartbeatInterval(int numFinishedTasks) {
    return (heartbeatInterval / (numFinishedTasks * oobHeartbeatDamper + 1));
  }

...

heartbeatInterval預設是 HEARTBEAT_INTERVAL_MIN 為 3*1000 ms = 3sec
numFinishedTasks是此TaskTracker目前完成的Task數量
oobHeartbeatDamper是預設1000,000

也就是說getHeartbeatInterval(int numFinishedTasks)回傳的值是:
1. 當TaskTracker尚未完成任何task >>> 3000/(0*1000,000+1) = 3000ms = 3sec
    即3sec才傳一次heartbeat

2. 當TaskTracker完成一個以上task時 >>> 3000/(1*1000,000+1) = 0.00299 = 0sec
    即馬上傳一次heartbeat告知JobTracker有task完成

沒有留言:

張貼留言