HIVE 数据库 Kerberos 连接
准备Kerberos 连接信息
需要文件
- <krb5.conf>: Kerberos配置文件。
- <user.keytab>: Kerberos密钥文件。
需要连接信息
- <user_principal>:- <user.keytab>文件对应的用户主体名。
- <jdbc_connection_info>: jdbc连接的具体信息。 包括域名,kerberos配置,zookeeper配置,hive服务主体- <service_principal>名称等。
驱动
- <hive_jdbc.jar>: Hive对应JDBC驱动。
每个用户的HIVE环境配置都不相同,建议可以拿到用户的相关信息:
- hive-site.xml HIVE配置文件信息。可以通过配置信息hive.metastore.kerberos.principal或者hive.server2.authentication.kerberos.principal拿到<service_principal>的信息。
- beeline 连接信息:HIVE自带的jdbc连接工具,用户搭建的HIVE环境一般会用beeline进行测试连接。用户自定义的环境jdbc连接url有时不需要<service_principal>。
例如:
beeline -u 'jdbc:hive2://localhost/user;serviceDiscoveryMode=zookeeper' -e "select count(*) from user.table"
信息
建议用户先本地测试文件的正确性和连通性。
- 将 - <krb5.conf>上传至- /etc/krb5.conf位置。通过- kinit <user_principal> -kt <user.keytab>测试连接Kerberos。
- 在HIVE本地机器使用beeline测试连接JDBC. 
配置文件至YHP
- 通过UI上传驱动hive_jdbc.jar。帮助
- ssh登录到STONEWAVE_SEARCH_BROKER,上传<krb5.conf>,<user.keytab>文件到${STONEWAVE_HOME}/var/conf/custom目录。
YHP连接
JDBC url
使用service principal和user principal的连接示例:
select * from jdbc('select 123', '{"url":"jdbc:hive2://localhost:10000/;principal=service/master@MYSERVER.LOCALHOST",
                              "driver":"org.apache.hive.jdbc.HiveDriver",
                              "kerberos_conf":"<krb5.conf>",
                              "kerberos_keytab":"<user.keytab>",
                              "principal": "user@MYSERVER.LOCALHOST"}')
数据源配置 帮助
[hive_kerberos]
driver = "org.apache.hive.jdbc.HiveDriver"
url = "jdbc:hive2://localhost:10000/;principal=service/master@MYSERVER.LOCALHOST"
kerberos_conf = "<krb5.conf>"
kerberos_keytab = "<user.keytab>"
principal = "user@MYSERVER.LOCALHOST"
使用数据源配置连接
select * from jdbc('select 123', 'hive_kerberos')
信息
最好使用用户beeline测试连接后的JDBC url信息。
例如:
beeline -u 'jdbc:hive2://localhost/user;serviceDiscoveryMode=zookeeper' -e "select count(*) from user.table"
对应YHP JDBC表函数连接
select * from jdbc('select count(*) from user.table', '{"url":"jdbc:hive2://localhost/user;serviceDiscoveryMode=zookeeper",
                              "driver":"org.apache.hive.jdbc.HiveDriver",
                              "kerberos_conf":"<krb5.conf>",
                              "kerberos_keytab":"<user.keytab>",
                              "principal": "user@MYSERVER.LOCALHOST"}')
警告
请注意kerberos验证系统是非常时间敏感,用户需要保证kerberos机器,HIVE机器,以及YHP机器是部署在同一时间和时区。建议使用NTP管理时间同步。