HBase无法启动的问题,shell中list,create等命令报错;强制删除表的方法

记录一下,免得我又束手无策
利用importtsv向HBase批量插入数据
在上一篇博文里用importtsv向HBase中批量插入了数据。
用了一次之后就报错,报得错表面上看起来非常简单
ServerNotRunningYetException: Server is not running yet
百度了一下,有很多参考解决的方法
比如https://blog.csdn.net/zw0283/article/details/52861872?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
毫无意外地没什么用。我就知道我运气没这么好。
试了一下发现,手动关闭safemode不好用

> ./hdfs dfsadmin -safemode leave

显示关闭了,但是用命令一看

> ./hdfs dfsadmin -safemode get

safemode还是on的状态。
说明出现了一些情况,使得安全模式关不了

但是为什么第一次能成功呢?我突然想到了上一篇参考文献
简书——使用importtsv导入CSV数据到HBase中的最后一句话

那么极有可能是我的目录下空间不够了。

> df -h

看一下,果然啊,root目录的占用已经达到了99%,看起来系统马上要炸了。怪只怪我自己把集群啊,JAVA啊,matlab啊都装在了root目录底下。网上对于这个root目录受不了了其实有很多的解决方法。包括从别的卷分一块区过来。
但对于我来说比较麻烦,那不如把这些东西都移动到别的盘上去好了,反正ubuntu系统只需要改一下环境变量及集群的一些配置文件就可以了。所以我就都给移走了。
现在我的root目录空间够了。
df-h
然后重新来,还是报错。
包括
ServerNotRunningYetException
org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
can’t get master address from ZooKeeper; znode data == null
太多问题了我都没来得及截屏
找其中一个问题来看一下
https://blog.csdn.net/qq_39597203/article/details/80961885
这个博文总结了一下org.apache.hadoop.hbase.PleaseHoldException: Master is initializing的解决方法,但是对我来说都没有用。
在master和slave上都jps一下,发现DataNode没有起来。

然后去50070上看一下集群情况,发现了很重要的信息
有一些missing block
而且HBase的日志里有报错
NotServingRegionException
照这个报错,应该是之前HBase崩掉的时候导致了Region数据的损坏。
找到相关博文,NotServingRegionException
也就是说,数据有损坏,然后HBase直接就起不来了?因吹斯听。按照他的方法,把损坏的数据都清了,然后重新来。就正常了。

其实解决不是问题,问题是他为什么不行了?

继续,又碰到一个问题,slave1的HRegionServer怎么都起不来,起不来,起不来,赖床狗。
去slave1的日志,/hbase/logs/regionserver-slave1.log看是什么情况,报错
hbase regionServer Cannot assign requested address
感觉是连接的问题
https://blog.csdn.net/Sunday2017/article/details/80569947
这篇文章的解决方法可以让slave的HRegionServer起来工作。
jps结果
slave1节点的jps
但是,其实这是一个“假”启动。去HBase测试还是会有各种问题,包括输入命令没有反应,然后看日志报错
日志
发现只要涉及到slave1的region就有问题。然后去master管理页面看一下
在这里插入图片描述
其实slave1是没有启动的。
看slave1 regionserver的日志
在这里插入图片描述
反正,只是照参考博文方法修改的hosts是没有用的。
那就还是映射的问题,仔细检查了一下slave1 上/etc/hosts文件,就是自己把slave1的地址输错了。
应该是192.168,输成了192.169,唉,粗心真的浪费了我很多时间。

可能还是未完待续吧,唉,这个运维真的太难了。这种基本入门级都算不上的运维我都搞不定。

【20200413】更新
今天测试了一下之前写过的HBase Coprocessor

动态加载表级coprocessor,然后HBase shell的命令就用不了了。不管是enable, list等等,都是connection refused报错,日志报错是
HRegionServerLog
然后jps看了一下发现master和slave2上的HRegionServer都没能启动。
其实不用看日志也能比较明确是加载的coprocessor的问题,可能导致集群崩了,或者有什么inconsistency。用之前的方法检测,看数据块是否损坏检测数据块是否有损坏发现反馈是HEALTHY。
那就想着把加载了coprocessor的表test1直接删掉,至少让集群先起来再重新看看。
参考强制删除HBase表
步骤大概是

  1. 先去zookeeper客户端把表删掉,在zkcli里删除
> ./hbase zkcli
> delete /hbase/table/test1
  1. 在hdfs把表删掉
> ./hdfs dfs -rmr /hbase/data/default/test1
  1. 删掉表在’hbase:meta’中的记录
    先查看表对应的rowkey,在HBase shell中scan META表
> scan 'hbase:meta'
  1. 删除rowkey下对应的三个字段
    和参考博文一致即可
  2. 最后更新meta表信息
> major_compact 'hbase:meta' 

删掉之后集群正常了,接下来要继续测试Coprocessor

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值