Hbase 在客户端和服务器之间检测到不兼容的JAR

Hbase 在客户端和服务器之间检测到不兼容的JAR,hbase,phoenix,Hbase,Phoenix,我想在Cloudera CDH 5.2的HBase之上安装ApachePhoenix 我下载了Phoenix的最新版本(4.2.2),并将服务器jar文件放入每个区域服务器上的一个目录中(我没有修改主服务器) 然后,我将hbase env.sh文件更改为指向前缀为hbase\u CLASSPATH\u变量的文件 当我运行以下命令时: hbase classpath 列表中报告了phoenix serer jar 在主计算机上,当我尝试使用/sqlline.py qourumserver时,出现

我想在Cloudera CDH 5.2的HBase之上安装ApachePhoenix

我下载了Phoenix的最新版本(4.2.2),并将服务器jar文件放入每个区域服务器上的一个目录中(我没有修改主服务器)

然后,我将
hbase env.sh
文件更改为指向前缀为
hbase\u CLASSPATH\u
变量的文件

当我运行以下命令时:

hbase classpath
列表中报告了phoenix serer jar

在主计算机上,当我尝试使用
/sqlline.py qourumserver
时,出现以下异常:

java.sql.SQLException: ERROR 2006 (INT08): Incompatible jars detected between client and server. Ensure that phoenix.jar is put on the classpath of HBase in every region server: org.apache.hadoop.hbase.exceptions.UnknownProtocolException: No registered coprocessor service found for name MetaDataService in region SYSTEM.CATALOG,,1421861120199.56856673d5cff02b55b9ff5955485dba.
    at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:5579)
    at org.apache.hadoop.hbase.regionserver.HRegionServer.execServiceOnRegion(HRegionServer.java:3416)
    at org.apache.hadoop.hbase.regionserver.HRegionServer.execService(HRegionServer.java:3398)
    at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:29591)
    at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
    at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:108)
    at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:114)
    at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:94)
    at java.lang.Thread.run(Thread.java:745)

    at org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:337)
    at org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:133)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl.checkClientServerCompatibility(ConnectionQueryServicesImpl.java:919)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl.ensureTableCreated(ConnectionQueryServicesImpl.java:817)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl.createTable(ConnectionQueryServicesImpl.java:1126)
    at org.apache.phoenix.query.DelegateConnectionQueryServices.createTable(DelegateConnectionQueryServices.java:110)
    at org.apache.phoenix.schema.MetaDataClient.createTableInternal(MetaDataClient.java:1590)
    at org.apache.phoenix.schema.MetaDataClient.createTable(MetaDataClient.java:568)
    at org.apache.phoenix.compile.CreateTableCompiler$2.execute(CreateTableCompiler.java:175)
    at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:271)
    at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:263)
    at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
    at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:261)
    at org.apache.phoenix.jdbc.PhoenixStatement.executeUpdate(PhoenixStatement.java:1043)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl$9.call(ConnectionQueryServicesImpl.java:1551)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl$9.call(ConnectionQueryServicesImpl.java:1520)
    at org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:77)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:1520)
    at org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:162)
    at org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.connect(PhoenixEmbeddedDriver.java:126)
    at org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:133)
    at sqlline.SqlLine$DatabaseConnection.connect(SqlLine.java:4650)
    at sqlline.SqlLine$DatabaseConnection.getConnection(SqlLine.java:4701)
    at sqlline.SqlLine$Commands.connect(SqlLine.java:3942)
    at sqlline.SqlLine$Commands.connect(SqlLine.java:3851)
    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.SqlLine$ReflectiveCommandHandler.execute(SqlLine.java:2810)
    at sqlline.SqlLine.dispatch(SqlLine.java:817)
    at sqlline.SqlLine.initArgs(SqlLine.java:633)
    at sqlline.SqlLine.begin(SqlLine.java:680)
    at sqlline.SqlLine.mainWithInputRedirection(SqlLine.java:441)
    at sqlline.SqlLine.main(SqlLine.java:424)
