1. 首页 > Hadoop教程 > 正文

大数据教程FG079-HBase监控与运维实战

本文档风哥主要介绍HBase监控与运维实战,包括监控体系、核心指标、告警机制、日常运维等内容,风哥教程参考HBase官方文档Monitoring、Metrics等内容,适合大数据开发运维人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 监控体系概述

HBase监控体系是保障集群稳定运行的重要组成部分,通过监控可以及时发现和解决问题。学习交流加群风哥微信: itpux-com

HBase监控方式:

  • Web UI:HBase内置Web界面
  • JMX:Java Management Extensions
  • Metrics:HBase Metrics系统
  • 第三方工具:Prometheus、Grafana等
# HBase监控架构

1. 数据采集层
– JMX Bean:暴露内部指标
– Metrics Sink:指标输出
– Log:日志信息

2. 数据传输层
– HTTP接口
– JMX远程连接
– Agent采集

3. 数据存储层
– 时序数据库
– 日志系统
– 文件系统

4. 数据展示层
– Web UI
– Grafana Dashboard
– 自定义报表

5. 告警层
– 阈值告警
– 趋势告警
– 智能告警

# HBase Web UI

Master Web UI: http://master:16010
RegionServer Web UI: http://regionserver:16030

功能:
– 集群状态概览
– 表和Region信息
– RegionServer状态
– 任务进度
– 日志查看

# JMX监控

JMX端口:
– Master: 16010
– RegionServer: 16030

MBean分类:
– Hadoop: HDFS相关
– HBase: HBase相关
– Java: JVM相关

# Metrics系统

Metrics类型:
– Gauge:瞬时值
– Counter:计数器
– Histogram:直方图
– Meter:速率

Metrics输出:
– Console
– JMX
– File
– Prometheus
– Graphite

1.2 核心指标详解

HBase核心指标详解:

# Master指标

1. 集群状态
– numRegionServers:RegionServer数量
– numDeadRegionServers:死亡RegionServer数量
– averageLoad:平均负载

2. Region管理
– ritCount:Region In Transition数量
– ritCountOverThreshold:超时Region数量
– assignNumOps:分配操作次数

3. 请求处理
– masterActiveTime:Master活跃时间
– masterStartTime:Master启动时间

# RegionServer指标

1. 请求指标
– readRequestCount:读请求数
– writeRequestCount:写请求数
– requestsPerSecond:每秒请求数

2. 内存指标
– memStoreSize:MemStore大小
– blockCacheSize:BlockCache大小
– blockCacheHitCount:缓存命中数
– blockCacheMissCount:缓存未命中数
– blockCacheHitRatio:缓存命中率

3. Region指标
– numberOfOnlineRegions:在线Region数量
– numberOfStores:Store数量
– numberOfStorefiles:StoreFile数量
– storeFileSize:StoreFile大小

4. Compaction指标
– compactionQueueLength:压缩队列长度
– flushQueueLength:Flush队列长度
– compactionTime:压缩时间
– flushTime:Flush时间

5. JVM指标
– memHeapUsedM:堆内存使用
– memHeapMaxM:最大堆内存
– gcCount:GC次数
– gcTimeMillis:GC时间

# 表级别指标

1. 请求指标
– readRequestCount:读请求数
– writeRequestCount:写请求数

2. Region指标
– regionCount:Region数量
– storeCount:Store数量
– storeFileCount:StoreFile数量

3. 大小指标
– storeFileSize:StoreFile大小
– memStoreSize:MemStore大小

# 关键指标阈值

1. 内存指标
– memStoreSize > 80%:告警
– blockCacheHitRatio < 50%:告警 2. 请求指标 - requestsPerSecond > 10000:关注
– readRequestLatency > 100ms:告警

3. Region指标
– ritCount > 10:告警
– numberOfOnlineRegions < 预期:告警 4. JVM指标 - gcTimeMillis > 1000ms:告警
– memHeapUsedM > 80%:告警

1.3 告警机制设计

告警机制设计详解:

# 告警级别

