【问题标题】:Oozie on YARN - oozie is not allowed to impersonate hadoopYARN 上的 Oozie - 不允许 oozie 模拟 hadoop
【发布时间】:2015-06-18 21:47:17
【问题描述】:

我正在尝试使用 Java 中的 Oozie 在 Hadoop 集群上开始工作。我在 Hadoop 1 上使用 Oozie 的经验非常有限,现在我正在努力在 YARN 上尝试同样的事情。

我得到了一台不属于集群的机器,所以当我尝试开始我的工作时,我得到了以下异常:

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>

这似乎是问题所在?我应该联系负责集群的人员来解决这个问题吗?

是否会因为我在 YARN 中使用与 Hadoop 1 相同的代码而出现问题?应该改变什么吗?比如我在workflow.xml中设置了nameNode和jobTracker,既然现在有ResourceManager,jobTracker应该存在吗?我设置了ResourceManager的地址,但是属性名却是jobTracker,会不会是报错?

也许我还应该提到使用了 Ambari...

【问题讨论】:

    标签: hadoop hadoop-yarn oozie ambari


    【解决方案1】:

    您好,请更新 core-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 文件,它就会工作。

    【讨论】:

    • 感谢您的回答,但这不会让任何用户使用 Oozie 提交工作流吗?我只是 Oozie 用户之一,我认为集群管理员不会允许这种设置...在从 java 代码运行工作流时,有没有办法冒充其他用户?
    • 您正在尝试在“hadoop”用户中提交作业!然后您可以将用户“hadoop”添加到用户“oozie”。这里的“hadoop”是OOZIE_SERVER_HOSTNAME,所以我们必须添加到用户。
    • 所以你是说配置中应该是hadoop.proxyuser.hadoop.hosts*?是否可以从 java 代码执行 -doAs?要指定什么属性?
    • 是的,因为 hadoop 是提交 oozie 作业的用户。另一种解决方案是在 %oozie_home%/bin/oozie.sh(bat) 中将 JAVA_PROPERTY 设置为 -Duser.name=hadoop。对于 -doAS,我们可以将 hadoop 用户添加到组 oozie。
    【解决方案2】:

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

    解决办法:

    将oozie安装目录的所有权改为oozie用户,并以oozie用户运行oozie服务器即可解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      相关资源
      最近更新 更多