YARN 上的 Oozie - 不允许 oozie 冒充 hadoop

Oozie on YARN - oozie is not allowed to impersonate hadoop

我正在尝试使用 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,jobTracker 是否应该存在,因为现在有 ResourceManager?我已经设置了 ResourceManager 的地址,但将 属性 名称保留为 jobTracker,这可能是错误吗?

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

嗨,请更新核心-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 服务器作为 hadoop 用户,但您在 core-site.xml 文件中将 oozie 定义为代理用户。

解决方案:

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