无法拆分hbase区域

7eumitmz  于 2021-06-07  发布在  Hbase
关注(0)|答案(0)|浏览(794)

在hbase 2.1.3中,我一直在分割一些区域。尝试使用split命令手动拆分时,我看到以下消息:
错误:org.apache.hadoop.hbase.client.donotretryregionexception:ecd6ce2a88f5dab5856d67640fc1c未打开;regionstate={ecd6ce2a88f5dab5856d67640fc1c state=spliting,ts=1597668752713,server=.cern.ch,16020,1597668462556}位于org.apache.hadoop.hbase.master.procedure.abstractstatemachinetableprocedure.checkonline(abstractstatemachinetableprocedure)。java:194)位于org.apache.hadoop.hbase.master.assignment.splittableregionprocedure.(splittableregionprocedure。java:117)在org.apache.hadoop.hbase.master.assignment.assignmentmanager.createsplitprocedure(assignmentmanager。java:747)在org.apache.hadoop.hbase.master.hmaster$3.run(hmaster。java:1864)在org.apache.hadoop.hbase.master.procedure.masterprocedureutil.submitprocedure(masterprocedureutil。java:134)在org.apache.hadoop.hbase.master.hmaster.splitregion(hmaster。java:1856)位于org.apache.hadoop.hbase.master.masterrpcservices.splitregion(masterrpcservices)。java:814)org.apache.hadoop.hbase.shaded.protobuf.generated.masterprotos$masterservice$2.callblockingmethod(masterprotos.java)org.apache.hadoop.hbase.ipc.rpcserver.call(rpcserver)。java:413) 在org.apache.hadoop.hbase.ipc.callrunner.run(callrunner。java:130)在org.apache.hadoop.hbase.ipc.rpcexecutor$handler.run(rpcexecutor。java:324)在org.apache.hadoop.hbase.ipc.rpcexecutor$handler.run(rpcexecutor。java:304)
在regionserver日志中,我看到以下内容:

<regionserver.HRegionServer>: <TRANSITION FAILED server {   host_name: "xxx.cern.ch"   port: 16020   start_code: 1597315203667 } transition {   transition_code: READY_TO_SPLIT   region_info {
    region_id: 1593698155128
    table_name {
      namespace: "test"
      qualifier: "2__20754__186111"
    }
    start_key: ""
    end_key: ""
    offline: false
    split: false
    replica_id: 0   }   region_info {
    region_id: 1597615214267
    table_name {
      namespace: "test"
      qualifier: "2__20754__186111"
    }
    start_key: ""
    end_key: "1923058__7625979394016775807__0"
    offline: false
    split: false
    replica_id: 0   }   region_info {
    region_id: 1597615214267
    table_name {
      namespace: "test"
      qualifier: "2__20754__186111"
    }
    start_key: "1923058__7625979394016775807__0"
    end_key: ""
    offline: false
    split: false
    replica_id: 0   } } : Failed transition ecd6ce2a88f5dab5856d67640fc1cxxx is not OPEN; regionState={ecd6ce2a88f5dab5856d67640fc1cxxx state=SPLITTING, ts=1597316103168, server=xxx.cern.ch,16020,1597315203667}> <ERROR> <regionserver.SplitRequest>: <Unable to ask master to split test:2__20754__186xxx,,1593698155128.ecd6ce2a88f5dab5856d67640fc1cxxx.>

只有当我禁用相应的表时错误才会消失,但这不是我的解决方案。到目前为止,我没有发现任何类似的问题。
这种情况发生在一些不同的表中。文件似乎一点也没有损坏。
此外,我在日志中看到这样一个可能与此问题无关的警告:

<WARN> <compactions.CompactionProgress>: <totalCompactingKVs=102710224 less than currentCompactedKVs=588714221>

解决方案:
我们通过使用以下命令禁用全局拆分来克服这种不一致的状态: splitormerge_switch 'SPLIT', false ,重新启动活动的hbase主机,重新启用拆分 splitormerge_switch 'SPLIT', true 手动分割受影响区域 split '<region hash>' . 我们遵循这个过程,因为我们注意到当hbase master(不是手动)触发拆分时,它以nullpointerexception结束,因为hbase master内存中的状态与hbase meta内存中的状态不同。在hbase:meta,它是开放的,在内存分裂。
我们不知道我们是如何得到这种状态的,也许这是2.1.3版本中的一个bug,因为我们在hbase 2.2.x中已经没有观察到它了。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题