运行Oozie SSH + Java Action

时间:2014-07-14 12:13:51

标签: hadoop oozie

如何运行 SSH + JAVA操作

我需要对我的远程计算机运行SSH操作。在我的远程机器中我有一个jar文件+属性文件必须执行。 如何为此编写工作流程?

在这种情况下,是否将jar文件从oozie lib文件夹复制到远程计算机。如果是这样,将在哪个地方复制 / home / user / oozie-oozi /

我写了一个如下工作流程

   <action name="ssh-FileValidation">
    <ssh xmlns="uri:oozie:ssh-action:0.1">
         <host>user@myremotenode-ip</host>
            <command>/home/user/testscript.sh</command>
    </ssh>
    <ok to="mr-job"/>
    <error to="fail"/>
</action>

对于Above解决方案,我需要将jar文件和Properties文件复制到我的远程机器上。

还有其他方法,我不需要将jar文件复制到每台机器。在运行oozie时,oozie本身会将所需的jar文件复制到jar将被执行的位置

仅供参考,但远程机器只安装在hadoop安装集群中。

1 个答案:

答案 0 :(得分:0)

将您的jar放入HDFS中lib附近的workflow.xml目录,以及workflow.xml附近的属性文件中:

/user/syed/super-oozie-app/
  workflow.xml
  super-oozie-app.properties
  lib/
    super-oozie-app.jar

然后您可以按如下方式定义Java操作(假设com.example.SuperOozieAppAction类位于super-oozie-app.jar并且它具有您要运行的main方法):

<action name="super-oozie-app-action">
    <java>
        ...
        <main-class>com.example.SuperOozieAppAction</main-class>
        <file>super-oozie-app.properties#super-oozie-app.properties</file>
    </java>
    ...
</action>

这样Oozie就能解决您的文件分发问题。 SuperOozieAppAction将被启动,super-oozie-app.properties将位于其当前目录中。

详细了解java操作here以及文件分发here