zoukankan      html  css  js  c++  java
  • oozie调用java实例------shell action

    Oozie提供了一个方便的方式来运行任何命令。这可能是Unix命令,Perl或Python脚本,甚至java程序都可以通过Unix shell调用。shell命令运行在任意的Hadoop集群节点上,并且运行在结点上的命令必须保证可在本地可用。

    本地提交: 

      格式:java   -cp   全类名(包名.类名)   -jar   jar包名字

      实例如下:

         java -cp test1.OzzieTest1 -jar test.jar          

        运行结果:

    shell action 语法:

    <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.3">
        ...
        <action name="[NODE-NAME]">
            <shell xmlns="uri:oozie:shell-action:0.1">
                <job-tracker>[JOB-TRACKER]</job-tracker>
                <name-node>[NAME-NODE]</name-node>
                <prepare>
                   <delete path="[PATH]"/>
                   ...
                   <mkdir path="[PATH]"/>
                   ...
                </prepare>
                <job-xml>[SHELL SETTINGS FILE]</job-xml>
                <configuration>
                    <property>
                        <name>[PROPERTY-NAME]</name>
                        <value>[PROPERTY-VALUE]</value>
                    </property>
                    ...
                </configuration>
                <exec>[SHELL-COMMAND]</exec>
                <argument>[ARG-VALUE]</argument>
                    ...
                <argument>[ARG-VALUE]</argument>
                <env-var>[VAR1=VALUE1]</env-var>
                   ...
                <env-var>[VARN=VALUEN]</env-var>
                <file>[FILE-PATH]</file>
                ...
                <archive>[FILE-PATH]</archive>
                ...
                <capture-output/>
            </shell>
            <ok to="[NODE-NAME]"/>
            <error to="[NODE-NAME]"/>
        </action>
        ...
    </workflow-app>

    shell action的组成元素如下所示:

       • job-tracker (required)

      • name-node (required)

      • prepare     ---执行删除文件或者创建目录的操作

      • job-xml     ---指定一个存在的配置文件

      • configuration  ---将里面配置的参数传递给任务

      • exec (required)  ---要执行的shell命令

      • argument  ---元素指定要传递给shell脚本的参数

      • env-var  ---传递给shell命令的环境变量

      • file  

      • archive

      • capture-outpu    ---可以捕获输出

    若想调用java类有三个是必需的:1.workflow.xml(名字不可改)  2.job.properties(名字可改)  3.jar包

    示例如下:

    1.workflow.xml---放到hdfs目录中

    <workflow-app name="workflow-java-shell" xmlns="uri:oozie:workflow:0.5">
        <start to="java-4f48"/>
        <action name="java-4f48">
            <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>java</exec>
                <argument>-cp</argument>
                <argument>test1.OzzieTest1</argument>
                <argument>-jar</argument>
                <argument>test.jar</argument>
            </shell>
            <ok to="End"/>
            <error to="Kill"/>
        </action>
       <kill name="Kill">
            <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
        </kill>   
      <end name="End"/>
    </workflow-app>

    2. job.properties  ---放本地即可

    nameNode=hdfs://hgdp-001:8020
    jobTracker=hgdp-001:8032
    queueName=default
    hdfspath=user/root
    examplesRoot=ocn-itv-oozie
    oozie.use.system.libpath=True
    oozie.libpath=${nameNode}/${hdfspath}/${examplesRoot}/lib/
    oozie.wf.application.path=${nameNode}/${hdfspath}/${examplesRoot}/wf/wf5/

    3.oozie运行:

      启动任务:oozie job -config job.properties -run -oozie http://xxxx(地址):11000/oozie

    运行结果如下图所示:

  • 相关阅读:
    yii之behaviors
    查看windows系统信息
    idm chrome扩展被阻止解决办法
    音乐乐理基础
    bootstrap4
    七牛上传整合CI
    提升上传速度
    卡漫绘图
    指针的操作
    定语从句八个易混淆
  • 原文地址:https://www.cnblogs.com/jjSmileEveryDay/p/7453988.html
Copyright © 2011-2022 走看看