Oozie没有照顾acl

时间:2015-10-20 09:28:50

标签: hadoop acl kerberos oozie

在我的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。

2 个答案:

答案 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