Beeline连接Hiveserver2错误

错误定位

最近给hadoop集群配置了kerberos认证,之后准备配置sentry进行权限管理。安装并启用sentry服务后需要在beeline进行Grant等授权操作。

Note that since Hive CLI does not work with HiveServer2, it cannot be used to configure Sentry permissions.

在启用sentry之前基本都用的Hive CLI,所以也没有注意到beeline的问题,在尝试进行连接后beeline出现错误:

Error: Could not open client transport with JDBC Uri: jdbc:hive2://test-1:10000/default;: Peer indicated failure: Unsupported mechanism type PLAIN (state=08S01,code=0)

出现这个错误是因为连接时没有提供kerberos的principal信息

应该如下进行连接:

!connect jdbc:hive2://localhost:10000/default;principal=hive/HiveServer2Host@YOUR-REALM.COM

但是仍出现错误:

Error: Could not establish connection to jdbc:hive2://test-1:10000/default;principal=hive/test-1@JUNIORCHINA.COM: Required field ‘client_protocol’ is unset! Struct:TOpenSessionReq(client_protocol:null, configuration:{use:database=default}) (state=08S01,code=0)

针对这个错误,在网上搜到了这样的结果

https://issues.apache.org/jira/browse/HIVE-6050

确认是beeline client的版本比hiveserver2的版本要高

之后检查jar包

CLASSPATH中/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/jars/hive-jdbc-0.13.1-cdh5.3.0.jar

和lib中/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/hive/lib/hive-jdbc-0.13.1-cdh5.3.0.jar的jar包版本都对

无果。

最后留意到登录beeline后显示

Beeline version 1.5.2 by Apache Hive

beeline>

在其他节点登录beeline时显示

Beeline version 0.13.1-cdh5.3.0 by Apache Hive

beeline>

终于确定问题所在

解决

用其他节点客户端登录,或者更换beeline版本

    原文作者:白神来了
    原文地址: https://www.jianshu.com/p/3e9592dfea8d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