1. P0(紧急)
– 集群不可用
– 数据丢失风险
– 响应时间:< 5分钟 2. P1(严重) - RegionServer宕机 - Region长时间In Transition - 响应时间:< 15分钟 3. P2(警告) - 内存使用率高 - GC频繁 - 响应时间:< 30分钟 4. P3(提示) - 性能下降 - 容量预警 - 响应时间:< 2小时 # 告警规则示例 1. RegionServer宕机 条件:numDeadRegionServers > 0
级别:P1
通知:短信 + 电话

2. Region In Transition超时
条件:ritCountOverThreshold > 0
级别:P1
通知:短信

3. 内存使用率高
条件:memHeapUsedM / memHeapMaxM > 0.8
级别:P2
通知:邮件

4. BlockCache命中率低
条件:blockCacheHitRatio < 0.5 级别:P2 通知:邮件 5. GC时间长 条件:gcTimeMillis > 1000
级别:P2
通知:邮件

# 告警通知方式

1. 短信通知
– 紧急告警
– 严重告警

2. 邮件通知
– 警告告警
– 提示告警
– 告警汇总

3. 电话通知
– 紧急告警
– 值班人员

4. IM通知
– 企业微信
– 钉钉
– Slack

# 告警抑制

1. 时间抑制
– 同一告警5分钟内不重复

2. 关联抑制
– 父告警抑制子告警

3. 维护抑制
– 维护期间抑制告警

风哥提示:监控告警是运维的眼睛,建立完善的监控告警体系可以及时发现和解决问题,保障集群稳定运行。

Part02-生产环境规划与建议

2.1 监控规划建议

监控规划建议:

# 监控架构规划

1. 监控工具选择
– 基础监控:Prometheus + Grafana
– 日志监控:ELK Stack
– JVM监控:JMX + Grafana
– 自定义监控:脚本 + API

2. 监控数据保留
– 实时数据:7天
– 历史数据:90天
– 归档数据:1年

3. 监控数据采样
– 实时监控:15秒
– 历史监控:1分钟
– 归档监控:5分钟

# 监控部署规划

1. 监控服务器
– Prometheus:4核8GB
– Grafana:2核4GB
– AlertManager:2核4GB

2. 网络规划
– 监控网络独立
– 带宽充足
– 低延迟

3. 高可用规划
– Prometheus高可用
– AlertManager集群
– 数据备份

# 监控指标规划

1. 基础指标
– CPU使用率
– 内存使用率
– 磁盘使用率
– 网络流量

2. JVM指标
– 堆内存使用
– GC频率和时间
– 线程数

3. HBase指标
– 请求QPS
– 请求延迟
– Region数量
– Compaction状态

4. 业务指标
– 表数据量
– 读写分布
– 热点Region

2.2 指标规划建议

指标规划建议:

# 核心监控指标

1. 集群健康指标
指标名称:numRegionServers
阈值:等于预期数量
告警:小于预期数量

指标名称:numDeadRegionServers
阈值:0
告警:大于0

指标名称:ritCount
阈值:0
告警:大于10

2. 性能指标
指标名称:readRequestLatency_mean
阈值:< 50ms 告警:> 100ms

指标名称:writeRequestLatency_mean
阈值:< 20ms 告警:> 50ms

指标名称:blockCacheHitRatio
阈值:> 80%
告警:< 50% 3. 容量指标 指标名称:memStoreSize 阈值:< 80% global memstore 告警:> 90%

指标名称:storeFileSize
阈值:根据规划
告警:超过规划80%

指标名称:compactionQueueLength
阈值:< 10 告警:> 20

4. JVM指标
指标名称:memHeapUsedM
阈值:< 80% 告警:> 90%

指标名称:gcTimeMillis
阈值:< 500ms/min 告警:> 1000ms/min

# 监控大盘设计

1. 集群概览大盘
– 集群状态
– RegionServer状态
– 请求QPS
– 平均延迟

2. RegionServer大盘
– 每个RegionServer状态
– 内存使用
– Region数量
– 请求分布

3. 表监控大盘
– 表数据量
– 读写QPS
– Region分布
– 热点分析

4. JVM监控大盘
– 堆内存使用
– GC统计
– 线程状态
– 类加载

