Kerberos是一种基于对称密钥技术的身份认证协议,可以为其他服务提供身份认证功能。本文为您介绍Hive在开启Kerberos的情况下,如何访问Hive Client。
前提条件
已创建集群,且在软件配置页面的高级设置区域中,打开了Kerberos身份认证开关。创建集群详情请参见创建集群。
操作步骤
使用SSH方式登录集群,详情请参见登录集群。
执行以下命令,进入Kerberos的admin.local工具。
如果您是使用root用户,登录KDC(Kerberos的服务端程序)所在的master-1-1节点,则可以执行以下命令,直接进入admin工具。
kadmin.local
当返回信息中包含如下信息时,表示已进入admin.local命令行。
Authenticating as principal hadoop/admin@EMR.C-85D4B8D74296****.COM with password. kadmin.local:
如果您登录的是其他节点或者使用Gateway时,则可以通过填写admin-user和admin-password进入admin工具。
kadmin -p <admin-user> -w <admin-password>
说明如果您使用的是EMR自建的KDC,则参数:
<admin-user>
:固定值为root/admin
。<admin-password>
:您可以在E-MapReduce控制台,Kerberos服务的配置页面,获取admin_pwd的参数值。
当返回信息中包含如下信息时,表示已进入admin命令行。
Authenticating as principal root/admin with password. kadmin:
执行以下命令,创建用户名为test的Principal。
本文示例密码设置为123456。
addprinc -pw 123456 test
当返回信息中包含如下信息时,表示创建成功。
Principal "test@EMR.C-85D4B8D74296****.COM" created.
说明需要记录用户名和密码,在创建TGT(Ticket Granting Ticket)时会用到。
执行
quit
命令,可以退出Kerberos的admin.local工具。登录您需要运行Hive Client的机器,执行以下命令,创建并切换至test用户。
useradd test su test
执行以下命令,创建TGT。
kinit
回车后输入test用户的密码,本文示例密码为123456。
访问Hive Client。
方式一:直接使用
hive
命令访问Hive Clienthive
方式二:使用Beeline访问Hive Client
beeline -u "jdbc:hive2://master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com:10000/;principal=hive/_HOST@EMR.c-56187feb57f0****.COM"
其中,以下信息需要您按照实际情况替换:
master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com
:完整的主机名(包括域名)。您可以通过在HiveServer2服务的节点(通常是master-1-1节点)执行hostname -f
命令获取。EMR.c-56187feb57f0****.COM
:realm名称。您可以在EMR控制台Kerberos服务的配置页签,搜索并查看realm参数,参数值即为该realm名称。
相关文档
创建Principal的官方文档,请参见Database administration。
创建TGT的官方文档,请参见Kinit。