运行oozie ssh+java操作

m3eecexj  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(639)

如何运行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>

对于上面的解决方案,我需要将jar文件和属性文件复制到我的远程机器上。
有没有其他方法,我不需要复制jar文件到每台机器。与运行oozie时一样,oozie本身会将所需的jar文件复制到jar执行的位置
仅供参考,但远程计算机只安装在hadoop安装的集群中。

cs7cruho

cs7cruho1#

把你的jar放进去 lib 目录靠近您的 workflow.xml 在hdfs中,属性文件 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操作和文件分发的信息。

相关问题