2.3 告警规划建议

告警规划建议:

# 告警规则配置

# Prometheus告警规则示例
groups:
– name: hbase_alerts
rules:
# RegionServer宕机告警
– alert: HBaseRegionServerDown
expr: hbase_regionserver_numDeadRegionServers > 0
for: 1m
labels:
severity: critical
annotations:
summary: “HBase RegionServer宕机”
description: “发现 {{ $value }} 个RegionServer宕机”

# Region In Transition告警
– alert: HBaseRegionInTransition
expr: hbase_master_ritCountOverThreshold > 0
for: 5m
labels:
severity: warning
annotations:
summary: “HBase Region长时间In Transition”
description: “{{ $value }} 个Region处于In Transition状态超过阈值”

# 内存使用率高告警
– alert: HBaseHighMemoryUsage
expr: hbase_regionserver_memStoreSize / hbase_regionserver_globalMemstoreSize > 0.8
for: 5m
labels:
severity: warning
annotations:
summary: “HBase内存使用率高”
description: “RegionServer {{ $labels.instance }} 内存使用率 {{ $value }}”

# BlockCache命中率低告警
– alert: HBaseLowCacheHitRatio
expr: hbase_regionserver_blockCacheHitRatio < 0.5 for: 10m labels: severity: warning annotations: summary: "HBase缓存命中率低" description: "RegionServer {{ $labels.instance }} 缓存命中率 {{ $value }}" # GC时间长告警 - alert: HBaseLongGCTime expr: rate(jvm_gc_collection_seconds_sum[1m]) > 0.5
for: 5m
labels:
severity: warning
annotations:
summary: “HBase GC时间长”
description: “RegionServer {{ $labels.instance }} GC时间过长”

# 告警通知配置

# AlertManager配置示例
global:
resolve_timeout: 5m
smtp_smarthost: ‘smtp.fgedu.net.cn:25’
smtp_from: ‘alert@fgedu.net.cn’

route:
group_by: [‘alertname’, ‘severity’]
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
receiver: ‘default’
routes:
– match:
severity: critical
receiver: ‘critical’
– match:
severity: warning
receiver: ‘warning’

receivers:
– name: ‘default’
email_configs:
– to: ‘admin@fgedu.net.cn’

– name: ‘critical’
email_configs:
– to: ‘admin@fgedu.net.cn’
webhook_configs:
– url: ‘http://alertmanager-webhook:5001/critical’

– name: ‘warning’
email_configs:
– to: ‘admin@fgedu.net.cn’
send_resolved: true

生产环境建议:生产环境建议建立完善的监控告警体系,使用Prometheus+Grafana进行监控,配置合理的告警规则和通知方式。学习交流加群风哥QQ113257174

Part03-生产环境项目实施方案

3.1 Web UI监控实战

3.1.1 Master Web UI

# 访问Master Web UI
http://fgedu-node1:16010

# Master Web UI功能

1. 集群概览
– Master状态
– RegionServer列表
– 集群负载
– Region分布

2. 表管理
– 表列表
– 表详情
– Region分布
– 表状态

3. RegionServer管理
– RegionServer列表
– RegionServer详情
– Region分布
– 负载情况

4. 任务管理
– Procedures
– 任务进度
– 锁信息

# 通过Shell查看状态
hbase(main):001:0> status

active master: fgedu-node1:16000
1 backup masters
fgedu-node2:16000
3 live servers
fgedu-node3:16020
requestsPerSecond=10.0, numberOfOnlineRegions=50, usedHeapMB=1024, maxHeapMB=32768
fgedu-node4:16020
requestsPerSecond=8.0, numberOfOnlineRegions=50, usedHeapMB=1024, maxHeapMB=32768
fgedu-node5:16020
requestsPerSecond=12.0, numberOfOnlineRegions=50, usedHeapMB=1024, maxHeapMB=32768
0 dead servers
Master is fgedu-node1:16000

# 查看详细状态
hbase(main):002:0> status ‘detailed’

active master: fgedu-node1:16000

# 查看RegionServer状态
hbase(main):003:0> status ‘simple’

