怎么识别datanode stale了?
DataNode職責:
存儲管理用戶的文件塊數據
定期向namenode匯報自身所持有的block信息(通過心跳信息上報)
(這點很重要,因為,當集群中發生某些block副本失效時,集群如何恢復block初始副本數量的問題)
當一個datanode滿足如下條件時被認為是stale了:
當一臺datanode的last contact(即上一次收到datanode心跳到當前時刻的時間間隔)相對于其他datanode更長的時候,該datanode就會被認為是stale的。當一臺datanode變為stale狀態后,其讀寫優先級將被置為最低。
如果使用默認值的話,當一臺datanode的心跳消失30秒鐘,namenode會認為這臺datanode stale了。如果又過了10分鐘(總共10.5分鐘)還沒有心跳,namenode會認定datanode死亡了。
相關屬性包括:
dfs.heartbeat.interval - default: 3 seconds
dfs.namenode.stale.datanode.interval - default: 30 seconds
dfs.namenode.heartbeat.recheck-interval - default: 5 minutes
dfs.namenode.avoid.read.stale.datanode - default: true
dfs.namenode.avoid.write.stale.datanode - default: true
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秒。
總結
以上是生活随笔為你收集整理的怎么识别datanode stale了?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么叫日上_古雷150万吨乙烯,为啥叫
- 下一篇: 微信小程序~获取网络状态