> 文档中心 > hbase崩溃记

hbase崩溃记

最近因为我在搞Flume-kafka-hbase 集成,昨天不知道咋了的突然我的hbase就崩溃了,说是说hbase崩溃了,其实我更崩溃,因为这已经不是第一次这样了,hbase崩溃的第一百个原因


2022/3/24 7:58 PM

先放一放我得先抢个明天图书馆位置,每晚八点抢,这个疫情真烦。然后我八点钟有个直播课到九点,差不多就该回去了,明天我买的新手机也到了,明天会有个好心情来整理这hbase崩溃到修复好的心路历程,心很累,因为一出问题真的就是很痛苦去看文章,看着一篇篇logs纠错。


2022/3/25 9:18 AM

早上起来,发现又是大下雨天,我今天实在不想淋雨去图书馆了,每次这么下雨去,回来都被淋湿,有时候想想在学校里有台车就好了,至少能遮风挡雨,去图书馆能说走就走不怕被淋湿。昨天抢的位置就让给别人去吧,我等晴天再去。开始回顾我的hbase崩溃记。


第一次崩溃

        记得我第一次hbase崩溃是在什么时候,好像是在flume-hbase 集成的时候,因为hbase当时的版本安装的是2.4.9 ,和flume apache-flume-1.8.0似乎不太匹配,数据无法打入hbase,报错如下。(大概意思就是为了hbase-sink就是和该版本flume集成,hbase的版本必须小于2)

HBase major version number must be less than 2 for hbase-sink

        我上网搜索相关bug的解决办法,有一种办法看起来还挺靠谱的,参考以下文章: 

解决 HBase major version number must be less than 2 for hbase-sink_Hugh__Hu的博客-CSDN博客在flume采集数据sink到hbase的时候, 启动脚本遇到HBase major version number must be less than 2 for hbase-sink版本问题,尝试之后发现解决方法如下:将  $HIVE_HOME/lib 下的以 hbase开头的 jar 包拷贝到 $FLUME_HOME/lib 文件夹下cp   $HIVE_HOME/lib/hbase*   $...https://blog.csdn.net/Hugh__Hu/article/details/80945904        根据他的说法,就是hbase的版本过高了,有一些jar包被剔除了,但是这些包在hive中还是有的,所以我就根据他的做法,把hive/lib中hbase打头的jar包给cp过来了,然后就开始运行,结果又出错了,具体什么错我给忘了应该是jar包冲突的问题,就是我的jar包刚刚移进来启动就和hadoop中的冲突了,只能作罢。  

        那没有办法了这flume版本最高好像也才1.9(印象中),而且视频中hbase也是低版本,那我就换一个hbase版本呗。于是我去下面链接下载了hbase1.7.1,1版本中最高版本,再高就是2.0.1了,我想现在应该就可以了吧。

        把hbase软连接删了,把hbase-env.sh,hbase-sit.xml,backupmasters,regionserver,都给改了,然后再把hdfs的那边的hdfs-site.xml,core-site.xml都给搬过来,一切配置完毕,软连接到新的hbase上,再分发到各个节点。

~/app/hadoop/bin/stop-dfs.sh~/app/zookeeper/bin/zkServer.sh stop#可以正常关闭hbase~/app/hbase/bin/stop-hbase.sh  /#无法正常关闭hbase,用上面的命令就一直点点点,就ctrl+c 取消掉,用下面的代码。#这说明你的hbase有问题,有可能和我一样因为hbase在运行的过程中,没有结束服务,直接更换版本,导致出现问题,我后面的问题大部分就和异常关闭hbase,未关闭hbase就更换版本有着莫大的联系。~/app/hbase/bin/hbase-daemon.sh stop regionserver~/app/hbase/bin/hbase-deamon.sh stop master

        重启一下(一定要把所有服务给关了再重启)

        重启完就开始启动zk,再启动hdfs,再启动hbase(一定是按照这样的顺序,关闭的顺序就是反过来,这样才能保证hbase的正常运行,不出差错,我已经被这个东西搞怕了一定要有顺序,人容易出错)

        jps查看进程,发现都在,HMaster,Hregionserver都在,进去bin/hbase shell 去看看,list /

结果可以显示table,🆗。


第二次崩溃

        前天我的hbase又崩溃了,因为一些版本问题我又更改了我的hbase版本,换成了更低版本的1.2.0,但是因为我这次的操作不当导致了后面的很多问题。不知道是我前一天管虚拟机的时候怎么了,正确没有关hbase服务还是咋了,前天反正就是在bin/hbase shell  中进行list命令时就是会报错具体参考下面链接和代码:

hbase(main):001:0> listTABLE 2018-06-16 10:20:02,641 WARN  [ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet    at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:100)    at org.apache.hadoop.hbase.ipc.FifoRpcScheduler$1.run(FifoRpcScheduler.java:74)    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)    at java.util.concurrent.FutureTask.run(FutureTask.java:266)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)    at java.lang.Thread.run(Thread.java:745)

最关键的一句话(服务器没有运行也就是hbase没有运行起来) 

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

但是我退出去看我的进程jps,都在啊,Hmaster,Hregionserver,当我想stop-habse 去查看情况时,又停不掉了,只能bin/hbase-daemon.sh stop +server   去停。说明hbase又出问题了,我想了想可能是因为我的不正确关闭导致的,上网去搜,果然有相似问题,参考下面文章:

ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet_a大数据yyds的博客-CSDN博客Hbase报错:ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet报错原因:这种情况是由于不正常的关闭hadoop,从而导致hadoop进入了安全模式产生的原因。解决方案:让hadoop退出安全模式进入hadoop下的binhdfs dfsadmin -s...https://blog.csdn.net/qq_45765882/article/details/103528901就是不正确关闭hadoop导致Hadoop进入安全模式,需要退出安全模式。

一定是在Hadoop启动的情况下,当然zk也已经启动,按照顺序。

进入hadoop下的bin

hdfs dfsadmin -safemode leave

然后关闭Hadoop,关闭zk,重启zk,重启hadoop。再去启动hbase,进行hbase shell 操作,确实可以用了,只不过之前创建的table都存在,都能看到用list,用scan却scan不了,创建相同名字的表也不报错,看似存在其实已经不在了。只能重新创建表,数据丢失了。(虽然还没什么数据)


第三次崩溃

这次又是这样子,和第二次报的错误是一样的,但是我去和上次一样操作退出安全模式也无法奏效,查了很多资料说这种时候只能重装hbase了,把zk上的hbase删了然后重启hbase,我只能把zkCli.sh上的hbase数据给删了,然后还是不行。后来无意间在查看hbase/bin目录的时候我看到了一个shell脚本,我感觉有可能有用,就是hbase-cleanup.sh文件,vim 进去看具体文件用法。

# cleans hbase related data from zookeeper and hdfs if no hbase process is alive.# 如果没有hbase进程处于活动状态,则从zookeeper和hdfs中清除hbase相关数据usage="Usage: hbase-cleanup.sh (--cleanZk|--cleanHdfs|--cleanAll|--cleanAcls)"

我只清理了hbase在zk上的数据,没有删除在hdfs上的数据,所以我kill了hbase进程,

--cleanHdfs   --cleanZk 都试了一遍,重新启动之后终于🆗了我的hbase又回来了,不过又得重新建表。我人麻了,加油。