zoukankan      html  css  js  c++  java
  • Unable to connect to HBase using Phoenix JDBC Driver

    Unable to connect to HBase using Phoenix JDBC Driver

    Dhaval Modi
    9 posts
    Hi All,
     
    I am trying to connect to HBase using Phoenix JDBC Driver and getting below error:
    This is simple implementation of JDBC connection manager. 
     
    =============================================================
    Caused by: java.lang.IncompatibleClassChangeError: Class org.apache.hadoop.hbase.protobuf.generated.ClusterIdProtos$ClusterId$Builder does not implement the requested interface org.apache.hadoop.hbase.shaded.com.google.protobuf.Message$Builder
            at org.apache.hadoop.hbase.protobuf.ProtobufUtil.mergeFrom(ProtobufUtil.java:3154)
            at org.apache.hadoop.hbase.ClusterId.parseFrom(ClusterId.java:69)
            at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:75)
            at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:105)
            at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.retrieveClusterId(ConnectionManager.java:879)
            at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.<init>(ConnectionManager.java:635)
    =============================================================
     
    Based on my research it seems, I need to use some shaded package of phoenix-client. I am not able to figure it out.
     
    Regards,
    Dhaval Modi
    [hidden email]
    Reply | Threaded | More 

    Re: Unable to connect to HBase using Phoenix JDBC Driver

    Dhaval Modi
    9 posts
    Apologies, I missed important details.
     
    Phoenix version: 4.9.0-HBase-1.1
    HBase Version: 1.1.2

    Regards,
    Dhaval Modi
    [hidden email]

    On 1 February 2017 at 14:51, Dhaval Modi <[hidden email]> wrote:
    Hi All,
     
    I am trying to connect to HBase using Phoenix JDBC Driver and getting below error:
    This is simple implementation of JDBC connection manager. 
     
    =============================================================
    Caused by: java.lang.IncompatibleClassChangeError: Class org.apache.hadoop.hbase.protobuf.generated.ClusterIdProtos$ClusterId$Builder does not implement the requested interface org.apache.hadoop.hbase.shaded.com.google.protobuf.Message$Builder
            at org.apache.hadoop.hbase.protobuf.ProtobufUtil.mergeFrom(ProtobufUtil.java:3154)
            at org.apache.hadoop.hbase.ClusterId.parseFrom(ClusterId.java:69)
            at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:75)
            at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:105)
            at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.retrieveClusterId(ConnectionManager.java:879)
            at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.<init>(ConnectionManager.java:635)
    =============================================================
     
    Based on my research it seems, I need to use some shaded package of phoenix-client. I am not able to figure it out.
     
    Regards,
    Dhaval Modi
    [hidden email]
    Reply | Threaded | More 

    Re: Unable to connect to HBase using Phoenix JDBC Driver

    Kumar Anshuman
    2 posts
    Hi Dhaval,
     
    Have you added HBase-protocol jar in your dependencies?
    This error shows that you have either the incompatible version of HBase-protocol jar or you are missing it( might be missed out from the classpath).
    Try to include the proper version(for this case 1.1.2) of the jar or set this jar as HADOOP_CLASSPATH and see if it works.
     
    Regards,
    Kumar Anshuman
     
    Reply | Threaded | More 

    Re: Unable to connect to HBase using Phoenix JDBC Driver

    Dhaval Modi
    9 posts
    Thanks Anshuman. It was really helpful. 
     
    I added HBase-protocol jar in dependency and it got resolved.
     
    But now I am getting different error:
     
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Caused by: java.lang.IllegalArgumentException: Can't find method newStub in org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService!
            at org.apache.hadoop.hbase.util.Methods.call(Methods.java:45)
            at org.apache.hadoop.hbase.protobuf.ProtobufUtil.newServiceStub(ProtobufUtil.java:1675)
            at org.apache.hadoop.hbase.client.HTable$16.call(HTable.java:1750)
            ... 4 more
    Caused by: java.lang.NoSuchMethodException: org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService.newStub(org.apache.hadoop.hbase.shaded.com.google.protobuf.RpcChannel)
            at java.lang.Class.getMethod(Class.java:1786)
            at org.apache.hadoop.hbase.util.Methods.call(Methods.java:38)
            ... 6 more
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     
     

    Regards,
    Dhaval Modi
    [hidden email]

    On 1 February 2017 at 21:07, Kumar Anshuman <[hidden email]> wrote:
    Hi Dhaval,
     
    Have you added HBase-protocol jar in your dependencies?
    This error shows that you have either the incompatible version of HBase-protocol jar or you are missing it( might be missed out from the classpath).
    Try to include the proper version(for this case 1.1.2) of the jar or set this jar as HADOOP_CLASSPATH and see if it works.
     
    Regards,
    Kumar Anshuman
     
    Reply | Threaded | More 

    Re: Unable to connect to HBase using Phoenix JDBC Driver

    Kumar Anshuman
    2 posts
    Hi Dhaval,

    This error seems to be due to HBase and Phoenix jar version's mismatch or due to missing of dependency for HBase-protocol-{version}.jar or HBase-protobuff-{version}.jar, you will have to check the proper version of the HBase jars and Phoenix jars used, Please check the versions and validate the different alternatives suggested and try again and inform me if it works or not.
     
    Regards,
    Kumar Anshuman

    On Wed, Feb 1, 2017 at 9:41 PM, Kumar Anshuman <[hidden email]> wrote:
    Hi again Dhaval,

    This error seems to be due to HBase and Phoenix jar version's mismatch or due to missing of dependency for HBase-protocol-{version}.jar or HBase-protobuff-{version}.jar, you will have to check the proper version of the HBase jars and Phoenix jars used, Please check the versions and validate the different alternatives suggested and try again and inform me if it works or not.
     
    Regards,
    Kumar Anshuman

    On Wed, Feb 1, 2017 at 9:19 PM, Dhaval Modi <[hidden email]> wrote:
    Thanks Anshuman. It was really helpful. 
     
    I added HBase-protocol jar in dependency and it got resolved.
     
    But now I am getting different error:
     
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Caused by: java.lang.IllegalArgumentException: Can't find method newStub in org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService!
            at org.apache.hadoop.hbase.util.Methods.call(Methods.java:45)
            at org.apache.hadoop.hbase.protobuf.ProtobufUtil.newServiceStub(ProtobufUtil.java:1675)
            at org.apache.hadoop.hbase.client.HTable$16.call(HTable.java:1750)
            ... 4 more
    Caused by: java.lang.NoSuchMethodException: org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService.newStub(org.apache.hadoop.hbase.shaded.com.google.protobuf.RpcChannel)
            at java.lang.Class.getMethod(Class.java:1786)
            at org.apache.hadoop.hbase.util.Methods.call(Methods.java:38)
            ... 6 more
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     
     

    Regards,
    Dhaval Modi
    [hidden email]

    On 1 February 2017 at 21:07, Kumar Anshuman <[hidden email]> wrote:
    Hi Dhaval,
     
    Have you added HBase-protocol jar in your dependencies?
    This error shows that you have either the incompatible version of HBase-protocol jar or you are missing it( might be missed out from the classpath).
    Try to include the proper version(for this case 1.1.2) of the jar or set this jar as HADOOP_CLASSPATH and see if it works.
     
    Regards,
    Kumar Anshuman
     
    Reply | Threaded | More 

    Re: Unable to connect to HBase using Phoenix JDBC Driver

    James Taylor
    524 posts
    Sounds like you're using the wrong jar on the server side. Or perhaps you're using a vendor distribution (in which case you'll need to use their supported Phoenix version). Please review the installation instructions as everything you need is in the one single jar.
    Thanks,
    James

    On Wed, Feb 1, 2017 at 9:56 AM Kumar Anshuman <[hidden email]> wrote:
    Hi Dhaval,

    This error seems to be due to HBase and Phoenix jar version's mismatch or due to missing of dependency for HBase-protocol-{version}.jar or HBase-protobuff-{version}.jar, you will have to check the proper version of the HBase jars and Phoenix jars used, Please check the versions and validate the different alternatives suggested and try again and inform me if it works or not.
     
    Regards,
    Kumar Anshuman

    On Wed, Feb 1, 2017 at 9:41 PM, Kumar Anshuman <[hidden email]> wrote:
    Hi again Dhaval,

    This error seems to be due to HBase and Phoenix jar version's mismatch or due to missing of dependency for HBase-protocol-{version}.jar or HBase-protobuff-{version}.jar, you will have to check the proper version of the HBase jars and Phoenix jars used, Please check the versions and validate the different alternatives suggested and try again and inform me if it works or not.
     
    Regards,
    Kumar Anshuman

    On Wed, Feb 1, 2017 at 9:19 PM, Dhaval Modi <[hidden email]> wrote:
    Thanks Anshuman. It was really helpful. 
     
    I added HBase-protocol jar in dependency and it got resolved.
     
    But now I am getting different error:
     
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Caused by: java.lang.IllegalArgumentException: Can't find method newStub in org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService!
            at org.apache.hadoop.hbase.util.Methods.call(Methods.java:45)
            at org.apache.hadoop.hbase.protobuf.ProtobufUtil.newServiceStub(ProtobufUtil.java:1675)
            at org.apache.hadoop.hbase.client.HTable$16.call(HTable.java:1750)
            ... 4 more
    Caused by: java.lang.NoSuchMethodException: org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService.newStub(org.apache.hadoop.hbase.shaded.com.google.protobuf.RpcChannel)
            at java.lang.Class.getMethod(Class.java:1786)
            at org.apache.hadoop.hbase.util.Methods.call(Methods.java:38)
            ... 6 more
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     
     

    Regards,
    Dhaval Modi
    [hidden email]

    On 1 February 2017 at 21:07, Kumar Anshuman <[hidden email]> wrote:
    Hi Dhaval,
     
    Have you added HBase-protocol jar in your dependencies?
    This error shows that you have either the incompatible version of HBase-protocol jar or you are missing it( might be missed out from the classpath).
    Try to include the proper version(for this case 1.1.2) of the jar or set this jar as HADOOP_CLASSPATH and see if it works.
     
    Regards,
    Kumar Anshuman
     
    Reply | Threaded | More 

    Re: Unable to connect to HBase using Phoenix JDBC Driver

    Dhaval Modi
    9 posts
    Hi Anshuman & James,
     
    Thanks for your input. 
     
    This issue is resolved. The main reason was the use of HBase-shaded-client as forced dependency. 
    I removed it and issue got resolved. 
     

    Regards,
    Dhaval Modi
    [hidden email]

    On 1 February 2017 at 23:38, James Taylor <[hidden email]> wrote:
    Sounds like you're using the wrong jar on the server side. Or perhaps you're using a vendor distribution (in which case you'll need to use their supported Phoenix version). Please review the installation instructions as everything you need is in the one single jar.
    Thanks,
    James

    On Wed, Feb 1, 2017 at 9:56 AM Kumar Anshuman <[hidden email]> wrote:
    Hi Dhaval,

    This error seems to be due to HBase and Phoenix jar version's mismatch or due to missing of dependency for HBase-protocol-{version}.jar or HBase-protobuff-{version}.jar, you will have to check the proper version of the HBase jars and Phoenix jars used, Please check the versions and validate the different alternatives suggested and try again and inform me if it works or not.
     
    Regards,
    Kumar Anshuman

    On Wed, Feb 1, 2017 at 9:41 PM, Kumar Anshuman <[hidden email]> wrote:
    Hi again Dhaval,

    This error seems to be due to HBase and Phoenix jar version's mismatch or due to missing of dependency for HBase-protocol-{version}.jar or HBase-protobuff-{version}.jar, you will have to check the proper version of the HBase jars and Phoenix jars used, Please check the versions and validate the different alternatives suggested and try again and inform me if it works or not.
     
    Regards,
    Kumar Anshuman

    On Wed, Feb 1, 2017 at 9:19 PM, Dhaval Modi <[hidden email]> wrote:
    Thanks Anshuman. It was really helpful. 
     
    I added HBase-protocol jar in dependency and it got resolved.
     
    But now I am getting different error:
     
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Caused by: java.lang.IllegalArgumentException: Can't find method newStub in org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService!
            at org.apache.hadoop.hbase.util.Methods.call(Methods.java:45)
            at org.apache.hadoop.hbase.protobuf.ProtobufUtil.newServiceStub(ProtobufUtil.java:1675)
            at org.apache.hadoop.hbase.client.HTable$16.call(HTable.java:1750)
            ... 4 more
    Caused by: java.lang.NoSuchMethodException: org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService.newStub(org.apache.hadoop.hbase.shaded.com.google.protobuf.RpcChannel)
            at java.lang.Class.getMethod(Class.java:1786)
            at org.apache.hadoop.hbase.util.Methods.call(Methods.java:38)
            ... 6 more
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     
     

    Regards,
    Dhaval Modi
    [hidden email]

    On 1 February 2017 at 21:07, Kumar Anshuman <[hidden email]> wrote:
    Hi Dhaval,
     
    Have you added HBase-protocol jar in your dependencies?
    This error shows that you have either the incompatible version of HBase-protocol jar or you are missing it( might be missed out from the classpath).
    Try to include the proper version(for this case 1.1.2) of the jar or set this jar as HADOOP_CLASSPATH and see if it works.
     
    Regards,
    Kumar Anshuman
     
    Reply | Threaded | More 

    Re: Unable to connect to HBase using Phoenix JDBC Driver

    Raman Bedi
    2 posts
    This post has NOT been accepted by the mailing list yet.
    Hi Anshuman, James & Dhaval, 
    I am facing the same issue on HDP 2.3 with HBase version 1.1.1.2.3 and Phoenix version 4.4.0. I have been struggling to successfully run a MapReduce job that dumps its data into Phoenix. I have already HBase-shaded-client jar, but it doesn't exist on my disk. 
    The MapReduce job that I am running comes bundled with Phoenix (its CSVBulkLoader class). This job is running perfectly fine on my dev cluster which consists of the same stack. I have tried to include hbase-protocol into my application classpath but the error doesn't go away. 
    Please help me as I have been stuck on this issue for long. Thanks for the help :)
    Reply | Threaded | More 

    Re: Unable to connect to HBase using Phoenix JDBC Driver

    Raman Bedi
    2 posts
    This post has NOT been accepted by the mailing list yet.
    The error trace is as follows: 
    Error: java.lang.RuntimeException: 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: Can't find method newStub in org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService! 
            at org.apache.phoenix.mapreduce.CsvToKeyValueMapper.setup(CsvToKeyValueMapper.java:121) 
            at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:143) 
            at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787) 
            at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) 
            at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168) 
            at java.security.AccessController.doPrivileged(Native Method) 
            at javax.security.auth.Subject.doAs(Subject.java:422) 
            at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657) 
            at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162) 
    Caused by: 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: Can't find method newStub in org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService! 
            at org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:386) 
            at org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:145) 
            at org.apache.phoenix.query.ConnectionQueryServicesImpl.checkClientServerCompatibility(ConnectionQueryServicesImpl.java:987) 
            at org.apache.phoenix.query.ConnectionQueryServicesImpl.ensureTableCreated(ConnectionQueryServicesImpl.java:861) 
            at org.apache.phoenix.query.ConnectionQueryServicesImpl.createTable(ConnectionQueryServicesImpl.java:1175) 
            at org.apache.phoenix.query.DelegateConnectionQueryServices.createTable(DelegateConnectionQueryServices.java:112) 
            at org.apache.phoenix.schema.MetaDataClient.createTableInternal(MetaDataClient.java:1907) 
            at org.apache.phoenix.schema.MetaDataClient.createTable(MetaDataClient.java:745) 
            at org.apache.phoenix.compile.CreateTableCompiler$2.execute(CreateTableCompiler.java:186) 
            at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:305) 
            at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:297) 
            at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53) 
            at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:295) 
            at org.apache.phoenix.jdbc.PhoenixStatement.executeUpdate(PhoenixStatement.java:1244) 
            at org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:1851) 
            at org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:1820) 
            at org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:77) 
            at org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:1820) 
            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 java.sql.DriverManager.getConnection(DriverManager.java:664) 
            at java.sql.DriverManager.getConnection(DriverManager.java:208) 
            at org.apache.phoenix.util.QueryUtil.getConnection(QueryUtil.java:299) 
            at org.apache.phoenix.mapreduce.CsvToKeyValueMapper.setup(CsvToKeyValueMapper.java:119) 
            ... 8 more 
    Caused by: java.lang.IllegalArgumentException: Can't find method newStub in org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService! 
            at org.apache.hadoop.hbase.util.Methods.call(Methods.java:45) 
            at org.apache.hadoop.hbase.protobuf.ProtobufUtil.newServiceStub(ProtobufUtil.java:1669) 
            at org.apache.hadoop.hbase.client.HTable$16.call(HTable.java:1750) 
            at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
            at java.lang.Thread.run(Thread.java:745) 
    Caused by: java.lang.NoSuchMethodException: org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService.newStub(com.google.protobuf.RpcChannel) 
            at java.lang.Class.getMethod(Class.java:1786) 
            at org.apache.hadoop.hbase.util.Methods.call(Methods.java:38) 
            ... 6 more
  • 相关阅读:
    [luogu]P1852跳跳棋
    StdDraw绘图
    Java-Timer-Stop
    人之初
    单例模式--延时初始化
    ubuntu忘记密码
    QT5 TK1 串口通信
    金秋十月
    级联分类器训练-----OpenCV
    Hu矩SVM训练及检测-----OpenCV
  • 原文地址:https://www.cnblogs.com/felixzh/p/11586831.html
Copyright © 2011-2022 走看看