3

我有一个由 5 个节点组成的集群,我在 HBase 上创建了一些表并用数据填充它。其中一个节点失败,现在我可以列出 HBase 上的所有表,但是扫描或禁用其中两个表会给出

NativeException: org.apache.hadoop.hbase.client.NoServerForRegionException: No server address listed in .META. for region TableName,,1295871604968

我想删除这张桌子,但无法解决这个问题。我为此使用了 hbase shell。

4

5 回答 5

2

我通过删除表中.META.出现错误的表的表条目来解决问题,然后重新创建表。我认为该.META.表将位置保存到死节点上的区域,并且当节点死时由于某种原因无法更新区域位置。删除条目后,我能够重新创建表。我在这里找到了一个关于它的讨论,帮助我走上正确的道路。

于 2011-01-28T10:01:56.810 回答
1

是否可以重新启动节点?

HBase 应该已将区域重新分配到其他节点。可能有几个原因不会发生这种情况,但我能想到的一个原因是您的 HDFS 已损坏。如果您的数据节点中没有复制(或复制低于节点故障数),则可能会发生这种情况。检查你的文件系统 (hadoop fsck /)

此外,列出您正在使用的 hbase 和 hadoop 的版本也很有帮助。如果可能,使用 hadoop 0.20-append 分支迁移到 HBase 0.90 版(包含在 CDH3 中)

于 2011-01-26T16:22:31.487 回答
0

我们遇到了类似的问题,但我们发誓我们没有一个节点出现故障。然而,不管它是如何发生的(因为我们仍然不太确定),我们如何修复它是我们拍摄了一张乱七八糟的表的快照,并从该快照中重新创建了表。

scan 'mytable'
ERROR: No server address listed in hbase:meta for region mytable,,1408136497251.5110a0bae8315ed52af93663401ab415. containing row

事实证明,即使元表中的表被弄乱了,数据也没有被弄乱,我们能够对其进行新的快照、删除和克隆。

snapshot 'mytable', 'mytable-Snapshot-2014-08-25'
disable 'mytable'
drop 'mytable'
clone_snapshot 'mytable-Snapshot-2014-08-25', 'mytable'
于 2014-08-25T16:42:01.500 回答
0

在我们的例子中,当有人不小心将我们的一张桌子置于“禁用”状态时,我们看到了这个错误。这导致表有 0 个区域,因此“hbase:meta 中没有列出服务器地址”。修复是意识到它被禁用然后重新启用它:

hbase is_disabled 'table name'

hbase enable 'table name'

于 2018-02-13T12:34:54.840 回答
0

尝试

刷新'.META.'

major_compact '.META.'

在 hbase shell 中并尝试再次扫描表。

于 2017-01-05T15:32:49.177 回答