HBase对于数据块有丢失的store做了启动检查的工作,如果通过HDFS发现store所在的block crrupt掉了,或是大小小于0,则该块所对应的Block被自动加入skipstorefile的metrix中。
但是如果这个store并未被重新加载过,那么block丢失的信息store并不知道,也就不会被加入到skipstorefile中去,所以这个时候去查询这个store里面的数据,就会出现错误。
解决的方法可以是重启Hbase,那么所有的store都要重新挂一次。或者手动进行fsck以及hbase的hbck的check,也许可以解决问题。
hadoop fsck / -delete
hbase hbck /