Hadoop 运行Oozie SSH+Java操作
如何运行SSH+JAVA操作 我需要对我的远程计算机运行SSH操作。在我的远程机器中,我有一个jar文件+必须执行的属性文件。 如何为此编写工作流 在这种情况下,jar文件是否将从oozie lib文件夹复制到远程计算机。如果是,将在哪个位置复制/home/user/oozie-oozi/ 我写了一个如下的工作流程Hadoop 运行Oozie SSH+Java操作,hadoop,oozie,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">
<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安装的集群中 将jar放在HDFS中workflow.xml附近的lib目录中,并将属性文件放在workflow.xml附近:
然后,假设com.example.superozieappaction类位于super-oozie-app.jar中,并且它有您想要运行的main方法,您可以如下定义Java操作:
<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为您解决了文件分发问题。SuperozieAppAction将启动,super-oozie-app.properties将位于其当前目录中
阅读有关java操作和文件分发的更多信息。如何使用SSH+java?在这种情况下不需要使用SSH。Oozie和HDFS为您处理文件分发。我需要在特定机器上运行Java操作,那么您如何定义它?实际上,Oozie将Java操作作为单个映射器MR作业运行,因此它不能保证映射器将在特定机器上启动。为什么需要它?我正在尝试将一些文件从指定的计算机复制到hadoop群集?
<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>