active master: fgedu-node1:16000
3 live servers
fgedu-node3:16020
fgedu-node4:16020
fgedu-node5:16020
0 dead servers

3.1.2 RegionServer Web UI

# 访问RegionServer Web UI
http://fgedu-node3:16030

# RegionServer Web UI功能

1. RegionServer概览
– RegionServer状态
– 内存使用
– Region数量
– 请求统计

2. BlockCache监控
– 缓存大小
– 命中率
– 驱逐统计

3. MemStore监控
– MemStore大小
– Flush统计

4. Compaction监控
– 压缩队列
– 压缩统计

5. Region列表
– Region名称
– Region大小
– 请求数

# 通过Shell查看RegionServer信息
hbase(main):004:0> list_regions ‘fgedu_user’

TABLE REGION_NAME STARTKEY ENDKEY SIZE REGIONSERVER
fgedu_user fgedu_user,,1680940800000.abc123 (null) 10000000 2.5G fgedu-node3:16020
fgedu_user fgedu_user,10000000,1680940800001.def456 10000000 20000000 3.1G fgedu-node4:16020
fgedu_user fgedu_user,20000000,1680940800002.ghi789 20000000 (null) 1.9G fgedu-node5:16020
3 row(s)

# 查看RegionServer日志
$ tail -f /bigdata/logs/hbase/hbase-hbase-regionserver-fgedu-node3.log

2026-04-08 13:00:00,123 INFO [regionserver/fgedu-node3/192.168.1.63:16020] regionserver.HRegionServer: Serving region fgedu_user,,1680940800000.abc123
2026-04-08 13:00:01,234 INFO [regionserver/fgedu-node3/192.168.1.63:16020] regionserver.HRegionServer: Received request to open region: fgedu_user,10000000,1680940800001.def456

3.2 JMX监控实战

3.2.1 JMX配置

# 配置JMX远程访问

# hbase-env.sh
export HBASE_JMX_BASE=”-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false”
export HBASE_MASTER_OPTS=”$HBASE_MASTER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=16011 -Dcom.sun.management.jmxremote.authenticate=false”
export HBASE_REGIONSERVER_OPTS=”$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=16031 -Dcom.sun.management.jmxremote.authenticate=false”

# 重启HBase服务
$ /bigdata/app/hbase/bin/stop-hbase.sh
$ /bigdata/app/hbase/bin/start-hbase.sh

# 使用JConsole连接
# 连接地址:service:jmx:rmi:///jndi/rmi://fgedu-node1:16011/jmxrmi

# 使用JVisualVM连接
# 添加JMX连接:fgedu-node1:16011

# 使用命令行获取JMX数据
$ jcmd $(pgrep -f HMaster) VM.flags

12345:
-XX:CICompilerCount=4 -XX:ConcGCThreads=4 -XX:G1HeapRegionSize=32M …

# 使用jstat监控GC
$ jstat -gc $(pgrep -f HRegionServer) 1000

S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT CGC CGCT GCT
10240.0 10240.0 0.0 1024.0 102400.0 51200.0 2097152.0 1048576.0 65536.0 64000.0 8192.0 8000.0 123 5.678 0 0.000 12 1.234 6.912

3.2.2 JMX指标获取

# 使用JMX获取HBase指标

# 1. 使用jmxterm
$ java -jar jmxterm.jar

Welcome to JMX terminal. Type “help” for available commands.
$>open fgedu-node1:16011
Connection to fgedu-node1:16011 is opened.
$>beans
#domain = Hadoop:
Hadoop:name=Master,service=HBase,sub=Server;
Hadoop:name=Master,service=HBase,sub=AssignmentManger;

$>bean Hadoop:name=Master,service=HBase,sub=Server
#bean is set to Hadoop:name=Master,service=HBase,sub=Server
$>attr numRegionServers
20
$>attr averageLoad
15.5

# 2. 使用curl获取JMX数据
$ curl -s http://fgedu-node1:16010/jmx | jq ‘.beans[] | select(.name == “Hadoop:name=Master,service=HBase,sub=Server”) | {numRegionServers, averageLoad}’

{
“numRegionServers”: 3,
“averageLoad”: 15.5
}

