hbase - Hbase 快照还原失败:TableExistsException
问题描述
还原/克隆失败并显示以下内容:
clone_snapshot 'my_snap', 'my_table'
ERROR: org.apache.hadoop.hbase.snapshot.RestoreSnapshotException: Couldn't clone the snapshot={ ss=my_snap table=my_table type=FLUSH } on table=my_table
at org.apache.hadoop.hbase.master.snapshot.SnapshotManager.cloneSnapshot(SnapshotManager.java:693)
at org.apache.hadoop.hbase.master.snapshot.SnapshotManager.restoreSnapshot(SnapshotManager.java:764)
at org.apache.hadoop.hbase.master.MasterRpcServices.restoreSnapshot(MasterRpcServices.java:1274)
at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:55716)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2191)
at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:112)
at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:183)
at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:163)
Caused by: org.apache.hadoop.hbase.TableExistsException: my_table
at org.apache.hadoop.hbase.master.handler.CreateTableHandler.checkAndSetEnablingTable(CreateTableHandler.java:161)
at org.apache.hadoop.hbase.master.handler.CreateTableHandler.prepare(CreateTableHandler.java:129)
at org.apache.hadoop.hbase.master.snapshot.CloneSnapshotHandler.prepare(CloneSnapshotHandler.java:92)
at org.apache.hadoop.hbase.master.snapshot.SnapshotManager.cloneSnapshot(SnapshotManager.java:685)
... 7 more
否则 Hbase / HDFS 的表不存在
hbase(main):007:0> disable 'my_table'
ERROR: Table my_table does not exist.
hbase(main):008:0> drop 'my_table'
ERROR: Table my_table does not exist.
hbase(main):006:0> is_enabled 'my_table'
ERROR: Unknown table my_table!
系统表以其他方式显示全新安装:
hbase(main):002:0> scan 'hbase:meta'
ROW COLUMN+CELL
hbase:namespace,,1587169536827.05256bd9dfa93d08b96b1a1019118082. column=info:regioninfo, timestamp=1587418869604, value={ENCODED => 05256bd9dfa93d08b96b1a1019118082, NAME => 'hbase:namespace,,1587169536827.05256bd9dfa93d08b96b1a1019118082.', STARTKEY => '', ENDKEY
=> ''}
hbase:namespace,,1587169536827.05256bd9dfa93d08b96b1a1019118082. column=info:seqnumDuringOpen, timestamp=1587418869604, value=\x00\x00\x00\x00\x00\x00\x00\x0E
hbase:namespace,,1587169536827.05256bd9dfa93d08b96b1a1019118082. column=info:server, timestamp=1587418869604, value=my_server:60020
hbase:namespace,,1587169536827.05256bd9dfa93d08b96b1a1019118082. column=info:serverstartcode, timestamp=1587418869604, value=1587418822093
1 row(s) in 0.2970 seconds
hbase(main):003:0> scan 'hbase:namespace'
ROW COLUMN+CELL
default column=info:d, timestamp=1587169538663, value=\x0A\x07default
hbase column=info:d, timestamp=1587169538693, value=\x0A\x05hbase
2 row(s) in 0.0580 seconds
以及 ZK:
$ /usr/bin/zookeeper-client -server my_server:2181 ls /hbase/table
Connecting to my_server:2181
.... truncated for brevity ...
WatchedEvent state:SyncConnected type:None path:null
[hbase:meta, hbase:namespace]
该集群是一个长期存在的独立集群,最近清理了 Hbase(1.1) HDFS 目录并重新启动了所有组件
没有其他消费者使用自动取款机
解决方案
这实际上是由 ZK 条目引起的
来自一些旧集群的剩余 ZK 记录隐藏了问题(在我的情况下是 /hbase 与 /hbase_dr) - 请注意
推荐阅读
- ios - 编译器无法在 SwiftUI 中的合理时间内对该表达式进行类型检查?
- java - 如果用户输入无效选项,则请求相同的输入
- reactjs - 如何解决:“在 React Native 的 UIManager 中找不到 RNCSafeprovider
- node.js - React Native:使用 Hooks 迭代和显示嵌套对象
- minizinc - Minizinc 分段线性函数
- javascript - AngularJS:在固定位置元素上动画 ng-show 和 ng-hide
- python - 序列化或保存随机森林分类器模型对象以在生产环境中使用的最佳方法
- jquery - TinyMCE json image_list 和图像的标题属性
- swift - 如何检查 xcode 断开设备上的错误?
- kubernetes - 如何在 Kubernetes 中阻止来自特定命名空间的流量