我有一个定制的Hive服务器,可以扩展HiveServer2。我可以使用CDH5中的以下参数启动它:
--hiveconf "hive.server2.authentication=NOSASL" \
--hiveconf "hive.metastore.local=true" \
--hiveconf "hive.metastore.uris=" \
--hiveconf "hive.metastore.sasl.enabled=false" \
--hiveconf "fs.hdfs.impl.disable.cache=true" \
--hiveconf "fs.file.impl.disable.cache=true" \
--hiveconf "hive.server2.authentication.kerberos.principal=$KRB_PRINCIPAL" \
--hiveconf "hive.server2.authentication.kerberos.keytab=$KRB_KEYTAB"
但是,每当我尝试使用beeline连接到它时,我都会收到以下错误:
17/09/04 03:04:44错误TThreadPoolServer:发生了Thrift错误 在处理消息期间。 org.apache.thrift.protocol.TProtocolException:缺少版本 readMessageBegin,老客户端?在 org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:228) 在org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27) 在 org.apache.hive.service.auth.TSetIpAddressProcessor.process(TSetIpAddressProcessor.java:56) 在 org.apache.thrift.server.TThreadPoolServer $ WorkerProcess.run(TThreadPoolServer.java:286) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:745)
此错误与Hive - Thrift - Missing version in readMessageBegin, old client?中报告的错误相同。但条件不同:我的身份验证已设置为NOSASL,而我的服务器thrift版本已经是V7。
还有其他可能导致触发的原因吗? (例如,JAR地狱或来自hive-site.xml的配置不正确)
答案 0 :(得分:2)
我在2天前面临同样的问题,我相信这里的问题是你在不同的传输模式下启动服务器和客户端。尝试将这些属性放在hive-site.xml
中 <property>
<name>hive.server2.transport.mode</name>
<value>http</value>
</property>
<property>
<name>hive.server2.thrift.http.port</name>
<value>10001</value>
</property>
<property>
<name>hive.server2.thrift.http.path</name>
<value>cliservice</value>
</property>
然后开始你的Metastore:
nohup bin/hive --service metastore &
启动你的hiveserver2
hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10001 --hiveconf hive.root.logger=INFO,console
然后从直线连接:
!connect jdbc:hive2://localhost:10001/hive;transportMode=http;httpPath=cliservice
您将连接到:Apache Hive。