# 3. 获取RegionServer指标
$ curl -s http://fgedu-node3:16030/jmx | jq ‘.beans[] | select(.name == “Hadoop:name=RegionServer,service=HBase,sub=Server”) | {readRequestCount, writeRequestCount, blockCacheHitRatio}’

{
“readRequestCount”: 1234567,
“writeRequestCount”: 567890,
“blockCacheHitRatio”: 0.85
}

# 4. 获取JVM指标
$ curl -s http://fgedu-node3:16030/jmx | jq ‘.beans[] | select(.name == “java.lang:type=Memory”) | .HeapMemoryUsage’

{
“committed”: 34359738368,
“init”: 34359738368,
“max”: 34359738368,
“used”: 17179869184
}

3.3 Prometheus监控实战

3.3.1 Prometheus部署

# 安装Prometheus
$ wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
$ tar -xzf prometheus-2.45.0.linux-amd64.tar.gz
$ mv prometheus-2.45.0.linux-amd64 /bigdata/app/prometheus

# 配置Prometheus
$ cat > /bigdata/app/prometheus/prometheus.yml << 'EOF' global: scrape_interval: 15s evaluation_interval: 15s alerting: alertmanagers: - static_configs: - targets: - localhost:9093 rule_files: - "/bigdata/app/prometheus/rules/hbase.yml" scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'hbase-master' static_configs: - targets: - 'fgedu-node1:16010' - 'fgedu-node2:16010' metrics_path: '/jmx' - job_name: 'hbase-regionserver' static_configs: - targets: - 'fgedu-node3:16030' - 'fgedu-node4:16030' - 'fgedu-node5:16030' metrics_path: '/jmx' EOF # 创建告警规则目录 $ mkdir -p /bigdata/app/prometheus/rules # 创建告警规则 $ cat > /bigdata/app/prometheus/rules/hbase.yml << 'EOF' groups: - name: hbase_alerts rules: - alert: HBaseRegionServerDown expr: up{job="hbase-regionserver"} == 0 for: 1m labels: severity: critical annotations: summary: "HBase RegionServer宕机" description: "RegionServer {{ $labels.instance }} 宕机" EOF # 启动Prometheus $ /bigdata/app/prometheus/prometheus --config.file=/bigdata/app/prometheus/prometheus.yml & # 访问Prometheus UI http://fgedu-node1:9090

3.3.2 Grafana部署

# 安装Grafana
$ wget https://dl.grafana.com/oss/release/grafana-10.0.0.linux-amd64.tar.gz
$ tar -xzf grafana-10.0.0.linux-amd64.tar.gz
$ mv grafana-10.0.0 /bigdata/app/grafana

# 配置Grafana
$ cat > /bigdata/app/grafana/conf/provisioning/datasources/prometheus.yml << 'EOF' apiVersion: 1 datasources: - name: Prometheus type: prometheus access: proxy url: http://localhost:9090 isDefault: true EOF # 启动Grafana $ /bigdata/app/grafana/bin/grafana-server --homepath=/bigdata/app/grafana & # 访问Grafana http://fgedu-node1:3000 默认用户名/密码:admin/admin # 导入HBase Dashboard # Dashboard ID: 10370 (HBase Dashboard) # 或自定义Dashboard # 常用PromQL查询 # 1. RegionServer数量 count(up{job="hbase-regionserver"}) # 2. 读写QPS sum(rate(hbase_regionserver_readRequestCount[1m])) + sum(rate(hbase_regionserver_writeRequestCount[1m])) # 3. 平均延迟 avg(hbase_regionserver_readRequestLatency_mean) # 4. BlockCache命中率 avg(hbase_regionserver_blockCacheHitRatio) # 5. MemStore使用率 avg(hbase_regionserver_memStoreSize / hbase_regionserver_globalMemstoreSize)

风哥提示:Prometheus+Grafana是HBase监控的推荐方案。建议配置完善的监控大盘和告警规则,及时发现和解决问题。更多学习教程公众号风哥教程itpux_com

Part04-生产案例与实战讲解

4.1 日常运维案例