Caused by: org.apache.hadoop.hbase.exceptions.UnknownProtocolException: org.apache.hadoop.hbase.exceptions.UnknownProtocolException: No registered coprocessor service found for name MetaDataService in region SYSTEM.CATALOG,,1421861120199.56856673d5cff02b55b9ff5955485dba.
    at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:5579)
    at org.apache.hadoop.hbase.regionserver.HRegionServer.execServiceOnRegion(HRegionServer.java:3416)
    at org.apache.hadoop.hbase.regionserver.HRegionServer.execService(HRegionServer.java:3398)
    at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:29591)
    at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
    at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:108)
    at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:114)
    at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:94)
    at java.lang.Thread.run(Thread.java:745)

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:106)
    at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:95)
    at org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRemoteException(ProtobufUtil.java:285)
    at org.apache.hadoop.hbase.protobuf.ProtobufUtil.execService(ProtobufUtil.java:1567)
    at org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel$1.call(RegionCoprocessorRpcChannel.java:93)
    at org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel$1.call(RegionCoprocessorRpcChannel.java:90)
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:114)
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:90)
    at org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel.callExecService(RegionCoprocessorRpcChannel.java:96)
    at org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel.callMethod(CoprocessorRpcChannel.java:51)
    at org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService$Stub.getVersion(MetaDataProtos.java:7996)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl$3.call(ConnectionQueryServicesImpl.java:894)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl$3.call(ConnectionQueryServicesImpl.java:886)
    at org.apache.hadoop.hbase.client.HTable$16.call(HTable.java:1542)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.exceptions.UnknownProtocolException): org.apache.hadoop.hbase.exceptions.UnknownProtocolException: No registered coprocessor service found for name MetaDataService in region SYSTEM.CATALOG,,1421861120199.56856673d5cff02b55b9ff5955485dba.
    at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:5579)
    at org.apache.hadoop.hbase.regionserver.HRegionServer.execServiceOnRegion(HRegionServer.java:3416)
    at org.apache.hadoop.hbase.regionserver.HRegionServer.execService(HRegionServer.java:3398)
    at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:29591)
    at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
    at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:108)
    at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:114)
    at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:94)
    at java.lang.Thread.run(Thread.java:745)

    at org.apache.hadoop.hbase.ipc.RpcClient.call(RpcClient.java:1452)
    at org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1656)
    at org.apache.hadoop.hbase.ipc.RpcClient$BlockingRpcChannelImplementation.callBlockingMethod(RpcClient.java:1714)
    at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.execService(ClientProtos.java:29924)
    at org.apache.hadoop.hbase.protobuf.ProtobufUtil.execService(ProtobufUtil.java:1563)
    ... 14 more

我还需要做哪些更改才能使其正常工作?

您可以尝试通过此链接解决类似问题,其中一些可能会有所帮助:

(一)

根本原因是phoenix jar未获得权限

(二)

谢谢大家,

我通过更改导入的jar名称来解决这个问题

(三)

在意外丢失RegionServer后,我收到了相同的错误。 SYSTEM.CATALOG表甚至没有传输到其他RegionServer 重新启动HBase主机后。我通过运行解决了这个问题 针对工作节点执行hbck。例如:sudo-uhbase hback -修理


确保你没有犯愚蠢的错误

像我的例子一样,我将jar放在
lib/hbase
下,而不是应该放在CDH集群下的
lib/hbase/lib


说真的,我正计划升级我的集群。

Hi,您最终使用了哪种组合:cdh+phoenix版本?谢谢我能够设置hbase/phoenix的一些组合。看看我的docker容器(nerdammer/hbase phoenix)。hbase phoenix/dockerfile不擅长docker,你能告诉我那个脚本吗。试图搜索“CDH”,没有运气?BWT,现在我正在运行CDH5.2.0+phoenix 4.3.1,看起来它可以工作了!