Hadoop NameNode判斷 DataNode 節點宕機的時間


1、namenode 如何判斷datanode節點是否宕機?
先決條件:
datanode每隔一段時間像namenode匯報,匯報的信息有兩點
(1)自身datanode的狀態信息;
(2)自身datanode所持有的所有的數據塊的信息。
如果namenode連續十次沒有收到datanode的匯報,那么namenode就會認為該datanode存在宕機的可能。
datanode啟動以后會專門啟動一個進程負責給namenode發送心跳數據包,如果datanode沒有問題,僅僅只是發送信息數據包的進程掛了,namenode會發送命令像這個datanode進行確認,
查看這個發送心跳包的進程是否還能正常運行,namenode會向datanode確認兩遍,每五分鍾確認一次。如果兩次都沒有返回結果,那么namenode就會認為datanode已經宕機了。
最終namenode判斷一個datanode死亡的時間計算公式:
timeout = 10 * 心跳間隔時間 + 2 * 檢查一次消耗的時間
心跳間隔時間
配置參數:dfs.heartbeat.interval
默認值:3s,單位s
檢查一次消耗的時間
配置參數:dfs.namenode.heartbeat.recheck-interval
默認值:    300000,單位ms

2、數據塊讀寫操作的一些配置項
(1)配置參數:dfs.blocksize 
參數說明:客戶端數據分塊的大小
默認值:134217728(128M);單位:字節
(2)dfs.client-write-packet-size
參數說明:客戶端寫入數據時packet數據包的大小
默認值:65536(64K),單位字節
(3)dfs.bytes-per-checksum
參數說明:chunk(寫入數據時最小的一個單位),數據校驗的粒度
默認值:512字節
注:事實上一個chunk還包含4B的校驗值,因而chunk寫入packet時是516B;數據與檢驗值的比值為128:1,所以對於一個128M的block會有一個1M的校驗文件與之對應;

3、集群數據損壞以后,自動刪除時長
配置項:dfs.blockreport.intervalMsec
默認值:21600000(36分鍾),單位:ms

4、元數據checkPount
在分布式或者偽分布集群中,每隔一段時間,會由 secondary namenode 將 namenode 上積累的所有 edits 和一個最新的 fsimage 下載到本地,並加載到內存進行 merge(這個過程稱為 checkpoint)
dfs.namenode.checkpoint.check.period=60 ##檢查觸發條件是否滿足的頻率,60 秒
dfs.namenode.checkpoint.dir=file://${hadoop.tmp.dir}/dfs/namesecondary
##以上兩個參數做 checkpoint 操作時,secondary namenode 的本地工作目錄
dfs.namenode.checkpoint.edits.dir=${dfs.namenode.checkpoint.dir}
dfs.namenode.checkpoint.max-retries=3 ##最大重試次數
dfs.namenode.checkpoint.period=3600 ##兩次 checkpoint 之間的時間間隔 3600 秒
dfs.namenode.checkpoint.txns=1000000 ##兩次 checkpoint 之間最大的操作記錄

5、jvm重用
配置參數:mapred.job.reuse.jvm.num.tasks
參數解釋:一個jvm內部跑多少個task,默認是1,可以設置為多個。這個參數在2.9.2版本中未找到。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM