【问题标题】:Running Oozie SSH + Java Action运行 Oozie SSH + Java 操作
【发布时间】:2014-07-14 12:13:51
【问题描述】:

如何运行 SSH+JAVA Action ? .

我需要对我的远程机器运行 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>

对于上述解决方案,我需要将 jar 文件和属性文件复制到我的远程计算机。

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

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

【问题讨论】:

    标签: hadoop oozie


    【解决方案1】:

    将您的 jar 放入 HDFS 中 workflow.xml 附近的 lib 目录,以及 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的信息。

    【讨论】:

    • SSH + Java 怎么可能?
    • 在这种情况下您不需要使用 SSH。 Oozie 和 HDFS 为您处理文件分发。
    • 我需要在特定机器上运行 Java 操作那么你如何定义呢?
    • 实际上 Oozie 将 Java 操作作为单映射器 MR 作业运行,因此不能保证映射器将在特定机器上启动。为什么需要它?
    • 我正在尝试将一些文件从指定机器复制到hadoop集群?
    猜你喜欢
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    相关资源
    最近更新 更多