Oozie 不关心 acl

Oozie doesn't take care of acl

在我的 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 return 一个错误 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.

我终于通过查看 Oozie 源代码找到了我的问题的答案,并将 post 解决方案。

事实上 Oozie 不识别通配符 '*',您需要使用以下格式 USER1,USER2,USER3 传递完整的 acl,而且似乎错误中显示的格式 USER1,USER2 GROUP1,GROUP2 OOZIE-228 不起作用,因为 Oozie 根据 , 字符拆分 acl 字符串。为了确保它得到正确处理,oozie.job.acl 需要在 job.properties 中而不是在 workflow.xml.

希望这能为和我有同样问题的人节省时间。

为此,要执行 kill/suspend 等任何操作,我们需要为我们的用户 ID 生成身份验证令牌。 首先,我们需要使用以下命令从文件中清除现有令牌,然后对给定的工作流 ID 执行 suspend/kill 等操作:

rm .oozie-auth-token

来自 Apache Oozie 文档:

Once authentication is performed successfully the received authentication token is cached in the user home directory in the .oozie-auth-token file with owner-only permissions. Subsequent requests reuse the cached token while valid.

有关更多详细信息,请参阅 Apache Oozie 文档的 link(请参阅身份验证部分):Official Documentation