一、硬件資源分配
vm.swappiness=0,避免內存溢出時頻繁換頁影響性能);調整文件系統預讀設置(如blockdev --setra 8192 /dev/sda)以提高磁盤I/O效率。二、HBase核心配置參數調整
hbase-env.sh,設置HBASE_HEAPSIZE(如4G)及-Xmx/-Xms(如-Xmx4g -Xms4g),避免堆內存過大導致GC停頓過長(建議不超過服務器內存的70%)。hbase-site.xml配置內存比例,hbase.regionserver.global.memstore.size(默認0.4,建議0.3-0.4,控制MemStore總內存占比)、hbase.regionserver.global.memstore.lower.limit(默認0.38,MemStore下限,低于此值觸發 flush)、hfile.block.cache.size(默認0.4,控制BlockCache內存占比,用于緩存讀取數據,建議與MemStore比例協調,如0.3-0.4)。hbase.regionserver.handler.count(默認30,建議50-100),增加處理客戶端請求的線程數,提升并發處理能力。hbase.client.autoFlush=false(關閉自動刷新,批量寫入)、hbase.client.write.buffer(如2MB,增大寫入緩沖區大?。?,減少RPC調用次數;調整hbase.hregion.memstore.flush.size(默認128MB,建議256-512MB,控制MemStore刷新閾值),避免頻繁刷盤。hbase.hregion.compress.algo=snappy,Snappy平衡壓縮率與性能),減少存儲空間占用及網絡傳輸開銷;配置BlockCache(hfile.block.cache.size)緩存熱點數據,提升讀取性能。hbase shell或Java API預分區(如create 'table_name', 'cf', {NUMREGIONS => 10, SPLITALGO => 'HexStringSplit'}),將數據均勻分布到多個Region,避免熱點問題。三、表設計與數據管理
cf1、cf2),列族越多,Flush和Compaction的開銷越大。user_id_hash + timestamp,防止同一用戶數據集中在單個Region)。hbase.hcolumn.max.versions(如3,保留最近3個版本),減少舊版本數據占用空間;使用hbase.hcolumn.ttl(如2592000秒=30天),自動刪除過期數據,降低存儲成本。四、資源調度與管理
yarn-site.xml中的yarn.scheduler.maximum-allocation-mb(YARN最大分配內存)、yarn.nodemanager.resource.memory-mb(NodeManager可用內存),確保資源均衡分配。RegionNormalizer),可根據業務需求自定義分配策略(如StochasticLoadBalancer),將Region均勻分布到集群節點,避免單點過載。五、監控與調優
http://hmaster:16010)監控集群狀態(RegionServer內存、請求延遲、Region數量);集成第三方工具(如Ganglia、Nagios)監控系統資源(CPU、內存、磁盤I/O)。/var/log/hbase/),分析慢查詢、RegionServer異常(如OOM)等問題,及時調整配置。hbase.hstore.compaction.min.size(控制Minor Compaction頻率)、hbase.hstore.compaction.ratio(合并比例);Major Compaction:建議在業務低峰期手動觸發(hbase shell> major_compact 'table_name'),避免影響線上業務。