我一开始运行jar包,出现一下问题,仔细一看是节点没有启动,就去启动hbase看看
但是,进入hbase后,输入命令会有如下报错,
到网上搜了一下,说是hadoop进入了安全模式,所导致的,把关了就行,
一般都是数据块损坏导致进入了安全模式,这时候,
1、可以选择强制退出安全模式,
2、或者修改配置文件hdfs-site.xml,降低进入安全模式的阈值
默认值是0.999,将值该小就行
<name>dfs.namenode.safemode.threshold-pct</name>
<value>o.999f</value>
退出安全模式后,重启hbase的服务,进入之后,输入命令,又出现了如下的错误
然后去查看hbase的日志文件,下面4个都可以看一下,查看后200行就可以
tail -n 200 xxx
后来在日志文件中查出如下错误
是数据丢了。
没错,一开始进入安全模式的原因就是数据块损坏丢失了,丢的正好是hbase的,所以导致hbase不能正常使用
使用下面命令,查看丢失的数据块
// 执行以下命令查看是否有块缺失
hdfs fsck /
查出数据如下,可以看到丢失的块数,可数据的大小
通过如下命令,查看丢失数据块的位置
hdfs fsck -list-corruptfileblocks
效果如下,因为我都删除了,所有没有了路径,不然是有路径的
找到损坏文件的位置之后,你可以选择删除,也可以恢复,
这里我选择的是删除
rm 后面的就是找出来的损坏文件的位置,直接删除,进入回收站
hdfs dfs -rm /hbase/oldWALs/singlenode%2C16020%2C1631667766083.1631682195417
删除结束后,在运行命令看看,有没有损坏的数据块
hdfs fsck /
如下图就是没有损坏的数据块了
随后,关闭所有服务,然后重启就可以了