我在HDP 2.6.2群集上安装/激活Hive 2.1.0时遇到了很多问题。但最后我得到了它的工作,所以我想分享与社区有关的步骤。我从不同的来源获得了这些步骤,我将在每一步下面提到。我的规格:
步骤1:启用Hive交互式查询
按照Hortonworks网站上的步骤操作。这包括启用YARN抢占和其他一些纱线设置。调整YARN后,您可以通过Ambari启用Hive Interactive Query。您还必须指定一个默认队列,该队列至少占总集群容量的20%。
第2步:与Kerberos相关的设置
确保将以下设置添加到Ambari中的自定义hiveserver2-交互式网站。其中$ {REALMNAME}是LDAP领域的名称。
hive.llap.zk.sm.keytab.file=/etc/security/keytabs/hive.llap.zk.sm.keytab
hive.llap.zk.sm.principal=hive/_HOST@${REALMNAME}
hive.llap.daemon.keytab.file=/etc/security/keytabs/hive.service.keytab
hive.llap.daemon.service.principal=hive/_HOST@${REALMNAME}
现在你必须在每个 YARN节点上放置这两个keytabs(基本上是相同的keytabs)。这可以手动完成或通过Ambari(Kerberos服务)完成。确保这些关键标记为chown hive:hadoop
,并且chmod 440
(读取组)。
注意:您还需要所有这些节点上的用户配置单元。
第3步:Zookeeper配置
可能是Zookeeper无法识别Hive,这会在尝试启动HiveServer2 Interactive时出现acl错误。为了解决这个问题,我通过zookeeper客户端主机添加了正确的hive acl节点。
su -
# First, authenticate with the hive keytab
kinit hive/'hostname' -kt /etc/security/keytabs/hive.service.keytab
# Second, connect to a zookeeper client on your cluster
/usr/hdp/current/zookeeper-server/bin/zkCli.sh -server ${ZOOKEEPER_CLIENT}
# Third, check the current status of the user-hive acl
getAcl /llap-sasl/user-hive
# Fourth, If this is not there create the following nodes
create /llap-sasl/user-hive "" sasl:hive:cdrwa,world:anyone:r
create /llap-sasl/user-hive/llap0 "" sasl:hive:cdrwa,world:anyone:r
create /llap-sasl/user-hive/llap0/workers "" sasl:hive:cdrwa,world:anyone:r
# Fifth, change the llap-sasl node to add the user hive
setAcl /llap-sasl sasl:hive:cdrwa,world:anyone:r
基本上,这适用于Kerberized环境。如果您遇到与ACL相关的错误,请返回Zookeeper设置并查看是否一切正常。如果您有与丢失的Hive用户相关的错误,您应该看到hive用户已正确添加到节点。如果您有与Kerberos(principal或keytabs)相关的错误,请查看keytabs是否位于具有正确权限的指定(YARN)节点上。