gpt4 book ai didi

hadoop - HDFS 中 Hive 代理用户的最佳解决方案是什么?

转载 作者:可可西里 更新时间:2023-11-01 15:27:07 26 4
gpt4 key购买 nike

我对 HDFS 和 Hive 中的代理用户设置感到非常困惑。我在 hive-site.xml 中启用了 doAs 选项

<property>
<name>hive.server2.enable.doAs</name>
<value>true</value>
</property>

和 core-site.xml 中的代理用户

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

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

但这会导致:

2017-03-29 16:24:59,022 INFO org.apache.hadoop.ipc.Server: Connection from 172.16.0.239:60920 for protocol org.apache.hadoop.hdfs.protocol.ClientProtocol is unauthorized for user hive (auth:PROXY) via hive (auth:SIMPLE)
2017-03-29 16:24:59,023 INFO org.apache.hadoop.ipc.Server: Socket Reader #1 for port 9000: readAndProcess from client 172.16.0.239 threw exception [org.apache.hadoop.security.authorize.AuthorizationException: User: hive is not allowed to impersonate hive]

我没有像大多数例子那样将 proxyuser 设置为“hive”是因为 core-site.xml 被其他服务共享,我不喜欢每个服务访问 HDFS 作为 hive,但我还是试了一下现在 core-site.xml 看起来像:

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

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

我又吃了一次beeline,不过这次登录没问题,但是当命令运行的时候,yarn抛出异常:

Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. Permission denied: user=hive, access=WRITE, inode="/user/yarn/hive/.staging":hdfs:supergroup:drwxr-xr-x

代理用户“hive”已被“hdfs”拥有的暂存文件夹拒绝。我不认为将 777 提供给暂存文件夹是一个好主意,因为给予 HDFS 保护但向所有人打开该文件夹是没有意义的。所以我的问题是在 Hive、Hdfs 和 Yarn 之间设置权限的最佳解决方案是什么?

Hadoop 权限对我来说只是一场噩梦,请帮忙。

最佳答案

core-site.xml 中添加代理用户条目将允许名为 hive 的 super 用户从任何主机连接(因为值为 *)模拟属于任何组的用户(因为值为 *)。

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

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

这可以通过传递实际的主机名和组名来增加限制(引用 Superusers )。 super 用户 hive 对 FS 的访问权限将适用于模拟用户。

对于多用户 Hadoop 环境,最佳做法是为每个 super 用户创建专用目录,并配置相关服务以在其中存储文件。并为所有这些 super 用户创建一个组 supergroup,以便在需要时可以为文件提供组级别的访问权限。

hdfs-site.xml中添加这个属性来配置supergroup

<property>
<name>dfs.permissions.superusergroup</name>
<value>supergroup</value>
<description>The name of the group of super-users.</description>
</property>

关于hadoop - HDFS 中 Hive 代理用户的最佳解决方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43104865/

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