3种可能:
HDFS相关
Case1:
hmaster启动失败,查看hbase日志,发现hdfs上出现BlockMissingException,hbase.version文件丢失或损坏,具体callstack见截图
解决方法:两种解法
1. 从相同版本的另一个hbase集群拷贝一份hbase.version文件到对应的目录下,重启服务即可。
2. 移花接木,具体步骤如下
a. 将hyperbase1文件夹重命名:
hdfs dfs -mv /hyperbase1 /hyperbase1.tmp
b. 重启hyperbase服务,会重新生成hyperbase文件夹,里面包含hbase.version文件
执行hdfs cp 命令,将新生成的hbase.version文件拷贝到hbase.tmp文件夹
hdfs dfs -cp /hyperbase1/hbase.version /hbase.tmp/
c. 拷贝完hbase.version文件后,删除新生成的hbase文件夹:
hdfs dfs -rmr /hyperbase1
d. 删除后新生成的hbase文件夹后,将hbase.tmp文件夹名改成hyperbase1:
hdfs dfs -mv /hyperbase1.tmp /hyperbase1
e. 重启hbase即可!
参考链接:https://blog.csdn.net/chengtanyong4777/article/details/87917569
Case2:
hmaster启动失败,查看 hbase日志中发发现“Waiting for dfs to exit safe mode”等关键异常信息,hdfs处理安全模式,导致hmaster无法启动,具体callstack见截图
解决方法:
可以先执行hdfs fsck / 看下hdfs上是否有坏块,如果有先解决坏块的问题,才能退出safe mode模式(生产环境注意不要轻易强制退出,否则极端情况会导致数据丢失),企业用户请寻找售后同事支持。
ZK相关
Case1:
zk上有残留的hbase元数据信息导致hyperbase的hmaster起不来,查看master日志:发现"TableExistsException:hbase:snapshot"等关键异常信息,具体见截图
解决方法:
先进入zk中,然后删除snapshot这张表,重启服务,问题解决!
rmr /hyperbase1/table/hbase:snapshot
权限相关
Case1:
hyperbase的hmaster停止后后,权限问题导致无法启动,查看hbase日志出现”NoAuth for /hyperbase1/hbaseid“等关键异常信息,并且zk里面查看/hyperbase1/hbaseid目录,只有read权限,具体callstack如下截图
hbase 日志
zk权限信息
解决方法:
1,zk所有节点的conf目录下面的zoo.cfg 里面加上配置skipACL=yes 重启zk
2,修改权限,问题解决!
setAcl /hyperbase1/hbaseid 'world:anyone:cdrwa'
Case2:
hyperbase的hmaster起不来,查看master日志,Failed to store service hyperbase1,具体见截图
rootcause:
/guardian/data/partitions/guardian/data.mdb的数据大小超过了/etc/guardian/conf/guardian-ds.properties配置文件里guardian.ds.lmdb.mapsize默认大小(10G),从而导致主从数据同步失败,导致hyperbase启动的时候向guardian注册失败
解决方法:
1,修改对应Guardian版本的metainfo的guardian-ds.properties配置文件,如 /var/lib/transwarp-manager/master/content/meta/services/GUARDIAN/transwarp-5.2.4-final/templates/guardian-ds.properties
在最后加上两行配置并保存
guardian.ds.lmdb.mapsize=1099511627776
guardian.ds.ha.syncrepl.log.size=1099511627776
2,修改对应Guardian版本的metainfo的guardian-env.sh配置文件,如 /var/lib/transwarp-manager/master/content/meta/services/GUARDIAN/transwarp-5.2.4-final/templates/guardian-env.sh,
将guardian-env.sh配置文件中的JAVA_OPTS=" $JAVA_OPTS -Xms1024m -Xmx2048m ,改成了$JAVA_OPTS -Xms1024m -Xmx4096m
注:如果集群开了安全的情况下进入hbase shell操作报安全相关错,记得先kinit hbase用户