2016-08-24 1 views
1

私はあなたがここにコードを見つけることができます倹約0.9.0TProtocolException:readMessageBeginで欠落しているバージョン、古いクライアント

に対して構築倹約Javaクライアントを実行しようとした:クラスパスに https://github.com/apache/hbase/blob/master/hbase-examples/src/main/java/org/apache/hadoop/hbase/thrift/DemoClient.java

を、libthriftがありますスレッド "メイン" java.secuに

スキャンテーブル...

例外: -0.9.0.jar私は次のようになりましたrity.PrivilegedActionException: org.apache.thrift.protocol.TProtocolException:存在しないバージョン readMessageBegin、古いクライアント? java.security.AccessController.doPrivileged(ネイティブメソッド) にあるjavax.security.auth.Subject.doAs(Subject.java:422)at org.apache.hadoop.hbase.thrift.DemoClient.main(DemoClient.java :81) 原因:org.apache.thrift.protocol.TProtocolException:古いクライアントのreadMessageBeginに バージョンがありませんか? org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:213) で でorg.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69) org.apache.hadoop.hbaseました。 thrift.generated.Hbase $ Client.recv_getTableNames(Hbase.java:903) の org.apache.hadoop.hbase.thrift.generated.Hbase $ Client.getTableNames(Hbase.java:891) のorg.apache.hadoop .hbase.thrift.DemoClient.run(DemoClient.java:142) org.apache.hadoop.hbase.thrift.DemoClient.access $ 000(DemoClient.java:56) at org.apache.hadoop.hbase。 thrift.DemoClient $ 1.run(DemoClient.java:85) at org.apache.hadoop.hbase.thrift.DemoClient $ 1.run(DemoClient.java:82)

は、誰かが上記の原因となったかもしれないものにヒントを与えることはできますか?

ありがとうございます。

答えて

0

バージョンがhbaseと一致しません。 hbaseクライアントのlibは、接続先のサーバのlibより古いです。どのHBaseバージョンをコンパイルしていますか?

MVNの依存関係:ツリー

は、プロジェクトの依存関係を一覧表示されます。

+0

ヘルプが必要な場合は、自由に投稿してください。 –

+0

DemoClientは、hbase 1.1.2ビルド用の同じlibディレクトリから作成されました。クライアントが同じビルドを使用しているサーバーとどのように同期していないのか分かりにくいです。 pom.xmlの倹約バージョンは0.9.0です – Ted

0

CDH 5.3からサーバーをCloudera Hadoop 5.10にアップグレードした後、同様の問題が発生しました。私にとっては、キーは、このプロパティをfalseに変更しました:

<property> 
<name>hbase.regionserver.thrift.http</name> 
<value>false</value> 
</property> 

HTTPプロトコルがCDH5.4.0に添加し、私のサーバーの設定がtrueにこの設定を持っていたようです。これは私のクライアントのTBinaryProtocolと互換性がありません。

関連する問題