hbase region空洞问题修复

1 异常信息
org.apache.hadoop.hbase.exceptions.FailedSanityCheckException: Requested row out of range for doMiniBatchMutation on HRegion CM_WARE_22,82228221001000100000007175328,1501813702755.c9c1b2ef162c0075420b9ee2df1a3091., startKey='82228221001000100000007175328', getEndKey()='82229221000000000000002251629', row='82229221001000000000001862129'
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.doBatchOp(RSRpcServices.java:688)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.doNonAtomicRegionMutation(RSRpcServices.java:639)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.multi(RSRpcServices.java:1931)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:32213)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2034)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

  • 初步分析,由于region分布,存在rowkey空洞,导致rowkey不连续。在页面上查看该表region分布
CM_WARE_22,82227221000000000000002042827,1499516073152.12d95142a820361927b02d8ec8cd466d.	shdx095:61520	82227221000000000000002042827	82228221001000100000007175328	0.04316194	31275854
CM_WARE_22,82228221001000100000007175328,1501813702755.c9c1b2ef162c0075420b9ee2df1a3091.	shdx082:61520	82228221001000100000007175328	82229221000000000000002251629	1.0	37988291
CM_WARE_22,82230,1499666283926.91f90e2b8335063d6fe9aa0b9822c9a7.	                        shdx087:61520                       82230	               822312210000000000000019086	    0.043608032	20661496
  • 根据实际该表的region的分布情况,确实存在空洞。异常信息中,需要的写入的rowkey,应该在空洞的范围区间。
2 检查该表的信息
hbase hbck -details 'CM_WARE_22'

信息截取:

82228221001000100000007175328:	[ { meta => CM_WARE_22,82228221001000100000007175328,1501813702755.c9c1b2ef162c0075420b9ee2df1a3091., hdfs => hdfs://shzxhoneycomb/hbasezy/data/default/CM_WARE_22/c9c1b2ef162c0075420b9ee2df1a3091, deployed => shdx082,61520,1516073423971;CM_WARE_22,82228221001000100000007175328,1501813702755.c9c1b2ef162c0075420b9ee2df1a3091., replicaId => 0 }, 82229221000000000000002251629]	
82229221000000000000002251629:	
82230:	[ { meta => CM_WARE_22,82230,1499666283926.91f90e2b8335063d6fe9aa0b9822c9a7., hdfs => hdfs://shzxhoneycomb/hbasezy/data/default/CM_WARE_22/91f90e2b8335063d6fe9aa0b9822c9a7, deployed => shdx087,61520,1516073423769;CM_WARE_22,82230,1499666283926.91f90e2b8335063d6fe9aa0b9822c9a7., replicaId => 0 }, 822312210000000000000019086]	
822312210000000000000019086:	[ { meta => CM_WARE_22,822312210000000000000019086,1500042454234.9c48825a2fa4ada58b260ebd4eef5e26., hdfs => hdfs://shzxhoneycomb/hbasezy/data/default/CM_WARE_22/9c48825a2fa4ada58b260ebd4eef5e26, deployed => shdx051,61520,1516073621059;CM_WARE_22,822312210000000000000019086,1500042454234.9c48825a2fa4ada58b260ebd4eef5e26., replicaId => 0 }, 82231221001000200000009552631]	
82231221001000200000009552631:	[ { meta => CM_WARE_22,82231221001000200000009552631,1500042454234.5f90d62d83460bfd73bfa54dba54906f., hdfs => hdfs://shzxhoneycomb/hbasezy/data/default/CM_WARE_22/5f90d62d83460bfd73bfa54dba54906f, deployed => shdx052,61520,1516073423832;CM_WARE_22,82231221001000200000009552631,1500042454234.5f90d62d83460bfd73bfa54dba54906f., replicaId => 0 }, 82232221000000000001038811232]	
  • 详情展示里,我们可以看到,82229221000000000000002251629--82230段,缺失meta信息
  • 也可以通过查询hbase:meta表,获取对应信息
scan 'hbase:meta' , {FILTER=>"PrefixFilter('CM_WARE_22')"}
3 尝试修复rowkey空洞
hbase hbck -repairHoles 'CM_WARE_22'
  • 修复后的region分布情况:
CM_WARE_22,82227221000000000000002042827,1499516073152.12d95142a820361927b02d8ec8cd466d.	shdx095:61520	82227221000000000000002042827	82228221001000100000007175328	0.04316194	31275854
CM_WARE_22,82228221001000100000007175328,1501813702755.c9c1b2ef162c0075420b9ee2df1a3091.	shdx082:61520	82228221001000100000007175328	82229221000000000000002251629	1.0	37988291
CM_WARE_22,82228221001000100000007175328,1515550510214.ff663d437879a2c61ac9217177648059.	shdx081:61520	82228221001000100000007175328	82230	0.6747074	0
CM_WARE_22,82230,1499666283926.91f90e2b8335063d6fe9aa0b9822c9a7.	shdx087:61520	82230	822312210000000000000019086	0.043608032	20661496
  • 执行后,region空洞得到补充。查看region分布,发现有2个region的Start Key是相同的。要解决这个问题,可以尝试将这2个region进行合并。本次处理,未进行合并,写数据时,暂未出现异常

猜你喜欢

转载自my.oschina.net/u/1188945/blog/1626629
今日推荐