tprotocolexception:readmessagebegin中缺少版本,旧客户端

0x6upsns  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(608)

我试着运行一个基于Thrift0.9.0构建的ThriftJava客户机
您可以在这里找到代码:https://github.com/apache/hbase/blob/master/hbase-examples/src/main/java/org/apache/hadoop/hbase/thrift/democlient.java
在类路径中,有libthrift-0.9.0.jar,我得到了以下信息:
正在扫描表。。。
线程“main”java.security.privilegedactionexception中出现异常:org.apache.thrift.protocol.tprotocolexception:readmessagebegin中缺少版本,旧客户端?位于javax.security.auth.subject.doas(subject)的java.security.accesscontroller.doprivileged(本机方法)。java:422)位于org.apache.hadoop.hbase.thrift.democlient.main(democlient.com)。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\u 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.com)。java:56)在org.apache.hadoop.hbase.thrift.democlient$1.run(democlient。java:85)在org.apache.hadoop.hbase.thrift.democlient$1.run(democlient。java:82)
有人能暗示一下是什么导致了上述情况吗?
谢谢

lztngnrs

lztngnrs1#

版本与hbase不匹配。您的hbase客户端库比您要连接的服务器库旧。您在哪个hbase版本下编译?
mvn d公司ependency:tree
将列出项目的依赖项。

kgqe7b3p

kgqe7b3p2#

在将服务器从cdh5.3升级到clouderahadoop5.10之后,我遇到了类似的问题。对我来说,关键是将此属性更改为false:

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

似乎在cdh5.4.0中添加了http协议,并且我的服务器设置将此设置设置为true。这与我当事人的协议不符。

相关问题