hbase - HBase 区域无法拆分
问题描述
我坚持在 HBase 2.1.3 中拆分一些区域。尝试使用 split 命令手动拆分时,我看到以下消息:
错误:org.apache.hadoop.hbase.client.DoNotRetryRegionException:ecd6ce2a88f5dab5856d67640fc1cxxx 未打开;regionState={ecd6ce2a88f5dab5856d67640fc1cxxx state=SPLITTING, ts=1597668752713, server=xxx.cern.ch,16020,1597668462556} at org.apache.hadoop.hbase.master.procedure.AbstractStateMachineTableProcedure.checkureOnline(AbstractStateMachineTableProcedure.checkureOnline(AbstractStateMachineTableProcedure.checkureOnline(AbstractStateMachineTableProcedure.checkureOnline) at: 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。
在 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.>
只有当我禁用相应的表时错误才会消失,但这对我来说不是解决方案。到目前为止,我在任何地方都没有发现任何类似的问题。
这发生在几个不同的表上。HFiles 似乎根本没有损坏。
此外,我在日志中看到可能与此问题无关的警告:
<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 主内存中的状态与 HBase 元中的状态不同。在 hbase:meta 中,它是 OPEN 的,在内存 SPLITTING 中。
我们不知道我们是如何结束这种状态的,也许这是 2.1.3 版本中的一个错误,因为我们在 HBase 2.2.x 中再也没有观察到它。
解决方案
推荐阅读
- highcharts - Highcharts Gantt Vertical Scrollbar Missing in Full Screen Mode
- jenkins - 在使用促销时在 jekins 中传递参数
- android - 从包含多个集合和文档的 google firestore 检索数据时出现问题
- c++ - 带有 BIF_BROWSEFORCOMPUTER 和 SHGetPathFromIDList 的 SHBrowseForFolder 不工作
- c - 我用 WinApi 编写 OpenGL,但我的 WinApi 窗口不可见
- security - 在密码中多次包裹密码是一种强大的安全方法?
- node.js - protractor-fail-fast 插件似乎与 grep 选项冲突,分别都可以正常工作
- swift - 为什么我无法按下 UIPickerView 内的 UIButton?
- php - Laravel 的 AJAX 成功函数
- swift - 手动将 NavigationBar 切换到深色模式