Skip to main content
Version: 2.15.0

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"
info

建议用户先本地测试文件的正确性和连通性。

  1. <krb5.conf>上传至/etc/krb5.conf位置。通过 kinit <user_principal> -kt <user.keytab> 测试连接Kerberos。

  2. 在HIVE本地机器使用beeline测试连接JDBC.

配置文件至YHP

  1. 通过UI上传驱动hive_jdbc.jar帮助
  2. ssh登录到STONEWAVE_SEARCH_BROKER,上传<krb5.conf>, <user.keytab> 文件到${STONEWAVE_HOME}/var/conf/custom目录。

YHP连接

JDBC url

使用service principaluser 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')
info

最好使用用户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"}')
caution

请注意kerberos验证系统是非常时间敏感,用户需要保证kerberos机器,HIVE机器,以及YHP机器是部署在同一时间和时区。建议使用NTP管理时间同步。