在使用beeline连接到启用kerberos的emr集群上的配置单元时,为什么要使用配置单元服务主体?

dohp0rv5  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(474)

我正在尝试使用emr集群上的beeline(启用kerberos)连接到hive,我想知道为什么要运行kinit(使用我的用户帐户),然后执行以下操作:

beeline -u "jdbc:hive2://localhost:10000/default;principal=hive/_HOST@REALM"

使我困惑的是上面的校长。为什么要用“principal=hive/_host@realm“(我读到的是配置单元服务主体)当我使用上一个命令中的kinit对我的用户帐户进行身份验证时?
我将对配置单元服务主体或我的用户帐户运行查询吗?使用beeline时,是否所有用户都使用配置单元服务主体?这背后有什么原因吗?
用于进一步上下文的链接:使用kerberos keytab通过直线连接到配置单元

ztmd8pv5

ztmd8pv51#

这个 principal= jdbcurl上的选项实际上引用了服务主体(spn),即您需要连接的对象。无可否认,这是含糊不清的。 kinit 验证用户主体(upn),创建一个“票证授予票证”(tgt),并将其转储到票证缓存中。
稍后,jdbc客户机(或http客户机,或hive metastore java客户机,或hdfs java客户机,无论什么)将使用tgt在适当的主机上请求适当服务类型的服务票证;出于某种原因,java从不将服务票证放在缓存中(不像 curl 或者python,它使用c库,比如 kinit ).
SPN通常在名为 ***-site.xml 由hadoop客户机库使用。
但是。。。jdbc驱动程序应该是独立的,不依赖于外部lib或配置文件,并从url获取其所有连接参数。这就是为什么你必须在你的url上显式地填充spn。嗯。

相关问题