Hadoop 凭证管理器
为了通过启用了 Kerberos 的 Hadoop 集群的认证,Kyuubi 目前有两种提交引擎的方式:
- 使用当前 Kerberos 用户提交,并附加
SparkSubmit参数--proxy-user。 - 指定
spark.kerberos.principal和spark.kerberos.keytab进行提交。
如果引擎使用 --proxy-user 提交,其获取的 Hadoop 集群服务委托令牌由当前 Kerberos 用户获得,无法自行续期。
因此,引擎的生命周期受限于委托令牌的存活时间。
为了消除这一限制,Kyuubi 在服务端的 Hadoop Credentials Manager 中续期委托令牌。
使用 principal 和 keytab 提交的引擎可以自行续期委托令牌。但出于实现简洁性的考虑,Kyuubi 服务端也会为其续期委托令牌。
配置项
集群服务
Kyuubi 目前支持续期 Hadoop 文件系统和 Hive Metastore 服务的委托令牌。
Hadoop 客户端配置
如果尚未设置 HADOOP_CONF_DIR,请在 $KYUUBI_HOME/conf/kyuubi-env.sh 中进行设置,例如:
$ echo "export HADOOP_CONF_DIR=/path/to/hadoop/conf" >> $KYUUBI_HOME/conf/kyuubi-env.shExtra Hadoop filesystems can be specified in $KYUUBI_HOME/conf/kyuubi-defaults.conf by kyuubi.credentials.hadoopfs.uris in comma separated list.
可以在 $KYUUBI_HOME/conf/kyuubi-defaults.conf 中通过 kyuubi.credentials.hadoopfs.uris 以逗号分隔的列表形式指定额外的 Hadoop 文件系统。
Hive metastore 配置
通过 kyuubi-defaults.conf
在 $KYUUBI_HOME/conf/kyuubi-defaults.conf 中指定 Hive metastore 配置。Hadoop Credentials Manager 将在初始化时加载这些配置。
通过 hive-site.xml
将您的 hive-site.xml 副本放置到 $KYUUBI_HOME/conf 中,Kyuubi 将加载该配置文件到其类路径中。
此方式的配置优先级低于 $KYUUBI_HOME/conf/kyuubi-defaults.conf 中的配置。
通过 JDBC 连接 URL
JDBC 连接 URL 中指定的 Hive 配置会被 Hadoop Credentials Manager 忽略,因为 Hadoop Credentials Manager 在 Kyuubi 服务器启动时即被初始化。
凭据续期
| Key | 默认值 | 说明 | 类型 | 引入版本 |
|---|---|---|---|---|
kyuubi.credentials.hadoopfs.enabled | true | 是否续期 Hadoop 文件系统委托令牌 | boolean | 1.4.0 |
kyuubi.credentials.hadoopfs.uris | 需要请求委托令牌的额外 Hadoop 文件系统 URI。承载 fs.defaultFS 的文件系统无需在此列出。 | seq | 1.4.0 | |
kyuubi.credentials.hive.enabled | true | 是否续期 Hive metastore 委托令牌 | boolean | 1.4.0 |
kyuubi.credentials.renewal.interval | PT1H | Kyuubi 续期单个用户委托令牌的频率 | duration | 1.4.0 |
kyuubi.credentials.renewal.retry.wait | PT1M | 获取新凭据失败后,重试前的等待时长。 | duration | 1.4.0 |
必需的安全配置
HDFS 和 Hive 获取委托令牌所需的配置如下:
| 键 | 含义 | 值 |
|---|---|---|
hadoop.security.authentication | 设置集群的认证方式 | kerberos |
hive.metastore.uris | 客户端用于访问 metastore 服务器的 URI | thrift://{metastoreHost}:{metastorePort}} |
hive.metastore.sasl.enabled | 若为 true,则 metastore 的 Thrift 接口将通过 SASL 进行安全保护。客户端必须使用 Kerberos 进行认证。 | true |
hive.metastore.kerberos.principal | metastore Thrift 服务器的服务主体。特殊字符串 _HOST 会被自动替换为正确的主机名。 | 例如 hive/_HOST@${realm} |
hive.metastore.kerberos.keytab.file | 包含 metastore Thrift 服务器服务主体的 Kerberos Keytab 文件的路径。 | 例如 /etc/security/keytabs/hive.service.keytab |
评论
登录后参与评论
KnowForge