hadoop之 心跳時間與冗餘快清除

2021-09-07 16:43:08 字數 1254 閱讀 5184

1.hadoop datanode節點超時時間設定

datanode程序死亡或者網路故障造成datanode無法與namenode通訊,namenode不會立即把該節點判定為死亡,要經過一段時間,這段時間暫稱作超時時長。hdfs預設的超時時長為10分鐘+30秒。如果定義超時時間為timeout,則超時時長的計算公式為:

timeout = 2 * heartbeat.recheck.interval + 10 *dfs.heartbeat.interval。

而預設的heartbeat.recheck.interval大小為5分鐘,dfs.heartbeat.interval預設為3秒。

需要注意的是hdfs-site.xml配置檔案中的heartbeat.recheck.interval的單位為毫秒,dfs.heartbeat.interval的單位為秒。所以,舉個例子,如果heartbeat.recheck.interval設定為5000(毫秒),dfs.heartbeat.interval設定為3(秒,預設),則總的超時時間為40秒。

hdfs-site.xml中的引數設定格式:

heartbeat.recheck.interval

2000

dfs.heartbeat.interval

12.hdfs冗餘資料塊的自動刪除

在日常維護hadoop集群的過程中發現這樣一種情況:

某個節點由於網路故障或者datanode程序死亡,被namenode判定為死亡,hdfs馬上自動開始資料塊的容錯拷貝;當該節點重新新增到集群中時,由於該節點上的資料其實並沒有損壞,所以造成了hdfs上某些block的備份數超過了設定的備份數。通過觀察發現,這些多餘的資料塊經過很長的一段時間才會被完全刪除掉,那麼這個時間取決於什麼呢?

該時間的長短跟資料塊報告的間隔時間有關。datanode會定期將當前該結點上所有的block資訊報告給namenode,

引數dfs.blockreport.intervalmsec就是控制這個報告間隔的引數。

hdfs-site.xml檔案中有乙個引數:

dfs.blockreport.intervalmsec

3600000

determines block reporting interval in milliseconds.

其中3600000為預設設定,3600000毫秒,即1個小時,也就是說,塊報告的時間間隔為1個小時,所以經過了很長

時間這些多餘的塊才被刪除掉。通過實際測試發現,當把該引數調整的稍小一點的時候(60秒),多餘的資料塊

確實很快就被刪除了。

hadoop之 心跳時間與冗餘快清除

1.hadoop datanode節點超時時間設定 datanode程序死亡或者網路故障造成datanode無法與namenode通訊,namenode不會立即把該節點判定為死亡,要經過一段時間,這段時間暫稱作超時時長。hdfs預設的超時時長為10分鐘 30秒。如果定義超時時間為timeout,則超...

快排求逆序數 快排與歸併時間複雜度比較

本文參考其他用快排求逆序數的方法。在用快排求解逆序數前,我先考慮了這個問題,1 歸併和快排的時間複雜度都是nlog n 為什麼不用歸併?我認為應該是由於快排在每次合併時都有用到臨時陣列,然後每次還需要把臨時陣列重新copy到原陣列中 增加了時間複雜度 快排雖然也存在最壞的情況,即n 2,但是由於其隨...

修復hadoop集群時間與系統時間不一致問題

時間不一致可能會報 region is not online錯誤。重啟了hadoop集群主機之後,hadoop集群log中的時間一直不是系統時間,不知是裝系統時的遺留問題 安裝系統時區沒有更改過 還是怎麼。通過瀏覽http hadoop 60010 jmx可看到user.timezone 時區 的v...