# 场景:日常巡检

# 1. 创建巡检脚本
$ cat > /bigdata/scripts/hbase_daily_check.sh << 'EOF' #!/bin/bash # hbase_daily_check.sh # from:www.itpux.com.qq113257174.wx:itpux-com # web: http://www.fgedu.net.cn DATE=$(date +%Y%m%d) LOG_FILE="/bigdata/logs/hbase/daily_check_$DATE.log" echo "========== HBase Daily Check Report ==========" > $LOG_FILE
echo “Date: $(date)” >> $LOG_FILE
echo “” >> $LOG_FILE

# 1. 集群状态
echo “1. Cluster Status:” >> $LOG_FILE
echo “status ‘simple'” | hbase shell >> $LOG_FILE 2>&1
echo “” >> $LOG_FILE

# 2. RegionServer状态
echo “2. RegionServer Status:” >> $LOG_FILE
curl -s http://fgedu-node1:16010/jmx | \
jq ‘.beans[] | select(.name == “Hadoop:name=Master,service=HBase,sub=Server”) | {numRegionServers, numDeadRegionServers, averageLoad}’ >> $LOG_FILE
echo “” >> $LOG_FILE

# 3. 内存使用
echo “3. Memory Usage:” >> $LOG_FILE
for rs in fgedu-node3 fgedu-node4 fgedu-node5; do
echo “RegionServer: $rs” >> $LOG_FILE
curl -s http://$rs:16030/jmx | \
jq ‘.beans[] | select(.name == “Hadoop:name=RegionServer,service=HBase,sub=Server”) | {memStoreSize, blockCacheSize}’ >> $LOG_FILE
done
echo “” >> $LOG_FILE

# 4. BlockCache命中率
echo “4. BlockCache Hit Ratio:” >> $LOG_FILE
for rs in fgedu-node3 fgedu-node4 fgedu-node5; do
echo “RegionServer: $rs” >> $LOG_FILE
curl -s http://$rs:16030/jmx | \
jq ‘.beans[] | select(.name == “Hadoop:name=RegionServer,service=HBase,sub=Server”) | .blockCacheHitRatio’ >> $LOG_FILE
done
echo “” >> $LOG_FILE

# 5. Region分布
echo “5. Region Distribution:” >> $LOG_FILE
for rs in fgedu-node3 fgedu-node4 fgedu-node5; do
echo “RegionServer: $rs” >> $LOG_FILE
curl -s http://$rs:16030/jmx | \
jq ‘.beans[] | select(.name == “Hadoop:name=RegionServer,service=HBase,sub=Server”) | .numberOfOnlineRegions’ >> $LOG_FILE
done
echo “” >> $LOG_FILE

# 6. Compaction队列
echo “6. Compaction Queue:” >> $LOG_FILE
for rs in fgedu-node3 fgedu-node4 fgedu-node5; do
echo “RegionServer: $rs” >> $LOG_FILE
curl -s http://$rs:16030/jmx | \
jq ‘.beans[] | select(.name == “Hadoop:name=RegionServer,service=HBase,sub=Server”) | .compactionQueueLength’ >> $LOG_FILE
done
echo “” >> $LOG_FILE

# 7. 表数据量
echo “7. Table Size:” >> $LOG_FILE
echo “list” | hbase shell | grep -v “row(s)” >> $LOG_FILE 2>&1
echo “” >> $LOG_FILE

echo “Daily check completed at $(date)” >> $LOG_FILE
echo “=============================================” >> $LOG_FILE

# 发送报告
mail -s “HBase Daily Check Report – $DATE” admin@fgedu.net.cn < $LOG_FILE EOF $ chmod +x /bigdata/scripts/hbase_daily_check.sh # 2. 执行巡检 $ /bigdata/scripts/hbase_daily_check.sh # 3. 配置定时任务 $ crontab -e # 每天早上8点执行巡检 0 8 * * * /bigdata/scripts/hbase_daily_check.sh

4.2 故障排查案例

# 场景:RegionServer宕机排查

# 1. 发现问题
# 告警:HBase RegionServer宕机

# 2. 查看集群状态
hbase(main):005:0> status

