1. 程式人生 > >hbase和hive的一些調優心得

hbase和hive的一些調優心得

Hive優化:
1、開啟limit,防止過多的資料查詢造成時延
2、開啟嚴格模式,禁止三種模式的查詢(查詢全部分割槽而沒有where限制、使用order by查詢而沒有limit限制,表聯結使用on以限制笛卡兒積的查詢)
3、合理的設定map reduce的個數,不能過多或者過少
4、使用本地模式,對於一些資料量小的查詢,減少開啟job的時間
5、使用map端jion,將資料量小的表,放在join的左邊,直接加入記憶體
6、推測執行,這是對MR的優化,防止出現木桶效應
7、設定並行度,讓一些不相關的stage能夠並行執行,加速任務的完成
8、JVM重用,通過在配置檔案中設定一些引數,來配置某些task的stage重用JVM,減少任務的開啟時間
9、建立索引,加快查詢
10、調整動態分割槽的數量,儘量高,不能太高,1000個左右最好
11、設定中間和reduce結果進行壓縮,減少佔用空間


HBase優化:
1、hbase查詢優化
1> 設定scan快取,定義服務端到客戶端的資料條數
2> 顯示指定查詢列,避免太多的資料傳輸造成網路壓力
3 >設定過濾,只查詢需要的資料,比如行鍵
4 >使用HTablePool,解決HTable執行緒不安全的情況
5 >關閉ResultScanner,保證連線不會一直佔用
2、hbase寫入優化
1 >關閉WAL,避免每次寫入資料都要先寫入日誌檔案
2 >關閉AutoFlush,避免使用者每次提交資料都直接傳送到了伺服器端,可以在客戶端進行快取
3 >預建立Region,使用自帶的分割槽工具或者自定義分割槽演算法都行
4 >延遲日誌flush的時間,預設值為1秒,可以增大該值,將資料在記憶體中少留一會,較少WAL日誌到HDFS的次數
5 >使用批量寫,通過put方法,指定多個行鍵,批量寫入
3、hbase配置引數優化
1 >設定RegionServer的handler數量,預設為10,適當的增大,可以提高服務端同時接收請求的執行緒數量,一般為10 的整數倍
2 >合理的設定MemStore的上下限
3 >調整影響合併的檔案數,就是調整觸發StoreFile進行合併的檔案數量
4 >合理的設定MemStore的flush因子,也就是觸發memstore進行flush的記憶體大小
5 >調整zookeeper的會話時間,避免HMaster察覺某個RS宕機的時間太長
4、表設計優化
1 >開啟布隆過濾器
2 >調整列簇塊的大小,也就是HFile的大小
3 >設定列簇的最大版本數,避免一些更新非常頻繁的應用效率低下
4 >設定TTL,讓過期的資料自動刪除
5 >設定In Memory屬性,就放在In Memory佇列中