如何在Ubuntu系统上高效排查HBase故障,快速定位问题,显著提升运维效率?
- 内容介绍
- 文章标签
- 相关推荐
痛点直击:在Ubuntu上运行HBase时故障往往表现为服务不可用、写入超时或查询延迟。运维人员常被日志零散、端口冲突、资源告警等信息淹没。导致定位时间长、业务影响大,急需一套快速定位、高效处理的流程来明显提高运维效率。
一、快速定位流程
第一步先是通过最基础的网络与资源检查锁定问题范围,避免盲目翻日志。
-
检查网络连通性:
nc -vz验证到 ZooKeeper;2181 nc -vz/8020 9000检查 HDFS NameNode;nc -vz检查 HMaster。16010 -
检查程序资源:
-
free -h查看内存使用情况; -
top/htop观察 CPU/进程负载; -
iostat -x 1&vmstat 1检测磁盘 I/O; -
df -h关注 HDFS 数据目录及本地 HBase 本地目录剩余空间。
-
1. 进程未启动或启动失败
痛点:`jps` 中看不到 HMaster/HRegionServer,运维只能猜是脚本问题还是环境变量。不过,
-
$HBASE_HOME/logs/hbase-*-master*.log 和
*-regionserver*.log确认启动脚本方法和 JA_HOME 是否正确。
权限问题 文件权限导致 HBase 无法读取 HDFS 或本地目录,常被误认为是网络故障。
在执行hbase shell 时出现 Permission denied 错误。使用 sudo chown -R hbase:hbase /usr/local/hbase 调整 HBase 安装目录权限;对应的 HDFS 目录执行 sudo -u hdfs hdfs dfs -chown -R hbase:hbase /hbase。在部署脚本中统一设置所有相关目录的所有者为 hbase 使用者。
ZooKeeper 未就绪或配置错误 HMaster 日志反复出现 Connection refused 或 ZooKeeper not running运维却找不到 ZK 的实际地址。
ServerNotRunningYetException。先确认 ZK 集群状态: sudo service zookeeper status 或 echo srvr | nc localhost 2181 ;若未启动则 sudo service zookeeper start ;随后检查 $HBASE_HOME/conf/hbase-site.xmlhbase.zookeeper.quorum zk1。zk2,zk3 是否与实际 ZK 地址一致。
将 ZK 地址写入/etc/hosts` 或使用 DNS,并在所有节点保持一致。不过,
HDFS 安全模式导致写入失败 客户端报错 Safe mode is ON运维误以为是 HBase 本身问题。反复重新启动却无效,
hdfs dfs -put … 或 HBase 写操作时报 ServerNotRunningYetException 或 Safe mode is ON.* 处理执行 hdfs dfsadmin -safemode get 检查状态;若为 ON,则 hdfs dfsadmin -safemode leave ** **退出安全模式**。**预防**这方面,监控 NameNode 日志中的安全模式触发条件,提前清理或扩容磁盘。** **4. JAR 包冲突与类加载问题** **痛点**:出现ClassNotFoundError、NoSuchMethodError、SLF4J多绑定等异常,难以判断是哪个依赖版本冲突。处理进入 $HBASE_HOME/lib/client-facing-thirdparty*删除冲突的 slf4j‑log4j12‑.jar;在 $HBASE_HOME/conf/hbase-env.sh* 中添加 export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true ****代码**,强制使用 HBase 自带的类方法。** **5. RegionServer 频繁崩溃或未上线** **痛点**:Master UI 长期显示 0 活跃 RegionServer。**业务写入全部失败**,却不知道是 OOM 大区过大还是磁盘 I/O。** **处理**:
检查 RegionServer 日志 是否有 OutOfMemoryError 或 RegionTooBigException;若为 OOM,**调大堆内存**;若为 Region 大小过大,**使用 split 命令手动拆分**。** **6.表/列族/Region 异常** **痛点**:建表后仍报错 “Namespace not found” 或 “Invalid column family”,运维只能反复尝试创建。怎么说呢,** **处理**:先确认命名空间存在;再检查列族描述,在 Master UI 查看 Region 分发状态,**必要时手动分配**。** **7.程序资源不足** **痛点**:进程被 OOM kill 或磁盘满导致写入失败,**却没有及时的阈值告警**。****处理**:通过 free -h *和* df -h ****实时确认资源**;为 HBase 堆内存设置合适值;清理旧 WAL/HFile或扩容磁盘。** ***8.** 主机名解析错误**** ***Pain point:*** ***HMater 几秒后退出,**ZooKeeper 报 KeeperErrorCode = NoNode for /hbase/masterShell 报 ServerNotRunningYetException。* Processing: Check /etc/hosts,ensure hostname does NOT resolve to *
**
*
*
*
*
*
*
*
*
*
*
*
*
*痛点直击:在Ubuntu上运行HBase时故障往往表现为服务不可用、写入超时或查询延迟。运维人员常被日志零散、端口冲突、资源告警等信息淹没。导致定位时间长、业务影响大,急需一套快速定位、高效处理的流程来明显提高运维效率。
一、快速定位流程
第一步先是通过最基础的网络与资源检查锁定问题范围,避免盲目翻日志。
-
检查网络连通性:
nc -vz验证到 ZooKeeper;2181 nc -vz/8020 9000检查 HDFS NameNode;nc -vz检查 HMaster。16010 -
检查程序资源:
-
free -h查看内存使用情况; -
top/htop观察 CPU/进程负载; -
iostat -x 1&vmstat 1检测磁盘 I/O; -
df -h关注 HDFS 数据目录及本地 HBase 本地目录剩余空间。
-
1. 进程未启动或启动失败
痛点:`jps` 中看不到 HMaster/HRegionServer,运维只能猜是脚本问题还是环境变量。不过,
-
$HBASE_HOME/logs/hbase-*-master*.log 和
*-regionserver*.log确认启动脚本方法和 JA_HOME 是否正确。
权限问题 文件权限导致 HBase 无法读取 HDFS 或本地目录,常被误认为是网络故障。
在执行hbase shell 时出现 Permission denied 错误。使用 sudo chown -R hbase:hbase /usr/local/hbase 调整 HBase 安装目录权限;对应的 HDFS 目录执行 sudo -u hdfs hdfs dfs -chown -R hbase:hbase /hbase。在部署脚本中统一设置所有相关目录的所有者为 hbase 使用者。
ZooKeeper 未就绪或配置错误 HMaster 日志反复出现 Connection refused 或 ZooKeeper not running运维却找不到 ZK 的实际地址。
ServerNotRunningYetException。先确认 ZK 集群状态: sudo service zookeeper status 或 echo srvr | nc localhost 2181 ;若未启动则 sudo service zookeeper start ;随后检查 $HBASE_HOME/conf/hbase-site.xmlhbase.zookeeper.quorum zk1。zk2,zk3 是否与实际 ZK 地址一致。
将 ZK 地址写入/etc/hosts` 或使用 DNS,并在所有节点保持一致。不过,
HDFS 安全模式导致写入失败 客户端报错 Safe mode is ON运维误以为是 HBase 本身问题。反复重新启动却无效,
hdfs dfs -put … 或 HBase 写操作时报 ServerNotRunningYetException 或 Safe mode is ON.* 处理执行 hdfs dfsadmin -safemode get 检查状态;若为 ON,则 hdfs dfsadmin -safemode leave ** **退出安全模式**。**预防**这方面,监控 NameNode 日志中的安全模式触发条件,提前清理或扩容磁盘。** **4. JAR 包冲突与类加载问题** **痛点**:出现ClassNotFoundError、NoSuchMethodError、SLF4J多绑定等异常,难以判断是哪个依赖版本冲突。处理进入 $HBASE_HOME/lib/client-facing-thirdparty*删除冲突的 slf4j‑log4j12‑.jar;在 $HBASE_HOME/conf/hbase-env.sh* 中添加 export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true ****代码**,强制使用 HBase 自带的类方法。** **5. RegionServer 频繁崩溃或未上线** **痛点**:Master UI 长期显示 0 活跃 RegionServer。**业务写入全部失败**,却不知道是 OOM 大区过大还是磁盘 I/O。** **处理**:
检查 RegionServer 日志 是否有 OutOfMemoryError 或 RegionTooBigException;若为 OOM,**调大堆内存**;若为 Region 大小过大,**使用 split 命令手动拆分**。** **6.表/列族/Region 异常** **痛点**:建表后仍报错 “Namespace not found” 或 “Invalid column family”,运维只能反复尝试创建。怎么说呢,** **处理**:先确认命名空间存在;再检查列族描述,在 Master UI 查看 Region 分发状态,**必要时手动分配**。** **7.程序资源不足** **痛点**:进程被 OOM kill 或磁盘满导致写入失败,**却没有及时的阈值告警**。****处理**:通过 free -h *和* df -h ****实时确认资源**;为 HBase 堆内存设置合适值;清理旧 WAL/HFile或扩容磁盘。** ***8.** 主机名解析错误**** ***Pain point:*** ***HMater 几秒后退出,**ZooKeeper 报 KeeperErrorCode = NoNode for /hbase/masterShell 报 ServerNotRunningYetException。* Processing: Check /etc/hosts,ensure hostname does NOT resolve to *
**
*
*
*
*
*
*
*
*
*
*
*
*
*
