一、CentOS下HBase监控策略
http://<master-ip>:16010/master-status,可查看集群整体状态(如RegionServer数量、表分布)、RegionServer详细信息(如内存使用、请求队列长度)及表的Region分布情况。status 'simple'查看集群基本状态;list_regions 'table_name'查看指定表的Region分布;describe 'table_name'查看表结构(如列族、TTL设置);count 'table_name'统计表数据量。hbase-site.xml启用JMX端口(如hbase.regionserver.jmx.port=16020、hbase.master.jmx.port=16030),使用jconsole或VisualVM连接到对应端口,实时监控JVM内存(堆内存、GC情况)、线程状态及HBase内部指标(如读写延迟、Compaction进度)。hbase_regionserver_read_latency、hbase_regionserver_write_latency),通过Grafana创建仪表盘,可视化展示集群性能趋势(如读延迟波动、RegionServer负载),并设置报警规则(如延迟超过阈值触发邮件/短信通知)。gmetad)和监控节点(gmond),配置gmetad.conf添加HBase集群数据源,gmond.conf设置监控节点信息,通过Ganglia Web界面查看CPU、内存、磁盘、网络等系统指标及HBase业务指标(如QPS、Region数量)。/var/log/hbase/hbase-master.log)和RegionServer(/var/log/hbase/hbase-regionserver.log)日志,关注异常信息(如Region split失败、Compaction卡顿、连接超时),使用grep、awk等工具提取关键错误(如ERROR、WARN级别日志)。二、CentOS下HBase调优策略
vm.swappiness=0,避免内存不足时频繁换页);使用64位操作系统(支持更大内存寻址);调整文件系统缓存(如vm.dirty_ratio=10、vm.dirty_background_ratio=5,优化脏页刷盘策略)。hbase.regionserver.heapsize(如设置为24GB,占服务器内存的70%-80%);优化hbase.regionserver.global.memstore.size(如设置为0.4,控制MemStore总大小,避免频繁刷盘);增加hbase.regionserver.handler.count(如设置为100,提升RPC请求处理能力)。hbase.client.autoFlush=false,减少小写请求);增大hbase.client.write.buffer(如设置为2MB,批量写入数据);启用批量写入(table.put(List<Put>),减少网络IO)。hbase.hregion.compress.algo=snappy,减少存储空间占用和网络传输开销);合理分配hbase.cache.blocksize(如设置为128KB,适配数据块大小)和hbase.cache.size(如设置为0.25,控制BlockCache占总内存的比例,提升读缓存命中率)。user_id_timestamp、reverse_timestamp,使数据均匀分布);根据查询模式设计行键(如将常用查询条件作为行键前缀)。SPLIT_KEYS参数预创建Regions(如create 'user_table', 'cf1', SPLITS=>['1000','2000','3000']),避免后续自动split导致的性能波动,提升写入和查询效率。hbase.hstore.compaction.min(如5,最小参与compaction的HFile数量)和hbase.hstore.compaction.max(如10,最大参与数量),避免过多HFile同时参与导致IO飙升。hbase.hstore.compaction.offpeak.start.hour=2、hbase.hstore.compaction.offpeak.end.hour=6,在低峰期执行compaction,减少对业务的影响);根据数据热度选择策略(如RatioBasedCompactionPolicy,优先合并小文件)。hbase.hregion.max.filesize(如10GB-20GB,避免Region过大导致split耗时过长,或过小导致RegionServer负载过高)。hbase.master.loadbalancer.enabled=true),定期执行balance命令(hbase shell> balance),使Region均匀分布在各个RegionServer上,避免单点过载。