HBase在Ubuntu上的故障排查
HBase在Ubuntu上的常见故障及排查步骤
1. Java版本不兼容
故障现象:启动HBase时抛出Unsupported major.minor version错误(如HBase 2.x+要求JDK 8或11,使用JDK 7会报错)。
排查与解决:
- 确认Java版本:运行
java -version,确保输出为JDK 8或11(推荐OpenJDK 11)。 - 切换Java版本:若已安装多个版本,使用
sudo update-alternatives --config java选择正确的JDK。
2. 端口冲突
故障现象:启动HBase时报Address already in use错误(如HBase Master默认端口16010已被占用)。
排查与解决:
- 查找占用端口的进程:运行
sudo lsof -i :16010(替换为实际端口),获取进程ID(PID)。 - 终止冲突进程:运行
kill -9 < PID>(如kill -9 1234),再重启HBase。
3. 权限问题
故障现象:启动HBase时报Permission denied错误(如无法访问/usr/local/hbase目录)。
排查与解决:
- 修改目录权限:将HBase安装目录及日志目录的所有权改为当前用户(如
ubuntu),运行sudo chown -R ubuntu:ubuntu /usr/local/hbase。 - 确保HDFS目录权限:若使用HDFS,运行
hdfs dfs -chmod -R 777 /hbase(生产环境建议限制为必要用户)。
4. ZooKeeper未启动或配置错误
故障现象:HBase Master无法启动,日志显示Connection refused或ZooKeeper not running。
排查与解决:
- 启动ZooKeeper:运行
zkServer.sh start(位于ZooKeeper安装目录的bin下),通过zkServer.sh status确认状态为running。 - 检查配置:确认
hbase-site.xml中的hbase.zookeeper.quorum设置为正确的ZooKeeper地址(单机模式为localhost)。
5. Hadoop安全模式导致HBase无法写入
故障现象:HBase Shell执行list或put命令时报ServerNotRunningYetException或Safe mode is ON错误。
排查与解决:
- 检查HDFS安全模式:运行
hdfs dfsadmin -safemode get,若返回ON,则强制退出:hdfs dfsadmin -safemode leave。 - 重启Hadoop与HBase:先停止Hadoop(
stop-all.sh),再停止HBase(stop-hbase.sh),最后启动Hadoop(start-all.sh)并启动HBase(start-hbase.sh)。
6. jar包冲突
故障现象:HBase启动时报ClassNotFound或NoSuchMethodError(如slf4j-log4j12版本冲突)。
排查与解决:
- 移除冲突jar包:进入HBase的
lib目录(/usr/local/hbase/lib),删除client-facing-thirdparty下的slf4j-log4j12-*.jar(如slf4j-log4j12-1.7.25.jar)。 - 配置HBase忽略Hadoop类路径:编辑
hbase-env.sh,取消HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP的注释并设置为true:export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true。
7. RegionServer未启动或频繁崩溃
故障现象:HBase Master界面显示RegionServer数量为0,或日志中出现OutOfMemoryError、RegionTooBigException。
排查与解决:
- 检查RegionServer日志:查看
$HBASE_HOME/logs/hbase-ubuntu-regionserver-*.log,定位具体错误(如内存不足、Region过大)。 - 调整内存配置:编辑
hbase-env.sh,增加RegionServer堆内存(如export HBASE_REGIONSERVER_OPTS="-Xms4g -Xmx4g")。 - 拆分大Region:若Region过大(如超过10GB),使用
hbase shell的split命令手动拆分:split 'table_name', 'rowkey'。
8. 表操作失败(如创建表、插入数据报错)
故障现象:HBase Shell执行create或put命令时报Namespace not found、Invalid column family或Region not online错误。
排查与解决:
- 确认命名空间存在:若使用自定义命名空间(如
my_ns),先创建命名空间:create_namespace 'my_ns'。 - 检查列族配置:确认
hbase-site.xml中定义了正确的列族(如< property> < name> hbase.table.sanity.checks< /name> < value> true< /value> < /property>),且列族名称合法(无特殊字符)。 - 确认Region状态:通过HBase Master UI查看表的Region分布,若Region未分配,等待片刻或手动触发分配(
assign 'region_id')。
9. 系统资源不足(内存、磁盘空间)
故障现象:HBase进程被系统杀死(Out of memory),或启动时报No space left on device。
排查与解决:
- 检查内存使用:运行
free -h,确保系统有足够可用内存(建议预留2GB以上给系统)。 - 调整HBase内存:编辑
hbase-env.sh,设置HBASE_HEAPSIZE为物理内存的70%(如8GB内存设为export HBASE_HEAPSIZE=6g)。 - 检查磁盘空间:运行
df -h,确保HBase数据目录(如/usr/local/hbase/data)所在磁盘有足够空间(建议预留50%以上)。
10. 日志分析技巧
故障现象:故障现象不明确,无法快速定位问题。
排查与解决:
- 定位日志文件:HBase日志默认位于
$HBASE_HOME/logs/目录,Master日志为hbase-ubuntu-master-*.log,RegionServer日志为hbase-ubuntu-regionserver-*.log。 - 快速查找错误:使用
grep命令过滤错误信息,如grep -i "error\|exception" hbase-ubuntu-master-*.log,重点关注Caused by后面的根本原因。 - 结合Hadoop日志:若问题与HDFS相关,还需检查Hadoop的NameNode(
/var/log/hadoop-hdfs/)和DataNode(/var/log/hadoop-hdfs/)日志。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: HBase在Ubuntu上的故障排查
本文地址: https://pptw.com/jishu/742992.html
