gpt4 book ai didi

hadoop - 使用 Kerberos 的 Hive 远程 Metastore

转载 作者:可可西里 更新时间:2023-11-01 14:59:14 28 4
gpt4 key购买 nike

我是 Hive 的新手,正在尝试以相对安全的方式为测试环境设置它。我想使用远程元存储,以便 MR 作业可以访问数据库。我似乎几乎可以正常工作,但是当拥有凭据的用户尝试创建数据库时,我得到:

hive> show databases;
OK
default
hive> create database testdb;
FAILED: Error in metadata: MetaException(message:Got exception: org.apache.hadoop.ipc.RemoteException User: hdfs/hadoopserver.sub.dom.com@SUB.DOM.COM is not allowed to impersonate myuserid@SUB.DOM.COM)
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

我可以正常运行“显示数据库”。我以 hdfs/hadoopserver.sub.dom.com@SUB.DOM.COM 作为主体以 hdfs 运行“hive --service metastore”。我在同一个盒子上以“myuserid”的身份运行配置单元。我不知道它是否相关,但如果我尝试从另一个系统运行配置单元,我会收到 GSS 启动错误,除非我为配置单元使用相同的主体 (hdfs/hadoopserver.sub.dom.com@SUB.DOM.COM) .metastore.kerberos.principal。这是预期的吗?

当我尝试用谷歌搜索时,我看到了类似的问题,但他们的消息是关于无法模拟的,只显示了单个部分的用户名,而对我来说,它显示的是领域。我尝试使用 auth_to_local 属性,但没有帮助。 Map Reduce 和 HDFS 操作运行良好。

在 core-site.xml 我有:

<property>
<name>hadoop.proxyuser.hdfs.hosts</name>
<value>*</value>
</property>

<property>
<name>hadoop.proxyuser.hdfs.groups</name>
<value>*</value>
</property>

在 hive-site.xml 我有:

<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/metastore</value>
<description>the URL of the MySQL database</description>
</property>

<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>

<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
</property>

<property>
<name>datanucleus.autoCreateSchema</name>
<value>false</value>
</property>

<property>
<name>datanucleus.fixedDatastore</name>
<value>true</value>
</property>

<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoopserver.sub.dom.com:9083</value>
</property>

<property>
<name>hive.security.authorization.enabled</name>
<value>true</value>
</property>

<property>
<name>hive.metastore.sasl.enabled</name>
<value>true</value>
</property>

<property>
<name>hive.metastore.kerberos.keytab.file</name>
<value>/etc/hadoop/hdfs.keytab</value>
</property>

<property>
<name>hive.metastore.kerberos.principal</name>
<value>hdfs/hadoopserver.sub.dom.com@SUB.DOM.COM</value>
</property>

<property>
<name>hive.metastore.execute.setugi</name>
<value>true</value>
</property>

有什么想法吗?

最佳答案

以用户“hive”(hive/domain@Realm) 运行 hive metastore,然后将 hadoop.proxyuser.hive.hosts 和 hadoop.proxyuser.hive.groups 配置为“*”。这行得通。

关于hadoop - 使用 Kerberos 的 Hive 远程 Metastore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18517656/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com