如何 运行 Java 使用 hue 界面作为 oozie 工作流程的操作

How to run Java Action as oozie workflow with hue interface

我创建了一个接受 args[0] = Hadoop 的 java main 方法的测试可执行 jar。 java 程序接收此参数并将以下字符串写入文本文件;

"currentTimeStamp /t Welcome to Hadoop!! /n"10万次。

我使用 hue 界面为 java 操作创建了一个 oozie-workflow。请参阅下面的 workflow.xml。然而,oozie-workflow 执行成功,但操作不会创建或写入文本文件。文本文件路径为 /user/ruben123/test.txt。当我使用命令 java -jar TestRunner.jar "Hadoop" 运行 本地 unix 服务器中的 jar 文件时,它会正确执行并产生所需的输出。

我有一个单节点伪集群 运行ning HDP 2.2 作为 Hortonworks 提供的 VM。

<workflow-app name="TestRunner" xmlns="uri:oozie:workflow:0.4">
    <start to="TestRunner"/>
    <action name="TestRunner">
        <java>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <main-class>org.test.TestRunner</main-class>
            <arg>&quot;Hadoop&quot;</arg>
            <capture-output/>
        </java>
        <ok to="end"/>
        <error to="kill"/>
    </action>
    <kill name="kill">
        <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name="end"/>
</workflow-app>

如果您使用 HUE 版本 3.8 或 3.9,"Workflows" 选项卡下有一个选项。您浏览此菜单 "Workflows->Editors->Workflows"。

然后您会在右上角看到一个选项 "Create"。单击该按钮后,将出现不同工作流类型的列表(它们都是可拖动的)。拖动 "Java" 工作流程和休息应该很容易。