Hbase的優化解決方案

2021-10-01 07:39:07 字數 1045 閱讀 1575

1.hbase的periodic flusher

一般hbase在預設情況下回自動觸發flush操作,初衷是為了防止有些memstore長時間不flush,在沒有進行wal的情況下,出現資料的丟失.由於我們的hbase每個region server 有將近100個resign,幾乎每分鐘都有region因為達到一小時的時間間隔觸發flush,而多數情況下每次flesh的檔案都很小,flush次數多了,就是引起compact如此頻繁的flush和compation使得region server處理速度明顯變慢.在我們將這個配置調整10小時後,可以明顯提高hbase效能

2.在clink高併發訪問hbase的時候,hregion server 的執行者handler都在執行任務的過程中,新到的clink還在排隊等待handler的執行,回到上timeoutexecption.所以此時可以降低併發訪問hbase的程序數,為了不降低效能,在程序內部使用更多的執行緒.由於執行緒見是共享對hbase的連線的,所以增加對hbase的連線數.

3.避免hbase的熱點問題.

​在作了較多優化改進後發現仍有幾個worker比較慢,跟蹤那幾個慢的worker日誌發現讀hbase經常超時,找到超時的region server,從hmaster ui上觀察到這個server的讀寫請求數明顯是其它server的好幾倍。開始懷疑是資料有傾斜,有熱點region落到了這台機器上。在hbase ui上逐個檢查pora2用到的hbase表,果然在其中的一張表上發現它的第乙個region的請求數比其它region高出一兩個數量級。

按我們的設計預期,這個表的rowkey是加了hash字首的(我們使用的rowkey設計是:3位隨機數+表名+時間搓),理論上不該有熱點region,最終檢查**後才發現是生成rowkey的**存在bug,生成字首的**用了 key.hashcode() % regionnum,結果有很多key的hashcode返回是負數,使得很多字首是負數,全都落在了第乙個region上。

而對hbase來說,一旦有乙個region有熱點,就會導致該region所在的region server變慢,進而使得這個server上其它表的region訪問也慢,從而影響了整個hbase的效能。

HIVE優化 解決方案

1.開啟並行引數 set hive.exec.parallel true set hive.exec.parallel.thread.number 16 同乙個sql允許最大並行度,預設為8 2.負載均衡引數 只針對groupby操作的傾斜 set hive.groupby.skewindata t...

App啟動優化解決方案

首先,定義執行緒排程類,dispatcherexecutor。這個類的主要作用就是初始化執行緒池,作為接收所有任務的容器類。在oncreate方法中,初始化任務物件,然後將各個物件塞入任務容器,這裡邊會有乙個演算法的操作,稱為有向無環圖的拓撲排序,將有依賴關係的各任務執行關係進行排序,排序好的任務會...

Zen Cart 程式站內優化解決方案

zen cart 程式站內優化解決方案 眾所周知,zen cart是最好的 程式之一,但與生俱來的一些程式問題干擾了站內搜尋引擎優化。所以需要通過外掛程式的應用及2次開發來達到我們更好的通過搜尋引擎銷售產 品的目的。解決方法 安裝優化外掛程式 用於優化分類及產品頁面meta等標籤 用於提高產品展示的...