使用jps命令查看HBase核心进程是否运行:
jps | grep -E "HMaster|HRegionServer"
HMaster(主节点)或HRegionServer(Region服务器)进程,说明服务未启动,需执行{HBASE_HOME}/bin/start-hbase.sh手动启动。HBase日志默认存储在/var/log/hbase/目录下,关键日志文件包括:
hbase-<username>-master-<hostname>.loghbase-<username>-regionserver-<hostname>.log使用tail -f实时查看日志,重点关注以下错误:
Could not bind to address 0.0.0.0/0.0.0.0:16000(HMaster默认端口),需修改hbase-site.xml中的端口配置或停止占用端口的进程。Unable to create ZooKeeper connection,需检查hbase-site.xml中的hbase.zookeeper.quorum(ZooKeeper集群地址)配置是否正确,或通过zkCli.sh -server zk_host:2181测试ZooKeeper连通性。No valid filesystem found,需确认HDFS NameNode和DataNode运行正常(jps | grep NameNode),且HBase数据目录(如hbase.rootdir配置的路径)权限正确(hdfs dfs -chown -R hbase:hadoop /hbase)。HBase的核心配置文件位于{HBASE_HOME}/conf/目录,需重点检查:
hbase-site.xml:确保以下关键参数配置正确:<property>
<name>hbase.cluster.distributed</name>
<value>true</value> <!-- 分布式模式必须为true -->
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://namenode:9000/hbase</value> <!-- HDFS路径,需与HDFS配置一致 -->
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>zk1,zk2,zk3</value> <!-- ZooKeeper集群节点地址 -->
</property>
hbase-env.sh:确认Java环境变量设置正确(Debian推荐使用OpenJDK 8+):export JAVA_HOME=/usr/lib/jvm/default-java
export HBASE_MASTER_OPTS="-Xms4G -Xmx4G" <!-- HMaster堆内存 -->
export HBASE_REGIONSERVER_OPTS="-Xms8G -Xmx8G" <!-- RegionServer堆内存 -->
core-site.xml(Hadoop配置):确保HDFS相关参数正确,如fs.defaultFS。使用以下命令检查系统资源使用情况:
free -h,确保HBase进程有足够的内存(如HMaster至少2GB,RegionServer至少4GB)。top,查看CPU占用率是否过高(如超过80%可能导致GC停顿)。df -h,确保HDFS和本地磁盘(存储WAL日志)有足够空间(建议剩余空间大于总容量的20%)。hbase-regionserver-*.log),常见原因包括:
hbase-env.sh中的堆内存参数(如-Xmx8G),或优化RowKey设计减少热点(如添加MD5前缀散列)。zkServer.sh status),确保hbase.zookeeper.session.timeout(默认3分钟)足够长。hbase hbck -details检查Region状态,若存在FAILED_OPEN状态的Region,执行hbase hbck -fixAssignments修复。确保客户端hbase-site.xml与集群配置一致,重点检查:
hbase.zookeeper.quorum:与集群配置相同。hbase.rpc.timeout:若写入/读取超时报错,可适当增大超时时间(如60000毫秒)。hbase shell执行简单命令(如list),确认客户端能正常访问集群。jconsole或VisualVM监控JVM内存、GC情况及HBase性能指标(如RegionServer的读写QPS)。hbase clean --cleanSnapshots)、压缩HFile(major_compact 'table_name'),避免数据膨胀影响性能。