1 mammut@classb-ds-bigdata16:~/apache-hive-1.2.1-bin$ bin/hive2 Logging initialized using configuration in /home/mammut/apache-hive-0.13.1-bin/conf/hive-log4j.properties.self3 Hive history file=/tmp/mammut/hive_job_log_21e28d9e-7756-402e-b0d2-242f4ceef095_1602622773.txt4 hive>
b、将hive作为一个可以提供SQL接口的数据库来使用,这样可以通过jdbc连接
这里就是对第二种方式做一下整理和记录,在实现的过程中,遇到了一些问题,解决的过程中也顺带学习了一些概念和方法。
分解成各个子模块后,主要是下面几点:
1、搭建hiveserver2服务器
2(可选)、认证方式为kerberos认证,则需要配置相应的kerberos
3、代码实现:
a、认证kerberos
b、建立jdbc连接
4、验证结果
一、搭建hiveserver2服务器:
a、分别设置hiveclient中的hive-site.xml中:warehouse路径、jdbc(metastore)为mysql以及相应连接方式、用户名密码 ---这几个是hive-client搭建必须的配置
b、设置hiveserver2的配置,配置认证方式为kerberos,keytab为一个有代理权限的keytab和相应principal(这里选择代理权限的keytab,1是因为hiveserver2是个代理服务器,2是为了方便多个不同用户通过jdbc连接时,可以通过代理拥护代理执行,否则一个普通用户访问会有如下错误)
1 16/03/02 17:32:33[main]: ERROR transport.TSaslTransport: SASL negotiation failure2 javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Server not found in Kerberos database (7) -UNKNOWN_SERVER)]3 at com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:212)4 at org.apache.thrift.transport.TSaslClientTransport.handleSaslStartMessage(TSaslClientTransport.java:94)5 at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:253)6 at org.apache.thrift.transport.TSaslClientTransport.open(TSaslClientTransport.java:37)7 at org.apache.hadoop.hive.thrift.client.TUGIAssumingTransport$1.run(TUGIAssumingTransport.java:52)8 at org.apache.hadoop.hive.thrift.client.TUGIAssumingTransport$1.run(TUGIAssumingTransport.java:49)9 at java.security.AccessController.doPrivileged(Native Method)
c、设置hiveserver2的port和host(host设置成0.0.0.0,来接收未知来源的ip):
hive.server2.thrift.port
10000
Port number of HiveServer2 Thrift interface.
Can be overridden by setting $HIVE_SERVER2_THRIFT_PORT
hive.server2.thrift.bind.host