1、现象说明
早上,客户反映某些日期的历史数据查询不出来(我们系统将历史的汇总数据是保存到Hbase中),从查询端的日志看查询失败(查询端是erlang写的分布式查询引擎)。erlang是通过HBase提供的thrift 服务接口来查询hbase的,所以进一步去查看thrift server的日志信息,发现如下的错误:
备注:并不是所有的查询都失败,只有某些站点的某些日期的数据查询失败。
2、问题的排查和定位
从日志Caused by: java.io.IOException: Failed to read compressed block at 212328226 和 Caused by: java.io.IOException: Invalid HFile block magic: 可以初步判断应该是底层保存的文件出现了问题。
(1)首先登录到NameNode web界面,查看是否有corrupted的block的问题,发现一切正常
(2)然后登录到Hbase的web界面,查看对应的表sum_profile_non_filter_olap_d是否正常,发现一切正常
(3)然后运行一下hbase hbck查看是否有不一致的问题,发现也一切正常
(4)进一步使