今天遇到2个问题
ERROR: ..hadoop.hbase.Server is not running yet
ERROR: NoNode for /hbase/master
按照步骤运行zk,hadoop,hbase
然后hbase shell进入查看list
提示:
到网上搜了一下,说是hadoop进入了安全模式,所导致的,把关了就行,
一般都是数据块损坏导致进入了安全模式,这时候
第一步:先看当前用户是否对hbase有权限,一般使用hbase目录的所有者操作hbase
第二步:看hadoop是否处于安全模式,若处于则关闭安全模式
可以选择强制退出安全模式,
hdfs dfsadmin -safemode get #查看是否处于安全模式
hdfs dfsadmin -safemode leave #关闭安全模式
解决办法:
2、或者修改配置文件hdfs-site.xml,降低进入安全模式的阈值
默认值是0.999,将值该小就行
<name>dfs.namenode.safemode.threshold-pct</name>
<value>o.999f</value>
退出安全模式后,重启hbase的服务,进入之后,输入命令,又出现了如下的错误
完蛋这不是master挂掉了吗?
jps查看服务,确实HMaster不在了,HRegionServer还在
hbase的日志文件,下面4个都可以看一下,查看后200行就可以
tail -n 200 xxx (hbase/logs下)
后来在日志文件中查出如下错误
是数据丢了。
没错,一开始进入安全模式的原因就是数据块损坏丢失了,丢的正好是hbase的,所以导致hbase不能正常使用
使用下面命令,查看丢失的数据块
// 执行以下命令查看是否有块缺失
hdfs fsck /
查出数据如下,可以看到丢失的块数,可数据的大小
通过如下命令,查看丢失数据块的位置
hdfs fsck -list-corruptfileblocks
效果如下,因为我都删除了,所有没有了路径,不然是有路径的
找到损坏文件的位置之后,你可以选择删除,也可以恢复,
这里我选择的是删除
rm 后面的就是找出来的损坏文件的位置,直接删除,进入回收站
hdfs dfs -rm /hbase/oldWALs/singlenodeaaa
删除结束后,在运行命令看看,有没有损坏的数据块
hdfs fsck /
如下图就是没有损坏的数据块了
随后,关闭所有服务,然后重启就可以了
总结:我估计是我断电后导致数据丢失。