在我的hadoop cluser上,我设计了一个带有以下属性的oozie工作流程。
<global>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>myQueue</value>
</property>
<property>
<name>oozie.launcher.mapred.job.queue.name</name>
<value>oozie-launcher</value>
</property>
<property>
<name>tez.queue.name</name>
<value>myQueue</value>
</property>
<property>
<name>oozie.job.acl</name>
<value>*</value>
</property>
<property>
<name>mapreduce.job.acl-modify-job</name>
<value>*</value>
</property>
</configuration>
我关心的是属性oozie.job.acl
,它应该提供一个允许每个人都杀死我的工作流程的acl。
但是当我尝试使用与提交者不同的用户杀死它时,oozie会返回错误E0508
oozie job -oozie http://localhost:11000/oozie -kill 0000000-151020102420689-oozie-oozi-W
Error: E0508 : E0508: User [user] not authorized for WF job [0000000-151020102420689-oozie-oozi-W]
我在群集的配置中遗漏了什么?我正在使用oozie 4.1.0。
答案 0 :(得分:1)
我终于通过查看Oozie源代码找到了我的问题的答案,并将发布解决方案。
事实上Oozie并不认识通配符&#39; *&#39;,您需要使用以下格式USER1,USER2,USER3
传递完整的acl,似乎格式{{1}因为Oozie根据USER1,USER2 GROUP1,GROUP2
字符拆分了acl字符串,因此在错误OOZIE-228中显示的内容并不起作用。为了确保处理得当,,
需要在job.properties中,而不是在workflow.xml中。
希望这能为我遇到同样麻烦的人节省时间。
答案 1 :(得分:0)
为此,要执行诸如kill / suspend等的任何操作,我们需要为我们的用户ID生成身份验证令牌。 首先,我们需要使用以下命令从文件中清除现有令牌,然后对给定的工作流ID执行暂停/杀死等操作:
rm .oozie-auth-token
来自Apache Oozie文档:
成功执行身份验证后,接收到 身份验证令牌缓存在用户的主目录中 具有所有者专有权限的.oozie-auth-token文件。后续的 请求在有效时重复使用缓存的令牌。
有关更多详细信息,请参见Apache Oozie文档的链接(请参阅“身份验证”部分):Official Documentation