HBase在Ubuntu上的常见故障及排查步骤
故障现象:启动HBase时抛出Unsupported major.minor version错误(如HBase 2.x+要求JDK 8或11,使用JDK 7会报错)。
排查与解决:
java -version,确保输出为JDK 8或11(推荐OpenJDK 11)。sudo update-alternatives --config java选择正确的JDK。故障现象:启动HBase时报Address already in use错误(如HBase Master默认端口16010已被占用)。
排查与解决:
sudo lsof -i :16010(替换为实际端口),获取进程ID(PID)。kill -9 <PID>(如kill -9 1234),再重启HBase。故障现象:启动HBase时报Permission denied错误(如无法访问/usr/local/hbase目录)。
排查与解决:
ubuntu),运行sudo chown -R ubuntu:ubuntu /usr/local/hbase。hdfs dfs -chmod -R 777 /hbase(生产环境建议限制为必要用户)。故障现象:HBase Master无法启动,日志显示Connection refused或ZooKeeper not running。
排查与解决:
zkServer.sh start(位于ZooKeeper安装目录的bin下),通过zkServer.sh status确认状态为running。hbase-site.xml中的hbase.zookeeper.quorum设置为正确的ZooKeeper地址(单机模式为localhost)。故障现象:HBase Shell执行list或put命令时报ServerNotRunningYetException或Safe mode is ON错误。
排查与解决:
hdfs dfsadmin -safemode get,若返回ON,则强制退出:hdfs dfsadmin -safemode leave。stop-all.sh),再停止HBase(stop-hbase.sh),最后启动Hadoop(start-all.sh)并启动HBase(start-hbase.sh)。故障现象:HBase启动时报ClassNotFound或NoSuchMethodError(如slf4j-log4j12版本冲突)。
排查与解决:
lib目录(/usr/local/hbase/lib),删除client-facing-thirdparty下的slf4j-log4j12-*.jar(如slf4j-log4j12-1.7.25.jar)。hbase-env.sh,取消HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP的注释并设置为true:export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true。故障现象:HBase Master界面显示RegionServer数量为0,或日志中出现OutOfMemoryError、RegionTooBigException。
排查与解决:
$HBASE_HOME/logs/hbase-ubuntu-regionserver-*.log,定位具体错误(如内存不足、Region过大)。hbase-env.sh,增加RegionServer堆内存(如export HBASE_REGIONSERVER_OPTS="-Xms4g -Xmx4g")。hbase shell的split命令手动拆分:split 'table_name', 'rowkey'。故障现象: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>),且列族名称合法(无特殊字符)。assign 'region_id')。故障现象:HBase进程被系统杀死(Out of memory),或启动时报No space left on device。
排查与解决:
free -h,确保系统有足够可用内存(建议预留2GB以上给系统)。hbase-env.sh,设置HBASE_HEAPSIZE为物理内存的70%(如8GB内存设为export HBASE_HEAPSIZE=6g)。df -h,确保HBase数据目录(如/usr/local/hbase/data)所在磁盘有足够空间(建议预留50%以上)。故障现象:故障现象不明确,无法快速定位问题。
排查与解决:
$HBASE_HOME/logs/目录,Master日志为hbase-ubuntu-master-*.log,RegionServer日志为hbase-ubuntu-regionserver-*.log。grep命令过滤错误信息,如grep -i "error\|exception" hbase-ubuntu-master-*.log,重点关注Caused by后面的根本原因。/var/log/hadoop-hdfs/)和DataNode(/var/log/hadoop-hdfs/)日志。