• 使用hue+oozi构建任务调度系统


    oozie调度系统调研

    1. 关于oozie的简单说明

    1. oozie应用程序目录结构说明:

      一个完整的oozie应用程序一般情况下至少包含三个文件及目录:job.properties、workflow.xml、lib(lib表示为用来存放程序运行需要的jar包,非必需)

    2. flow nodes的六种类型:

      start, end, decision, fork, join, kill

    3. action-node的部分类型:

      Hadoop map-reduce, Hadoop file system, Pig, SSH, HTTP, eMail and Oozie sub-workflow,
      Oozie可以自定义扩展任务类型。

    2. Oozie简介

    • WorkFlow:工作流,控制工作流的开始和结束过程,以及工作流Job的执行路径,并提供一种机制来控制工作流执行路径(比如:Decision、Fork以及Join节点等)

    • Coordinator:调度器,多个WorkFlow可以组成一个Coordinator,可以把前几个WorkFlow的输出作为后一个WorkFlow的输入,当然也可以定义WorkFlow的触发条件,来做定时触发.

    • Bundle:控制一个或多个Coordinator应用

    3. 一个标准的工作流的示例

    工作流实例图

    hPDL流程的定义:

    <workflow-app name='wordcount-wf' xmlns="uri:oozie:workflow:0.1">
    <start to='wordcount'/>
    <action name='wordcount'>
        <map-reduce>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>mapred.mapper.class</name>
                    <value>org.myorg.WordCount.Map</value>
                </property>
                <property>
                    <name>mapred.reducer.class</name>
                    <value>org.myorg.WordCount.Reduce</value>
                </property>
                <property>
                    <name>mapred.input.dir</name>
                    <value>${inputDir}</value>
                </property>
                <property>
                    <name>mapred.output.dir</name>
                    <value>${outputDir}</value>
                </property>
            </configuration>
        </map-reduce>
        <ok to='end'/>
        <error to='end'/>
    </action>
    <kill name='kill'>
        <message>Something went wrong: ${wf:errorCode('wordcount')}</message>
    </kill/>
    <end name='end'/>
    </workflow-app>
    

    4.在hue中创建一个workflow。

    在hue中可以通过拖拽的方式进行workflow.xml的编辑:

    ozzie任务的编辑方式

    hue的任务管理页面:
    ozzie的任务管理页面

    hue编辑的workflow.xml保存在hdf上的/user/oozie/workspaces/目录下:
    /user/oozie/workspaces/hue-oozie-1476263861.83

    [fuxin.zhao@db-hadoop-client02 ~]$ hadoop fs -ls /user/oozie/workspaces/hue-oozie-1476263861.83
    Found 3 items
    -rw-r--r--   3 hue hadoop        114 2016-10-12 17:33 /user/oozie/workspaces/hue-oozie-1476263861.83/job.properties
    drwxr-xr-x   - hue hadoop          0 2016-10-12 17:17 /user/oozie/workspaces/hue-oozie-1476263861.83/lib
    -rw-r--r--   3 hue hadoop       1277 2016-10-12 17:33 /user/oozie/workspaces/hue-oozie-1476263861.83/workflow.xml
    

    自动生成的workflow文件内容如下:workflow的大体流程已经自动生成了,自己可以根据需要进行修改。

    <workflow-app name="job-test-workflow" xmlns="uri:oozie:workflow:0.5">
    <start to="shell-f60d"/>
    <kill name="Kill">
        <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <action name="shell-f60d">
        <shell xmlns="uri:oozie:shell-action:0.1">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <exec>/user/hue/aa.sh</exec>
              <argument>args1</argument>
              <argument>args2</argument>
              <argument>args2</argument>
            <file>/user/hue/avro-1.7.4.jar#avro-1.7.4.jar</file>
              <capture-output/>
        </shell>
        <ok to="shell-dfe8"/>
        <error to="Kill"/>
    </action>
    <action name="shell-dfe8">
        <shell xmlns="uri:oozie:shell-action:0.1">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <exec>/user/hue/aa.sh</exec>
              <capture-output/>
        </shell>
        <ok to="kill-ece6"/>
        <error to="Kill"/>
    </action>
    <kill name="kill-ece6">
        <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name="End"/>
    </workflow-app>
    

    5.提交oozie命令

    1 .提交oozie任务
    oozie job -oozie http://localhost:11000/oozie/ -config /root/tvreport-workflow/tvreport-daily-wf/job.properties  -run
    2 .提交kill 任务
    oozie job -oozie http://localhost:11000/oozie -kill 0031861-140812111151262-oozie-root-W
    
    3.查看job的日志信息
    bin/oozie job -oozie http://hadoop-1:11000/oozie -log 0000001-160702224410648-oozie-beif-W
    

    》》》未完待续。

  • 相关阅读:
    SQL Server CHARINDEX和PATINDEX详解
    Delphi7控件包详解 (转)
    经历一次人际关系危机总结,改进
    2008年5月份目标和计划
    God bless 贝贝!
    开始新的生活~~~
    一切安好~~~
    Hadoop : “Moving Computation is Cheaper than Moving Data”
    改论文,不轻言放弃,力求准确,简洁
    杜绝拖拖拉拉《明日歌》
  • 原文地址:https://www.cnblogs.com/honeybee/p/5954064.html
Copyright © 2020-2023  润新知