HBase解決Region Server Compact過程占用大量網絡出口帶寬的問題


作者: 大圓那些事 | 文章可以轉載,請以超鏈接形式標明文章原始出處和作者信息

網址: http://www.cnblogs.com/panfeng412/archive/2012/10/17/how-to-resolve-hbase-region-server-compaction-taking-up-too-much-network-bandwidth.html

推薦:《HBase權威指南》

HBase 0.92版本之后,Region Server的Compact過程根據待合並的文件大小分為small compaction和large compaction兩種,由此可能導致在集群寫入量大的時候Compact占用過多的網絡出口帶寬。本文將詳細描述集群使用過程中遇到這一問題的排查過程及其解決方法。

1. 發現問題

HBase集群(版本為0.94.0)運行過程中,發現5台Region Server的網絡出口帶寬經常維持在100MB/s以上,接近到網卡的極限;同時Region Server的機器load負載也很高,高峰時候能夠達到30~50。

2. 排查問題

1、集群實際運行過程中,觀察到Region Server服務端的網卡,平均每台寫入流量大概60MB/s(此時寫入量已經很大了);讀出流量90MB/s,有時甚至突破100MB/s(注:每台機器都是千兆網卡);

2、觀察實際的寫入數據量在每秒5w tps左右,單條記錄平均大小為1KB,大概會占用50MB/s左右的網卡入口帶寬請求量,和觀察到的現象一致;

3、觀察查詢量在每秒6w qps左右,單條記錄平均大小為1KB,大概會占用60MB/s左右的網卡出口帶寬請求量,奇怪的是實際觀察到有接近甚至超過100MB/s的網絡出口帶寬請求量,多出了40MB/s左右的網絡出口帶寬

4、經分析排查確定導致上述過程的原因,可能是HBase服務端由於寫入量過大頻繁觸發compaction過程,而compaction是需要讀HBase數據的,因此占據了相當部分的網絡出口帶寬;

5、結合對相關源碼org/apache/hadoop/hbase/regionserver/CompactSplitThread.java的分析,決定對HBase集群配置做出變更(具體見下一小節),主要目的是減少compaction的發生;

6、接下來,觀察到Region Server的網絡利用率明顯降低,一般進出口帶寬能維持在70MB/s以下。

3. 解決問題

HBase 0.92版本之后增加了關於compact的配置選項,compact分為small compaction和large compaction兩個線程池執行(默認都是各有1個線程,具體源代碼見:org/apache/hadoop/hbase/regionserver/CompactSplitThread.java),由於compact過程需要從HBase集群讀取數據,因此實際運行中導致了compact占用大量網絡出口流量,解決方案為選擇性地關閉small compaction或large compaction。有以下兩種變更方式均可解決:

1)方案一

(1) 修改hbase.regionserver.thread.compaction.throttle為一個很大的值(如50GB),強制讓所有compact都變為small compaction,減少compact的壓力;

(2) 將small compaction和large compaction線程數均設置為1,減少compact的壓力(可不配置,系統默認也會將其初始化為1)。

操作步驟:

准備hbase-site.xml文件,添加或修改如下選項:

<property>
    <name>hbase.regionserver.thread.compaction.throttle</name>
    <value>53687091200</value>
</property>
<property>
    <name>hbase.regionserver.thread.compaction.small</name>
    <value>1</value>
</property>
<property>
    <name>hbase.regionserver.thread.compaction.large</name>
    <value>1</value>
</property>

重啟集群使配置生效。

2)方案二

將small compaction線程數均設置為0,從而關閉small compaction,只剩下large compaction,也可減少compact的壓力。

操作步驟:

准備hbase-site.xml文件,添加或修改如下選項:

<property>
    <name>hbase.regionserver.thread.compaction.small</name>
    <value>0</value>
</property>

重啟集群使配置生效。


免責聲明!

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



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