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管理时间同步。