Oozie ssh动作

时间:2015-06-22 18:29:28

标签: hadoop ssh oozie

我正在尝试通过Oozie工作流程运行ssh操作,

<action name="ssh-action">
    <ssh xmlns="uri:oozie:ssh-action:0.1">
        <host>Server name.net<host>
        <command>echo</command>

    </ssh>
    <ok to="endjob"/>
    <error to="endjob"/>
</action>

我将工作流存储到hdfs中,但是当尝试从oozie服务器连接服务器name.net时,我收到以下错误消息,请任何人请帮忙解决此问题,

错误: FNF:/var/tmp/oozie/oozie-dshm46789086433.dir/ssh/ssh.base.sh它看起来与oozie配置有关,任何人都可以帮忙解决这个问题。我的目标是在Oozie服务器上运行特定服务器上的脚本。

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

<action name="shell-action">
        <shell xmlns="uri:oozie:shell-action:0.1">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                  <name>mapred.job.queue.name</name>
                  <value>${queueName}</value>
                </property>
            </configuration>
            <exec>example.sh</exec>
        </shell>
        <ok to="end" />
        <error to="kill" />
</action>

答案 1 :(得分:0)

尝试类似的事情-

第1步,如下所示创建workflow.xml

<?xml version="1.0"?>
<workflow-app xmlns="uri:oozie:workflow:0.3" name="sshAction">
  <start to="MySSHAction"/>
  <action name="MySSHAction">
    <ssh xmlns="uri:oozie:ssh-action:0.1">
      <host>${sshHost}</host>
      <command>${shellScriptPath}</command>
      <capture-output/>
    </ssh>
    <ok to="end"/>
    <error to="fail"/>
  </action>  
  <kill name="fail">
    <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]. </message>
  </kill>
  <end name="end"/>
</workflow-app>

第2步-配置job.properties

nameNode=hdfs://<namenode-machine>:8020
jobTracker=<resource-manager>:8050
queueName=default
shellScriptPath=/opt/example.sh
sshHost=oozie@localhost

注意-sshHost条目应类似于@,并确保从oozie @ oozie-host到@

应该具有无密钥访问权限

第3步,编写示例example.sh脚本

#!/bin/bash
echo "Hello Oozie"