HDFS NameNode BlockReportLease 問題

概述

HDFS 在 HDFS-7923 中,引入了 block report lease 這個新的特性,目標是避免集群中 DN 集中進行全量 block report,從而導致 NN 阻塞的情況,一般這種情況在 NN 剛啟動時比較多見。

按照這個 patch,目前 NN 最多允許6個 DN 同時做 FBR(Full Block Report),且 DN 最多有5分鐘的時間來完成這次 FBR。

問題

這個特性的出發(fā)點是好的,但是它做的完成度很低,存在很多問題。

  1. 功能問題
    沒有考慮到許多臨界情況,導致在那些情況下,DN 無法完成 FBR,最終導致

    1. NN 啟動之后,由于始終無法完成 block report,因此長時間無法退出安全模式 。
    2. 由于 DN block report 可能出現(xiàn)問題(例如:DN 上報不完整,12塊盤只能成功上報6塊,等等),可能導致 NN 上可能突然出現(xiàn)許多 missing block
    3. 其它

    這些問題,直到 DN 下次成功進行 FBR 后,才有可能恢復。 目前已知的 bug 有:

    • HDFS-12914. Block report leases cause missing blocks until next report
    • HDFS-14314. fullBlockReportLeaseId should be reset after registering to NN
  2. 性能問題
    該特性引入了兩個新的配置項,但是默認值都取的有問題:

    • Block Report Lease 過期時間
      默認值 5min,如上所述,這意味著一個拿到了 lease 的 DN 有5分鐘來完成此次 FBR,這在一般情況下是夠的,但是在一些特殊情況下(如 NN 剛啟動時),這是不夠的,此時會引起 lease expired 錯誤,進而導致 DN FBR 失敗,如下圖所示:


    • Block Report Lease 頒發(fā)個數(shù)
      默認值6,同樣如上所述,NN 同時最多頒發(fā)6個 lease,即最多同時允許6個 DN 進行 FBR,NN 在 DN 執(zhí)行心跳時頒發(fā) lease,按照現(xiàn)網(wǎng)配置,心跳間隔為 10s,也就是說,最壞的情況下,NN 在長達10s 左右的時間里只能處理6個 DN 的 FBR,在集群規(guī)模較大時(1000 DN+),這將嚴重拖慢 NN 啟動之后,退出 safeMode 的速度。

解決辦法

  1. 功能問題
    先合入上面的兩個 patch,后面如果出現(xiàn)問題,繼續(xù)解決。

  2. 性能問題

    1. Block Report Lease 過期時間拉長為半小時:
      NameNode 側,hdfs-site.xml 中,做如下配置
    <property>
    <name>dfs.namenode.full.block.report.lease.length.ms</name>
    <value>1800000</value>
    </property>
    
    1. Block Report Lease 頒發(fā)個數(shù)增大10倍,配置為60
      NameNode 側,hdfs-site.xml 中,做如下配置
    <property>
    <name>dfs.namenode.max.full.block.report.leases</name>
    <value>60</value>
    </property>
    
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
禁止轉載,如需轉載請通過簡信或評論聯(lián)系作者。

相關閱讀更多精彩內容

友情鏈接更多精彩內容