跳到主要内容

在 Hadoop 上

在安全 Hadoop 上运行 HivePlus 的快速入门指南[/docs/quick/hadoop/run-hadoop-kerberos/]包含在 Hadoop 上使用 Kerberos 认证的说明。本页提供额外的详细信息供您参考。

在安全的 Hadoop 上,配置键hadoop.security.authentication在 Yarn 的core-site.xml中被设置为kerberos

vi /etc/hadoop/conf/core-site.xml
<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value>
</property>

Keytab 文件

为了在使用 Kerberos 的安全 Hadoop 集群中运行 HivePlus,用户应该有权获取 Kerberos 票据并创建 keytab 文件。以下是常用命令:

kinit <your principal> # 获取新的 Kerberos 票据
ktutil # 创建 keytab 文件

为了运行 Metastore 和 HiveServer2,用户(或管理员)应该有权访问服务 keytab 文件。通常服务 keytab 文件与服务名称hive关联。服务 keytab 文件中的 principal 格式应为service/instance@REALM

例如,服务 keytab 文件中的 principal 可以是hive/node0@MR3.COM,其中hive是服务名称,node0是运行 Metastore 或 HiveServer2 的主机,MR3.COM是 realm,通常是主机的域名。

相比之下,普通 keytab 文件中的用户 principal 格式是user@REALM,没有实例字段。

配置 HivePlus

为了使用 Kerberos 认证,在启动 Metastore 和 HiveServer2 之前应该更新hadoop/env.sh

vi hadoop/env.sh
SECURE_MODE=true
HIVE_METASTORE_KERBEROS_PRINCIPAL=hive/_HOST@HADOOP
HIVE_METASTORE_KERBEROS_KEYTAB=/etc/security/keytabs/hive.service.keytab
HIVE_SERVER2_AUTHENTICATION=NONE
HIVE_SERVER2_KERBEROS_PRINCIPAL=hive/_HOST@HADOOP
HIVE_SERVER2_KERBEROS_KEYTAB=/home/hive/hive.keytab
USER_PRINCIPAL=hive@HADOOP
USER_KEYTAB=/home/hive/hive.keytab
TOKEN_RENEWAL_HDFS_ENABLED=true
  • SECURE_MODE指定集群是否使用 Kerberos 安全模式。
  • HIVE_METASTORE_KERBEROS_PRINCIPALHIVE_METASTORE_KERBEROS_KEYTAB指定 Metastore 的 principal 和 keytab 文件,对应hive-site.xml中的配置键hive.metastore.kerberos.principalhive.metastore.kerberos.keytab.file
  • HIVE_SERVER2_AUTHENTICATION指定 HiveServer2 的认证选项:NONE、NOSASL、KERBEROS、LDAP、PAM 和 CUSTOM。它对应hive-site.xml中的配置键hive.server2.authentication
  • HIVE_SERVER2_KERBEROS_PRINCIPALHIVE_SERVER2_KERBEROS_KEYTAB指定 HiveServer2 的 principal 和 keytab 文件,对应hive-site.xml中的配置键hive.server2.authentication.kerberos.principalhive.server2.authentication.kerberos.keytab
  • USER_PRINCIPALUSER_KEYTAB指定连接到 HiveServer2 的用户的 principal 和 keytab 文件。
  • TOKEN_RENEWAL_HDFS_ENABLED应设置为 true 以自动续订 HDFS 令牌。