数据平台笔记-数据不一致问题排查


对于突然停电导致系统shutdown,最受伤的就是hbase的数据,完全重启后,会发现hbase的表出问题,要么表不存在,要么存在但是根本写不进去数据。大部分是由于zookeeper中保存的数据和hbase不一致,所以需要从源头进行排查,就是hbase的存储hdfs。

检查hdfs

进入hadoop的管理页面http://ibdp-00:50070,会显示错误的blocks信息,如果没有说明hdfs文件没有问题。

如果存在问题,就扫描hdfs,根据错误提示删除掉坏的block

hadoop fsck /  a
hadoop fs  -rm /xxxxx

检查HBase

这个时候在写hbase看看,能否写入,如果还是有问题,先查看hbase日志,如果出现下面所示异常,说明hbase集群状态不一致。

表有问题是,hbase客户端连接时,会不停的重试,默认是35次,可以修改小一点的值(主配置文件hbase.client.retries.number),减少重试次数。

删除zookeeper中的hbase目录,然后重启habse,在zk中自动重新建立目录。

hbase zkcli
rmr /hbase
hbase-start.sh

如果还是出现错误,那就对hbase进行状态检查和修复,先查看hbase的管理页面,查看表状态,根据所在节点,在继续查看regin server的log日志。

如上图中的hdfs中没有对应的文件,而habse meta中有数据,不一致,那么使用如下命令先检查一致性,在进行修复,修复后需要重启hbase。

hbase hbck -details
hbase hbck -fixMeta -fixAssignments

出现问题,应该先检查日志,根据日志进行判断,而不是瞎猜,浪费时间。