2015-06-18 36 views
0

我试图从Java使用Oozie在Hadoop集群上启动一项作业。我在Hadoop 1上使用Oozie的经验非常有限,现在我很难在YARN上尝试同样的事情。Oozie on YARN - oozie不允许冒充hadoop

我因为不属于群集,所以当我想开始我的工作,我得到下面的异常机器:

E0501 : E0501: Could not perform authorization operation, User: oozie is not allowed to impersonate hadoop 

这是为什么和怎么办?

我读了一些有关这个需要设置

<property> 
    <name>hadoop.proxyuser.oozie.groups</name> 
    <value>users</value> 
</property> 

<property> 
    <name>hadoop.proxyuser.oozie.hosts</name> 
    <value>master</value> 
</property> 

它看起来,这是问题的核心站点属性?我应该联系负责群集的人员解决这个问题吗?

可能会有问题,因为我使用的是与Hadoop 1相同的YARN代码吗?应该改变什么?例如,我在workflow.xml中设置nameNode和jobTracker,如果jobTracker存在,因为现在有ResourceManager了?我已经设置了ResourceManager的地址,但留下了作为jobTracker的属性名称,这可能是错误吗?

也许我还要提到的是Ambari使用...

回答

0

你好,请更新核心-site.xml中

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

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

和JobTracker的地址是Resourcemananger地址,这将不会是这样。一旦更新core-site.xml文件,它将起作用。

+0

感谢您的回答,但不会让任何用户使用Oozie提交工作流程?我只是Oozie用户中的一员,我不认为集群管理员会允许这种设置......在从Java代码运行工作流程时,有没有一种方法可以模拟为不同的用户? – Marko

+0

您正尝试以“hadoop”用户提交作业!那么你可以将用户“hadoop”添加到用户“oozie”。这里“hadoop”是OOZIE_SERVER_HOSTNAME,所以我们必须添加给用户。 – karthik

+0

所以你说在配置中应该是 hadoop.proxyuser.hadoop.hosts *? 是否有可能从java代码执行-doAs?要指定哪些属性? – Marko

0

原因: 此类错误的原因是 - 您作为hadoop用户运行oozie服务器,但您在core-site.xml文件中将oozie定义为代理用户。

解决方案:

变化Oozie的安装目录的所有权Oozie的用户和运行Oozie的服务器作为Oozie的用户和问题将得到解决。