HBase的日志是故障排查的核心依据,Ubuntu下默认日志路径为$HBASE_HOME/logs/(如/usr/local/hbase/logs/)。关键日志文件包括:
hbase-<username>-master-<hostname>.log(记录主节点状态);hbase-<username>-regionserver-<hostname>.log(记录数据节点状态)。tail -n 100命令查看最新日志,重点关注**错误级别(ERROR)或警告级别(WARN)**信息,例如端口冲突、ZooKeeper连接失败、HDFS不可用等。通过jps命令确认HBase核心进程是否启动:
jps | grep -E "HMaster|HRegionServer"
$HBASE_HOME/bin/start-hbase.sh),若仍失败,需检查hbase-env.sh中的JAVA_HOME配置(需指向正确的JDK路径,如/usr/lib/jvm/jdk1.8.0_392);hbase-env.sh中的JVM堆内存(如HBASE_REGIONSERVER_OPTS="-Xms4G -Xmx4G")。HBase依赖ZooKeeper管理元数据,需确保:
jps | grep QuorumPeerMain(若有QuorumPeerMain进程则表示运行中);$HBASE_HOME/conf/hbase-site.xml中的hbase.zookeeper.quorum参数,需指向正确的ZooKeeper节点(如zk1.example.com,zk2.example.com,zk3.example.com);$ZK_HOME/bin/zkCli.sh -server <zk_host>:2181连接ZooKeeper,执行ls /hbase确认/hbase节点存在(HBase的根节点)。HBase数据存储在HDFS上,需确保:
jps | grep -E "NameNode|DataNode"(若有NameNode和至少一个DataNode则表示运行中);/hbase,需确保HBase用户(如hbase)有读写权限:hdfs dfs -ls /hbase # 检查权限
hdfs dfs -chown -R hbase:hadoop /hbase # 修复权限(若用户为hbase)
hdfs dfsadmin -safemode leave退出。HBase默认使用以下端口,若被占用会导致启动失败:
sudo netstat -tuln | grep 160 # 查看160端口占用情况
sudo lsof -i :16000 # 查看16000端口占用进程
kill -9 <PID>)或修改HBase端口配置(在hbase-site.xml中调整对应参数)。Ubuntu系统默认内存可能不足,需调整HBase的JVM堆内存:
编辑$HBASE_HOME/conf/hbase-env.sh,修改以下参数(根据服务器内存调整,建议HMaster分配2-4GB,RegionServer分配4-8GB):
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Xms2G -Xmx2G"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xms4G -Xmx4G"
调整后重启HBase服务使配置生效。
若HDFS元数据损坏(如多次格式化NameNode导致clusterID不一致),需同步clusterID:
cd /usr/local/hadoop/tmp/dfs;name/current/VERSION中的clusterID(如CID-f9c21355-77bc-40ce-bb1b-7e1aa39d3fd1);data/current/VERSION中的clusterID,使其与name目录下的一致;$HADOOP_HOME/sbin/start-dfs.sh)和HBase($HBASE_HOME/bin/start-hbase.sh)。Ubuntu默认文件句柄限制(1024)可能不足,导致HBase无法处理大量并发连接,需修改:
/etc/security/limits.conf,添加以下内容(将hadoop替换为HBase运行用户):hadoop - nofile 32768
hadoop soft nproc 32000
hadoop hard nproc 32000
/etc/pam.d/common-session,添加以下内容使配置生效:session required pam_limits.so