hbase环境依赖Hadoop和zookeeper,所以要十分注意 版本 对应和安装的方式集群等。Hadoop安装教程可以看 这个 .

我的环境:centos7,java 1.8.0_231,Hadoop 3.1.3,zookeeper 3.5.5,Hbase 2.1.3


错误索引

  • 一.org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
  • 二.handler.OpenRegionHandler: Failed open of region=[表名]
  • 三.error: KeeperErrorCode = NoNode for /hbase/master
  • 四.stop-hbase.sh一直处于等待状态
  • 五.ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet


一.org.apache.hadoop.hbase.PleaseHoldException: Master is initializing

遇见方式:当使用hbase shell命令,list或者create等命令时,出现此错误。

这个错误的原因有很多,我搞了一天,用了很多方式,所幸最后解决了。
可能原因:

  1. 多个机器时间不同步

同步时间命令:ntpdate 1.cn.pool.ntp.org 如果是单机运行或者伪分布式可以跳过了。

  1. 查看hbase-site.xml是否是hdfs协议
<property>
        <name>hbase.rootdir</name>
        <value>hdfs://localhost:9000/hbase</value>
        # localhost是我的主机名,改成自己机器的主机名即可
    </property>
  1. zookeeper状态知否正确

zookeeper/bin目录下,运行如下命令,也可以查看log日志。

./zkServer.sh status

zookeeper默认端口2181被占,可能是防火墙阻挡

查看防火墙状态
firewall-cmd --state
停止firewall
systemctl stop firewalld.service
禁止firewall开机启动
systemctl disable firewalld.service
  1. zookeeper中旧hbase没有删除(重装没有删除干净)

zookeeper/bin目录下,运行命令:

hbase zkcli

ls /

rmr /hbase

quit退出
重启hbase

HBASE 值 显示 hbase uninitialized constant_大数据

5.Failed open of region=hbase:meta,1.1588230740 / NoClassDefFoundError: Could not initialize class
查看log确认是否有这句话。我最后居然在hbase-site.xml填加了一句话就解决了该问题,历尽千辛万苦啊~

ERROR [RS_OPEN_META-regionserver/hadoopserver:16020-0] handler.OpenRegionHandler: Failed open of region=hbase:meta,,1.1588230740
java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper

在hbase-site.xml中加这样一句,重启就好了

<property>
    <name>hbase.wal.provider</name>
    <value>filesystem</value>
  </property>

二.handler.OpenRegionHandler: Failed open of region=[表名]

  1. 查看zookeeper状态
    jps或者./zkServer.sh status 。看看zookeeper是否挂了。
  2. zookeeper下文件错误

方式一 zookeeper/bin目录下,运行命令:

hbase zkcli

ls /

rmr /hbase

quit退出
重启hbase

HBASE 值 显示 hbase uninitialized constant_HBASE 值 显示_02


方式二 配置文件的hbase.zookeeper.property.dataDir目录下文件有问题,尝试删除。

方式三

删除该表在HBase系统表.META.中的记录。

scan 'hbase:meta', {STARTROW=>'表名', LIMIT=>30} 
#limit大概意思是前多少行,要把row全整出来
#之后根据展示的数据删除row
delete '.META.','表名'具体数据云云

三.error: KeeperErrorCode = NoNode for /hbase/master

定位错误:jps查看是否缺少进程,我的是HMaster挂掉了
解决:1.查看Hadoop配置hadoop.tmp.dir路径。
2.删除tmp的文件。
3.格式化hadoop namenode -format;重启
注意:该方法会删除hdfs的数据!!!。Hadoop格式化可能导致name/current下的version中的clusterID和data/current下的version的clusterID不一致。将name的clusterID复制到data的clusterID使其一致即可。

四.stop-hbase.sh一直处于等待状态

半天关不掉,等不及了可以使用如下语句。

hbase-daemon.sh stop master
完后再输入stop-hbase.sh

注意: 最后记得jps检查下进程,有可能进程假死。kill掉

五.ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet

出现方式:list等hbase shell语句报错
解决:
1.先jps看下进程数量是否正确,若缺少则关掉重启
2.Hadoop安全模式打开了,运行如下命令

hadoop dfsadmin -safemode get#查看安全模式开启状态
hdfs dfsadmin -safemode leave

重启即可