日志是故障排查的核心依据,Debian下HBase日志默认位于/var/log/hbase/目录(如hbase-hadoop-master-*.log、hbase-hadoop-regionserver-*.log)。使用tail -f命令实时跟踪日志,重点关注ERROR或WARN级别的错误信息(如java.lang.OutOfMemoryError、Connection refused),快速定位故障根源。
通过jps命令查看HBase关键进程是否运行:
jps
正常应存在HMaster(主节点)和HRegionServer(Region服务器)进程。若进程缺失,需重启服务:
/usr/local/hbase/bin/start-hbase.sh # 启动HBase集群
若进程频繁崩溃,需结合日志分析具体原因(如内存溢出、ZooKeeper连接失败)。
HBase对Java版本有严格要求(如HBase 2.x需Java 8+),使用以下命令检查Java版本:
java -version
确保JAVA_HOME环境变量指向正确版本(在/usr/local/hbase/conf/hbase-env.sh中设置):
export JAVA_HOME=/usr/lib/jvm/default-java # Debian默认Java路径
版本不兼容会导致HBase无法启动。
重点核查hbase-site.xml(HBase核心配置)和hdfs-site.xml(HDFS集成配置)的关键参数:
hbase.cluster.distributed:分布式模式下必须设为true;hbase.rootdir:指向HDFS上的HBase数据目录(如hdfs://namenode:9000/hbase);hbase.zookeeper.quorum:ZooKeeper集群地址(如zk1.example.com,zk2.example.com)。HBase依赖Hadoop(尤其是HDFS)存储数据,需检查:
sudo systemctl status hadoop-namenode、sudo systemctl status hadoop-datanode;hdfs dfsadmin -report(查看DataNode是否存活、磁盘空间是否充足);hbase)对数据目录有读写权限:sudo chown -R hbase:hbase /usr/local/hbase/data
sudo chmod -R 777 /usr/local/hbase/data
HDFS异常会导致HBase写入/读取失败。
ping、telnet测试HBase节点间(如Master与RegionServer)及与ZooKeeper的网络连接,确保端口畅通(如HMaster默认端口60000、ZooKeeper默认端口2181);zkCli.sh连接ZooKeeper,检查节点数据是否正常:/usr/local/zookeeper/bin/zkCli.sh -server localhost:2181
ls /hbase # 查看HBase在ZooKeeper中的根节点
ZooKeeper连接失败会导致HMaster无法协调集群。
若RegionServer进程崩溃,需:
hbase-hadoop-regionserver-*.log),常见原因包括内存溢出(GC停顿时间过长)、ZooKeeper连接超时、HDFS不可用;hbase-env.sh中的JVM参数,增加堆内存(如export HBASE_REGIONSERVER_OPTS="-Xms4G -Xmx4G")或更换GC算法(如-XX:+UseG1GC);FAILED_OPEN状态,使用hbase hbck -fixAssignments命令重新分配Region。hbase.hregion.memstore.flush.size,默认128MB,过小会导致频繁刷写)、WAL写入策略(hbase.regionserver.optionallogflushinterval,默认10秒,过短会增加磁盘IO);hfile.block.cache.size,默认0.4,过低会增加磁盘读取)、Compaction任务(hbase.hstore.compactionThreshold,默认3,过多会占用资源);top、free、df命令监控系统资源(CPU、内存、磁盘空间),确保资源充足。HBase Shell提供丰富的诊断命令:
status 'detailed'(显示Master、RegionServer的详细信息);hbase hbck -details <表名>(查看Region是否正常分配,若存在INCONSISTENT状态,用hbase hbck -repair修复);put '表名', 'rowkey', '列族:列名', '值'、get '表名', 'rowkey',验证基本功能是否正常。/usr/local/hbase/data)、日志目录(/usr/local/hbase/logs)的所有者为hbase用户,权限设为777(测试环境可放宽,生产环境建议更严格);df -h检查磁盘剩余空间(建议保留至少20%空闲空间),若空间不足,清理旧日志或归档数据。