active master: fgedu-node1:16000
1 backup masters
fgedu-node2:16000
2 live servers
fgedu-node3:16020
fgedu-node4:16020
1 dead servers
fgedu-node5:16020
Master is fgedu-node1:16000

# 3. 查看宕机原因
$ grep -i “abort\|fatal\|error” /bigdata/logs/hbase/hbase-hbase-regionserver-fgedu-node5.log | tail -20

2026-04-08 13:00:00,123 FATAL [regionserver/fgedu-node5/192.168.1.65:16020] regionserver.HRegionServer: ABORTING region server fgedu-node5:16020: Unexpected exception in HRegionServer
java.lang.OutOfMemoryError: Java heap space
at org.apache.hadoop.hbase.regionserver.HRegionServer.doMiniBatchMutation(HRegionServer.java:4567)

# 4. 分析原因
# 原因:Java堆内存溢出

# 5. 解决方案
# a. 增加堆内存
# hbase-env.sh
export HBASE_REGIONSERVER_OPTS=”-Xms48g -Xmx48g”

# b. 调整MemStore配置 hbase.regionserver.global.memstore.size
0.35

# c. 启用堆外内存
export HBASE_REGIONSERVER_OPTS=”$HBASE_REGIONSERVER_OPTS -XX:MaxDirectMemorySize=16g”

# 6. 重启RegionServer
$ ssh fgedu-node5 “/bigdata/app/hbase/bin/hbase-daemon.sh start regionserver”

# 7. 验证恢复
hbase(main):006:0> status

active master: fgedu-node1:16000
1 backup masters
fgedu-node2:16000
3 live servers
fgedu-node3:16020
fgedu-node4:16020
fgedu-node5:16020
0 dead servers
Master is fgedu-node1:16000

4.3 常见问题处理

4.3.1 Region长时间In Transition

# 问题现象:Region长时间处于In Transition状态

# 排查步骤
# 1. 查看Region状态
hbase(main):007:0> list_regions ‘fgedu_user’

# 2. 查看Master日志
$ grep -i “transition” /bigdata/logs/hbase/hbase-hbase-master-fgedu-node1.log

# 解决方案
# 1. 查看Procedures
# Web UI -> Procedures

# 2. 手动分配Region
hbase(main):008:0> assign ‘region_encoded_name’

# 3. 使用HBCK修复
$ hbase hbck -fixAssignments

# 4. 重启Master
$ /bigdata/app/hbase/bin/hbase-daemon.sh stop master
$ /bigdata/app/hbase/bin/hbase-daemon.sh start master

4.3.2 性能下降排查

# 问题现象:查询性能下降

# 排查步骤
# 1. 查看请求延迟
# Prometheus -> HBase Dashboard

# 2. 查看GC情况
$ jstat -gc $(pgrep -f HRegionServer) 1000

# 3. 查看Compaction队列
# Web UI -> RegionServer -> Compaction

# 4. 查看磁盘IO
$ iostat -x 1

# 解决方案
# 1. 执行Major Compaction
hbase(main):009:0> major_compact ‘fgedu_user’

# 2. 调整BlockCache hfile.block.cache.size
0.5

# 3. 调整JVM参数
-XX:InitiatingHeapOccupancyPercent=40

# 4. 检查热点Region
# Web UI -> RegionServer -> Regions

Part05-风哥经验总结与分享

5.1 监控最佳实践

HBase监控最佳实践建议:

# 监控最佳实践
1. 建立完善的监控体系
2. 配置合理的告警规则
3. 定期巡检和演练
4. 保留历史监控数据
5. 建立运维知识库

5.2 运维建议

运维建议:

HBase运维建议:

  • 定期备份核心数据
  • 监控集群健康状态
  • 及时处理告警
  • 定期执行Compaction

5.3 工具推荐

监控运维工具:

  • Prometheus:监控系统
  • Grafana:可视化平台
  • AlertManager:告警管理
  • JMX:JVM监控
风哥提示:监控运维是保障HBase集群稳定运行的关键。建议建立完善的监控告警体系,定期巡检和演练,提高运维效率。from bigdata视频:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息