1. 程式人生 > >hbase快速入門之---引數調優

hbase快速入門之---引數調優

Ø建立自定義的預分割槽 預設情況下,在建立HBase表的時候會自動建立一個region分割槽,當匯入資料的時候,所有的HBase客戶端都向這一個region寫資料,直到這個region足夠大了才進行切分。一種可以加快批量寫入速度的方法是通過預先建立一些空的regions,這樣當資料寫入HBase時,會按照region分割槽情況,在叢集內做資料的負載均衡。 Ø增加Regionserver的處理執行緒 hbase.regionserver.handler.countRegionServer端開啟的RPC監聽器例項個數,也即RegionServer能夠處理的IO請求執行緒數。預設是10. 此引數與記憶體息息相關。該值設定的時候,以監控記憶體為主要參考。
對於 單次請求記憶體消耗較高的Big PUT場景(大容量單次PUT或設定了較大cachescan,均屬於Big PUT)或ReigonServer的記憶體比較緊張的場景,可以設定的相對較小。 對於 單次請求記憶體消耗低,TPSTransactionPerSecond,每秒事務處理量)要求非常高的場景,可以設定的相對大些。 Ø使用noatime nodiratime 掛載磁碟 如果你以noatime 掛載磁碟,訪問時間戳不會更新,當一個檔案在檔案系統中被讀的時候。在這個nodiratime 屬性情況中,掛載磁碟不會更新檔案系統中目錄的inode 訪問時間。因為它們沒有更多的磁碟I/O
更新訪問時間戳,這提升了檔案系統的訪問速度。 Øvm.swappiness 設定成0 來避免swap Linux移動那些一段時間沒有被訪問的記憶體頁到swap 空間,即使它由足夠可用的記憶體。這叫做swap out。換一句話說,從swap 空間讀swapped out 的資料到記憶體中叫做swap 。如果HBase使用的記憶體被swapped了,HBase執行可能會遇到問題,如會增加GC時間等。 ØJava GCHBase堆設定 因為HBase 執行在JVM,JVM 的 Garbage Collection(GC) 設定對於HBase 流暢的執行,更高的效能是非常重要的。建議HBase
的最大堆記憶體不要超過16 GB,並將垃圾回收機制設定為CMS 同時HBase 程序輸出到它們的GC 日誌中是同樣重要的,可以根據GC 日誌來定位問題,或調整JVM 設定。 另外可以設定hbase.hregion.memstore.mslab.enabledtrue,來預防老年代堆碎片,減少因記憶體碎片導致的Full GC,提高整體效能 Ø增加HBase使用者的File handlesprocess limits 作業系統預設的nofile nproc對於HBase來說偏小,在高併發的情況下會使用HBase出現問題。建議增大nofile nproc設定。 Ø增加DATANODE處理執行緒數 HBaseDatanode做為底層的儲存,可能會同時開啟較多的hdfs檔案,因些需要增大預設的dfs.datanode.max.transfer.threads引數。 Øhbase.hregion.max.filesize 在當前ReigonServer上單個Reigon的最大儲存空間,單個Region超過該值時,這個Region會被自動split成更小的region。對於0.90.x版本該引數的最大值為4GB,之後的版本最大值 可以達到20GB510GB是最優的。 Ø增大zookeepermaxClientCnxns 預設zookeeper給每個客戶端IP使用的連線數為10個,可能會出現連線不夠用的情況。可以增大maxClientCnxns引數。 Ø增大hbase.hstore.blockingStoreFiles flush時,當一個region中的Store(Coulmn Family)內有超過7storefile時,則block所有的寫請求進行compaction,以減少storefile數量。可以增加為20 Øhfile.block.cache.size storefile的讀快取佔用Heap的大小百分比,0.2表示20%。該值直接影響資料讀的效能。如果寫比讀少很多,可以開到0.4-0.5。如果讀寫較均衡,0.3左右。如果寫比讀多,可以使用預設值。