1

我正在使用 Cloudera 的 Hadoop 的 CDH 发行版,并且最近从 CDH3 升级到了 CDH4。

在 CDH3 中,我曾经能够将用户名添加到hadoop-policy.xml中:

security.client.protocol.acl

security.job.submission.protocol.acl

然后运行:

hadoop dfsadmin -refreshServiceAcl

hadoop mradmin -refreshServiceAcl

而且,瞧,用户可以访问 HDFS 并运行 MR 作业。

现在添加自升级到 CDH4 以来的第一个用户,看起来有些事情发生了变化。

仍然像上面一样在hadoop-policy.xml中添加用户。对于 HDFS 访问,我运行:

hdfs dfsadmin -refreshServiceAcl

但是,我无法弄清楚什么是合适的让用户访问“security.job.submission.protocol.acl”。当我运行时:

hadoop mradmin -refreshServiceAcl

我得到:

不推荐使用:不推荐使用此脚本执行 mapred 命令。而是使用 mapred 命令。refreshServiceAcl:java.io.IOException:未知协议:org.apache.hadoop.security.authorize.RefreshAuthorizationPolicyProtocol

当然,用户会得到:

org.apache.hadoop.security.authorize.AuthorizationException:用户用户名 (auth:SIMPLE) 未授权协议接口 org.apache.hadoop.mapred.JobSubmissionProtocol,预期客户端 Kerberos 主体为空

我没有安装 YARN/MRv2,“/usr/lib/hadoop-0.20-mapreduce/bin/mapred”只是一个指向“/usr/lib/hadoop-0.20-mapreduce/bin/hadoop”的软链接。

知道如何更新 JobSubmissionProtocol 以接受新用户吗?

4

2 回答 2

2

hadoop-policy.xml目录中的文件hadoop_home/conf包含所有与安全相关的设置。我相信您需要在属性设置中添加用户名。见下文:

<property>
<name>security.job.submission.protocol.acl</name>
<value>*</value>
<description>
ACL for jobsubmissionProtocol, used by job clients to communicate with the job tracker 
for job submission, kill etc. The ACL is a comma separated list of user and group name. 
The user and grouplist is separated by a blank. For e.g., "majeed, john, developers,testers". 
A special value of "*" means all users are allowed. </description>
</property>
于 2013-12-14T06:57:52.873 回答
1

我认为 ...

MapReducePolicyProvider.java使用
导入 org.apache.hadoop.security.authorize.RefreshAuthorizationPolicyProtocol;

MRAdmin.java使用
import org.apache.hadoop.mr1security.authorize.RefreshAuthorizationPolicyProtocol;

这种不匹配的错误原因。

但我不知道为什么为每个文件使用不同的类。

于 2014-02-25T13:19:19.670 回答