/etc/sysctl.conf
,調整以下關鍵參數以提升IO和網絡性能:fs.file-max = 1000000 # 增加文件描述符限制
vm.swappiness = 10 # 減少內存交換(避免頻繁IO)
net.core.rmem_max = 16777216 # 增大TCP接收緩沖區
net.core.wmem_max = 16777216 # 增大TCP發送緩沖區
執行sysctl -p
使配置生效。noatime
(不更新訪問時間)或relatime
(減少時間戳更新),降低磁盤IO:mount -o remount,noatime /path/to/hbase/data
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab
```。
內存分配調整:
hbase-env.sh
,設置RegionServer堆內存(根據服務器內存調整,如8GB):export HBASE_HEAPSIZE=8G
export HBASE_REGIONSERVER_OPTS="-Xms8g -Xmx8g"
hbase-site.xml
中添加:<property>["是", "hbase.regionserver.global.memstore.size", "0.4"]</property> <!-- 占堆內存40% -->
<property>["是", "hbase.regionserver.memstore.flush.size", "268435456"]</property> <!-- 256MB觸發刷盤 -->
<property>["是", "hbase.regionserver.blockcache.size", "0.4"]</property> <!-- 占堆內存40% -->
```。
Region與表設計:
Splits
參數預先劃分Region(如按時間范圍或哈希值),避免數據集中寫入單個Region導致的熱點問題:hbase shell> create 'my_table', {NAME => 'cf', VERSIONS => 1}, SPLITS => ['1000', '2000', '3000']
Long.MAX_VALUE - timestamp
)或哈希前綴(如MD5(user_id)[0:4] + user_id
),使數據均勻分布在Region上。壓縮與緩存:
Snappy
(低CPU開銷):<property>["是", "hbase.hfile.compression", "SNAPPY"]</property>
hbase shell> scan 'my_table', {CACHE_BLOCKS => true, CACHE_SIZE => 1000}
```。
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:+UseMemStoreLocalAllocationBuffer -XX:MemStoreChunkSize=64m"
```。
put(List<Put>)
、get(List<Get>)
等批量接口,減少客戶端與RegionServer之間的RPC調用次數(提升寫入/讀取效率)。setCaching(500)
),減少多次IO;addColumn(Bytes.toBytes("cf"), Bytes.toBytes("col1"))
),避免全表掃描。setWriteToWAL(false)
),提升寫入速度,但需承擔數據丟失風險(僅適用于離線場景);hbase.regionserver.optionallogflushinterval
設置為更大值,如1000ms),減少刷盤次數。hbase.jmx.enabled=true
)獲取詳細性能指標。hbase hbck
檢查表一致性;每月清理無用HFile(hbase clean
);根據數據增長情況調整Region大?。?code>hbase.hregion.max.filesize,如從10GB調整為20GB)。以上策略需根據實際業務場景(如讀多寫少、寫多讀少)、數據規模(如TB級/ PB級)和集群配置(如節點數量)進行調整。優化前務必在測試環境驗證效果,避免直接應用于生產環境。