1. 程式人生 > >Hhbase效能優化配置

Hhbase效能優化配置

最主要的是IO的操作(重點)

不要在一張表裡定義太多的Column Family

  • Hbase目前不能良好的處理超過包含2-3個CF的表。
  • 因為某個CF在flush發生時,它鄰近的CF也會因關聯效應被觸發flush,最終導致系統產生更多IO

配置優化

  • zookeeper.session.timeout
    1.預設的是3分鐘
    2.RegionServer與Zookeeper間的連線超時時間。當超時時間到後,ReigonServer會被Zookeeper從RS叢集清單中移除,HMaster收到移除通知後,會對這臺server負責的regions重新balance,讓其他存活的RegionServer接管.
    3.regionserver ->(連線超時) zookeeper ->(傳遞給) hmaster ->(重新分配) region

  • hbase.hregion.max.filesize
    1.預設是256M
    2.在當前ReigonServer上單個Reigon的最大儲存空間,單個Region超過該值時,這個Region會被自動split成更小的region

  • 壓縮
    1.當對壓縮速度由較高的要求的時候,我們用LZO
    2.當對壓縮率有要求時(對儲存空間)我們用GZIP(預設的)

  • 批量匯入
    1.在批量匯入資料到Hbase前,你可以通過預先建立regions,來平衡資料的負載(負載均衡)

  • autoflush
    1.將HTABLE的setAutoFlush設定為false,可以支援客戶端批量更新.即當Put填滿客戶端flush快取時,才傳送到服務端,預設是true

  • Scan Caching
    1.scanner一次快取多少資料來scan(從服務端一次抓多少資料回來scan)。
    預設值是 1,一次只取一行。

  • Scan Attribute Selection
    1.scan時建議指定需要的Column Family,減少通訊量,否則scan操作預設會返回整個row的所有資料(所有Coulmn Family)。

  • Close ResultScanners
    1.通過scan取完資料後,記得要關閉ResultScanner,否則RegionServer可能會出現問題(對應的Server資源無法釋放)

  • Optimal Loading of Row Keys
    1.當你scan一張表的時候,返回結果只需要row key(不需要CF, qualifier,values,timestaps)時,你可以在scan例項中新增一個filterList,並設定 MUST_PASS_ALL操作,filterList中add?FirstKeyOnlyFilter或KeyOnlyFilter。這樣可以減少網路通訊量。

  • Turn off WAL on Puts
    1.當Put某些非重要資料時,你可以設定writeToWAL(false),來進一步提高寫效能。writeToWAL(false)會在Put時放棄寫WAL log。風險是,當RegionServer宕機時,可能你剛才Put的那些資料會丟失,且無法恢復

  • hbase對於記憶體有特別的嗜好,在硬體允許的情況下配足夠多的記憶體給它。
    通過修改hbase-env.sh中的
    export HBASE_HEAPSIZE=3000 #這裡預設為1000m