org.apache.hadoop.hbase.TableNotFoundException:phoenix 4.5.2的SYSTEM.CATALOG异常
我一直在尝试将Phoenix 4.5.2集成到我现有的hadoop集群中org.apache.hadoop.hbase.TableNotFoundException:phoenix 4.5.2的SYSTEM.CATALOG异常,hadoop,hbase,phoenix,Hadoop,Hbase,Phoenix,我一直在尝试将Phoenix 4.5.2集成到我现有的hadoop集群中 Hadoop Version : 2.7.1 HBase Version : 1.1.2 当我尝试从我的phoenix客户端创建表时,我遇到了以下异常。但我能够从HBase控制台成功创建表 org.apache.phoenix.exception.PhoenixIOException: SYSTEM.CATALOG at org.apache.phoenix.util.ServerUtil.parseServer
Hadoop Version : 2.7.1
HBase Version : 1.1.2
当我尝试从我的phoenix客户端创建表时,我遇到了以下异常。但我能够从HBase控制台成功创建表
org.apache.phoenix.exception.PhoenixIOException: SYSTEM.CATALOG
at org.apache.phoenix.util.ServerUtil.parseServerException(ServerUtil.java:108)
at org.apache.phoenix.query.ConnectionQueryServicesImpl.metaDataCoprocessorExec(ConnectionQueryServicesImpl.java:1051)
at org.apache.phoenix.query.ConnectionQueryServicesImpl.metaDataCoprocessorExec(ConnectionQueryServicesImpl.java:1014)
at org.apache.phoenix.query.ConnectionQueryServicesImpl.createTable(ConnectionQueryServicesImpl.java:1259)
at org.apache.phoenix.query.DelegateConnectionQueryServices.createTable(DelegateConnectionQueryServices.java:113)
at org.apache.phoenix.schema.MetaDataClient.createTableInternal(MetaDataClient.java:1937)
at org.apache.phoenix.schema.MetaDataClient.createTable(MetaDataClient.java:751)
at org.apache.phoenix.compile.CreateTableCompiler$2.execute(CreateTableCompiler.java:186)
at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:320)
at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:312)
at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:310)
at org.apache.phoenix.jdbc.PhoenixStatement.executeUpdate(PhoenixStatement.java:1422)
at org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:1927)
at org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:1896)
at org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:77)
at org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:1896)
at org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:180)
at org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.connect(PhoenixEmbeddedDriver.java:132)
at org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:151)
at org.apache.tools.ant.taskdefs.JDBCTask.getConnection(JDBCTask.java:370)
at org.apache.tools.ant.taskdefs.SQLExec.getConnection(SQLExec.java:940)
at org.apache.tools.ant.taskdefs.SQLExec.execute(SQLExec.java:612)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:440)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.Main.runBuild(Main.java:851)
at org.apache.tools.ant.Main.startAnt(Main.java:235)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: org.apache.hadoop.hbase.TableNotFoundException: SYSTEM.CATALOG
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegionInMeta(ConnectionManager.java:1257)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1155)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1139)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1096)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getRegionLocation(ConnectionManager.java:931)
at org.apache.hadoop.hbase.client.HRegionLocator.getRegionLocation(HRegionLocator.java:83)
at org.apache.hadoop.hbase.client.HTable.getRegionLocation(HTable.java:496)
at org.apache.hadoop.hbase.client.HTable.getKeysAndRegionsInRange(HTable.java:736)
at org.apache.hadoop.hbase.client.HTable.getKeysAndRegionsInRange(HTable.java:706)
at org.apache.hadoop.hbase.client.HTable.getStartKeysInRange(HTable.java:1760)
at org.apache.hadoop.hbase.client.HTable.coprocessorService(HTable.java:1715)
at org.apache.hadoop.hbase.client.HTable.coprocessorService(HTable.java:1695)
at org.apache.phoenix.query.ConnectionQueryServicesImpl.metaDataCoprocessorExec(ConnectionQueryServicesImpl.java:1034)
... 49 more
请说明此处出现了什么问题,Phoenix 4.5.2是否与HBase 1.1.2兼容。根据您提供的日志 Pheonix试图在Hbase中创建一个名为SYSTEM.CATALOG的表。但是,由于Hbase中的一些问题,它无法创建它 表“SYSTEM.CATALOG”是在第一次从Pheonix连接到Hbase时创建的
因此,我建议检查您的Pheonix配置是否存在连接问题,如IP地址映射错误、忘记创建无密码SSH等。清除zookeeper将解决此问题
bin/hbase clean --cleanZk
注意:-在使用上述命令之前,您需要关闭主服务器和区域服务器。检查您的hdfs://.../hbase/data/default/ 是否存在SYSTEM.CATALOG?在此处输入图像描述
如果没有,则必须尝试使用bin/hbase clean--cleanZk。在使用该命令之前,必须停止hbase Master和regionserver,但仍保持ZK的活动状态。以下是您需要执行的操作:
我有一个嵌入式HBase,手动删除HBase数据后出现此错误,因此我必须使用以下工具清理Zookeeper和HBase的其余部分:
bin/hbase clean --cleanAll
这就解决了我的问题。以上关于只运行zookeeper清理hbase数据的建议对我没有帮助。fiannl帮助我克服这个错误并允许创建SYSTEM.CATALOG表和其他相关表的方法是将hbase-site.xml从hbase安装复制到apache phoenix安装的bin文件夹中
在我的例子中,hbase conf位于/usr/local/hbase/conf中,我将其复制到/usr/local/apache-phoenix/bin中。我刚刚将bin文件夹中已经存在的原始hbase-site.xml重命名为其他名称,作为备份。 这解决了sqlline.py和SQuirreL客户端的连接问题
这是为了确保phoenix客户端库位于/squirrel/lib文件夹中,以便squirrel工作。看起来phoenix无法创建自己的附加(meta)表。能否通过Phoenix(sqlline.py localhost命令)将连接到HBase期间创建的HBase日志附加到HBase。Apache Phoenix在第一次连接期间创建这些表。
ZNode[sandbox hdp.hortonworks.com,160201549335973089]区域服务器未过期。正在退出而不清除hbase数据代码>我关闭了主服务器和区域服务器。