【发布时间】:2017-03-31 02:57:13
【问题描述】:
我对 HDFS 和 Hive 中的 proxyuser 设置感到非常困惑。我在 hive-site.xml 中启用了 doAs 选项
<property>
<name>hive.server2.enable.doAs</name>
<value>true</value>
</property>
和core-site.xml中的proxyuser
<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被其他服务共享,我不喜欢每个服务都像hive一样访问HDFS,但我还是试了一下现在 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 权限对我来说只是一场噩梦,请帮助。
【问题讨论】:
-
@BruceWayne 你没有回答我的问题。我讨厌 777,我能做的就是将 "/user/yarn/hive" 的所有者设置为 "hive",但是现在历史服务器有问题,当用户 "yarn" 试图访问 "/user/yarn/history /temp/hive”来读取日志,但它是由“hive”拥有的,我又得到了“Permission denied”。
-
@franklinsijo 该文件夹以前不存在,“hive”尝试创建它但遇到权限问题,因为 /user/yarn 归“yarn”所有。但是,我手动创建它并将所有者分配给“hive”,但现在问题发生在“yarn”拥有的历史服务器上,并试图访问由“hive”创建的日志文件。
-
不,hive的仓库在“/user/hive/warehouse”下,归hive所有。
-
@franklinsijo 是的,staging-dir 是在 /user/yarn 下的 mapred-site.xml 中设置的,我认为这是合理的,因为它被设计为由 yarn 管理。
-
@franklinsijo,这可能是个好主意,但仍然不能解决我的问题。即使我们能够绕过文件夹限制,历史服务器仍然无法访问由 hive 创建的 .jhist。
标签: hadoop permissions hive hdfs hadoop-yarn