Table 'SYSTEM.CATALOG' was not found, got


1. 异常日志


Error: Table 'SYSTEM.CATALOG' was not found, got: IP. (state=08000,code=101)
org.apache.phoenix.exception.PhoenixIOException: Table 'SYSTEM.CATALOG' was not found, got: IP.
at org.apache.phoenix.util.ServerUtil.parseServerException(ServerUtil.java:111)
at org.apache.phoenix.query.ConnectionQueryServicesImpl.metaDataCoprocessorExec(ConnectionQueryServicesImpl.java:1273)
at org.apache.phoenix.query.ConnectionQueryServicesImpl.metaDataCoprocessorExec(ConnectionQueryServicesImpl.java:1238)
at org.apache.phoenix.query.ConnectionQueryServicesImpl.createTable(ConnectionQueryServicesImpl.java:1434)
at org.apache.phoenix.schema.MetaDataClient.createTableInternal(MetaDataClient.java:2302)
at org.apache.phoenix.schema.MetaDataClient.createTable(MetaDataClient.java:922)
at org.apache.phoenix.compile.CreateTableCompiler$2.execute(CreateTableCompiler.java:194)
at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:343)
at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:331)
at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:329)
at org.apache.phoenix.jdbc.PhoenixStatement.executeUpdate(PhoenixStatement.java:1421)
at org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2353)
at org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2300)
at org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:78)
at org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:2300)
at org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:231)
at org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.createConnection(PhoenixEmbeddedDriver.java:144)
at org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:202)
at sqlline.DatabaseConnection.connect(DatabaseConnection.java:157)
at sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:203)
at sqlline.Commands.connect(Commands.java:1064)
at sqlline.Commands.connect(Commands.java:996)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:36)
at sqlline.SqlLine.dispatch(SqlLine.java:803)
at sqlline.SqlLine.initArgs(SqlLine.java:588)
at sqlline.SqlLine.begin(SqlLine.java:656)
at sqlline.SqlLine.start(SqlLine.java:398)
at sqlline.SqlLine.main(SqlLine.java:292)

2. 解决方法

这个问题通常意味着 HBase 中的系统表 SYSTEM.CATALOG 已经丢失或损坏。SYSTEM.CATALOG 表是 HBase 中的系统表之一,它存储了所有表的元数据信息,包括表名、列族、Region 信息等。

如果出现了这个问题,可以尝试使用 HBase shell 中的 disable 'SYSTEM.CATALOG' 命令禁用这个表,然后再使用 drop 'SYSTEM.CATALOG' 命令删除这个表。这样可以强制删除表并重新创建它。请注意,此操作将删除 HBase 中的所有表元数据信息,因此必须先备份所有表的元数据信息。

如果禁用和删除 SYSTEM.CATALOG 表后仍然出现问题,则需要考虑从备份中恢复元数据信息,或者重新初始化 HBase 集群。在重新初始化 HBase 集群之前,请确保已备份所有表的数据和元数据信息。

  • 初始化 HBASE 数据库
  1. 关闭hbase master 与regionserver

  2. 执行命令 hbase clean –cleanZk

hbase clean --cleanZk 命令会删除 HBase 集群中 ZooKeeper 上与 HBase 相关的所有节点和数据,包括:

  1. HBase 在 ZooKeeper 上的根节点 /hbase
  2. 所有 HBase 表的元数据节点
  3. 所有 HBase RegionServer 的在线节点
  4. 所有 HBase 表 Region 的相关节点

这些节点包含了 HBase 集群中所有表的元数据信息、RegionServer 的状态信息、以及所有 Region 的分布信息等。因此,使用此命令将清除 HBase 集群中所有表的元数据和 region 信息,因此在使用此命令之前,请确保已备份了重要数据。


文章作者: hnbian
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 hnbian !
评论
 上一篇
Apache Phoenix的Join操作和优化 Apache Phoenix的Join操作和优化
1. 数据说明 Orders表: OrderID CustomerID ItemID Quantity Date 1630781 C004 I001 650 09-01-2013 1630782 C003 I006 250
2017-06-10
下一篇 
Flume ElasticSearch Sink 配置参数与Agent配置文件示例 Flume ElasticSearch Sink 配置参数与Agent配置文件示例
1. ElasticSearch Sink 介绍ElasticSearchSink 可以向elasticsearch 集群中写入数据。默认情况下写入event类型数据以便 Kibana 能够以图形化方式展示他们,就像 logstash 那样
2017-05-20
  目录