硬件配置優化
hbase.regionserver.global.memstore.size參數控制MemStore大?。ㄍǔ槎褍却娴?0%-40%),避免內存溢出。操作系統調優
ulimit -n 65535),避免因連接數過多導致查詢失敗。sysctl -w net.core.rmem_max=16777216和sysctl -w net.core.wmem_max=16777216增大TCP讀寫緩沖區,提升網絡傳輸效率。vm.swappiness=0(在/etc/sysctl.conf中),避免系統將內存數據交換到磁盤,影響HBase性能。JVM調優
-XX:+UseG1GC),并通過-XX:MaxGCPauseMillis=200設置最大GC停頓時間(如200ms),減少GC對查詢的影響。HBase配置優化
hbase.hregion.max.filesize調整Region上限(如10GB-20GB),避免單個Region過大導致查詢變慢。hbase.regionserver.memstore.flush.size(如128MB-256MB)控制MemStore刷新閾值;選擇高效WAL編碼器(如org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec),減少WAL寫入開銷。hfile.block.cache.size參數)。TieredCompactionPolicy),并避免在業務高峰期執行Major Compaction,減少系統資源消耗。數據模型設計
timestamp_reverse = Long.MAX_VALUE - timestamp)技術,使RowKey均勻分布;設計時考慮查詢模式(如前綴匹配),提高查詢效率。SPLIT參數預先劃分Region(如按時間范圍或哈希值劃分),避免后期數據傾斜導致的RegionServer負載不均。客戶端優化
Scan.setCaching()值(如從默認100提升至500-1000),減少客戶端與RegionServer間的RPC交互次數。BufferedMutator接口執行批量Put/Delete操作,降低RPC調用頻率;查詢時使用批量Get(Table.get(List<Get>)),提高讀取效率。Scan.addFamily(Bytes.toBytes("cf1")))或列(如Scan.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col1"))),避免加載多余數據。Scan.setCacheBlocks(false),防止緩存干擾實時業務數據。查詢優化技巧
SingleColumnValueFilter用于條件篩選、PrefixFilter用于前綴匹配),在服務器端過濾數據,減少返回結果集大小。Endpoint Coprocessor)在RegionServer端執行自定義邏輯(如聚合計算),減少客戶端與RegionServer間的網絡傳輸開銷。監控與迭代
hbase-regionserver.log),查找慢查詢、GC停頓等問題,針對性調整配置。YCSB(Yahoo Cloud Serving Benchmark)等工具模擬真實業務負載,評估優化效果,并根據測試結果進一步調整參數。