NotServingRegionException错误
系统运行一段时间后:
刚开始重复报:
table=harve_visited_user, attempt=35/35 failed=1ops, last exception: org.apache.hadoop.hbase.NotServingRegionException: org.apache.hadoop.hbase.NotServingRegionException: Region harve_visited_user,7fceca2e-f5a1-4392-8f79-7ef3162f3421,1487091257232.fd14bb2aa7e374ff1338594a118652b0. is not online on z1,60040,1488419186595
后来报:
5095: Exception occured when updating object data.: Failed 1 action:
NotServingRegionException: 1 time, ;
NotServingRegionException异常主要有两种原因:
1.region正在分裂时对数据的操作会抛此异常
2.region数据损坏时
如果使用shell命令操作hbase,获取harve_visited_user表记录数:
运行到267000行后报错:
ERROR: org.apache.hadoop.hbase.NotServingRegionException: Region harve_visited_user,
7fceca2e-f5a1-4392-8f79-7ef3162f3421,1487091257232.fd14bb2aa7e374ff1338594a118652b0. is not online on z1,60040,1488419186595
可以看见是rowkey为7fceca2e-f5a1-4392-8f79-7ef3162f3421的记录出了问题,很可能是今天公司运维在部线,导致机房突然断电,很可能此时正在操作7fceca2e-f5a1-4392-8f79-7ef3162f3421,导致记录不完整。
这里应该是原因2:
数据损坏导致当前数据存放的regin无法使用,使用hadoop fsck检查是否有损坏块
使用hadoop fsck / 或者hadoop fsck /hbase/data检查数据健康状况:
可以看到,确实是harve_visited_user表丢了一块数据。
没有冗余备份,只能删除损坏的文件,使用命令: hadoop fsck -delete
刚开始玩hbase时胆子小,不敢使用上面的命令,加了一些路径,
执行完后再检查:
发现提示HEALTHY,健康。
重启hbase问题解决。
注:重启后如果还有问题,再检查看,同时参见PleaseHoldException异常的处理方案。