zoukankan      html  css  js  c++  java
  • 068 Oozie任务调度框架

    一:概述

    1.大数据协作框架

      

    2.Hadoop的任务调度

      这个是常见的任务调度框架。

      

    3.azkaban

      

    4..Oozie的三大功能

      Oozie Workflow jobs :工作流任务,可以生成DAG图

      Oozie Coordinator jobs:可以定时调度

      Oozie Bundle:多个coordinator的集合,或者多个workflow的集合

      

    5.Oozie的架构

      控制流节点

        起始,分支,并发,汇合,结束

      动作节点action

        执行的job。例如,mapreduce action,hive action ,shell action

      

    6.Oozie的结构实现

      oozie server:可以实现界面化,同时,监控hadoop。

      

    7.oozie的细节架构

      

    二:安装部署

    1.上传

      官网的说法:

        在quick start中。

      

      上传:

      

    2.解压

      

    3.配置Hadoop代理core-site.xml

      官网:

      

      配置:

      

    4.启动Hadoop集群

    5.解压hadooplib

      官网说法:

        

      将会生成:oozie-4.0.0-cdh5.3.6

       

    6.生成

      进入oozie-4.0.0-cdh5.3.6,果然发现有官网说说的hadooplibs。

      

    7.创建libext文件

      官网上的说法:

      

      操作:

      

    8.拷贝hadooplib的jar包到libext中

      只拷贝jar。

      

    9.拷贝js包到libext中

      js的作用:

      

      操作:

      

    10.创建sharelib库:

      HDFS,用于运行所有job的依赖

      官网上的步骤:

      

      命令:

        bin/oozie-setup.sh sharelib create -fs hdfs://hadoop-senior02.ibeifeng.com:8020 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz

      

       HDFS::

      

    11.打包

      bin/oozie-setup.sh prepare-war

      

    12.初始化数据库

      

      

     13.启动

      多了一个Bootstrap进程。

      

      回来补充截图:

       

    14.web端窗口

      端口:11000

      

    三:运行官网的任务流

    1.官网

      

    2.解压家目录下的oozie-examples.tar.gz

      官网的设置:

      

      解压:

      tar -zxvf oozie-examples.tar.gz

      将会生成examples

    3.进入examples,找到将要运行的mapreduce项目

      job.properties:mapreduce运行需要的配置项,指定workflow的地址,申明相关变量

      workflow.xml:实际运行的workflow

      

    4.修改job.properties配置项

      注意的是:jobTracker是hadoop1的,现在使用的是resourcemanager,内部端口是8032.

           oozie.wf.application.path的路径是HDFS上的路径,指定了workflow的地址。

      

      位置:

      

    5.修改oozie.site文件、

      因为在找包的时候,会找本地的配置环境。

      *=不能删除。

      

    6.启动hadoop,并上传在家目录下examples项目

      bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/examples examples

      

     7.启动

      bin/oozie  job -oozie http://linux-hadoop3.ibeifeng.com:11000/oozie -config examples/apps/map-reduce/job.properties -run 

      注意点:需要启动yarn。

      

      启动了两个mapreduce任务。

      

    8.总结

      -》bin/oozie job -oozie http://hadoop-senior02.ibeifeng.com:11000/oozie -config examples/apps/map-reduce/job.properties -run

      提交任务

      -》oozie读取job.properties
      -》查找需要运行的wf的地址,将相应变量传递给wf
      -》读取wf的文件
        -》start节点
        -》action节点
        -》OK-》end
        -》error-》kill
      -》程序运行需要读取依赖的jar包
         lib目录
      -》全局则需要sharelib的jar包支持

    四:自定义wordcount任务流

    1.新建目录

      在家目录i下新建application,在下面建项目wc-wf(这个直接拷贝mapreduce的文件)

      

    2.检测wordcount的jar包是否可以使用

     

    3.HDFS上新建input目录,上传wc.inpu

      

    4.上传wc2.jar

      目录/etc/opt/datas

    5.在yarn上运行

      

    6.证明jar包没有问题

      

    7.修改job.properties

      

    8.修改workflow.xml

      关于查找configuration,这个可以去刚刚运行的yarn中的程序,查看19888中的cinfiguration。

      因为,这个需要和jar中的配置一样,是mapreduce2.

      需要修改:队列的名称,map与reduce的class,map与reduce的输出类型。

      这个需要哪些参数,取决于jar中的friver需要的参数。

      

      

    9.上传wc2.jar到wc-wf中的lib中

      其他的lib可以删除。

      

    10.上传到HDFS上运行

       bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/applications/ /

    11.运行

      官网上推荐的运行命令,声明一下环境变量,就可以不使用-oozie参数。

      export OOZIE_URL="http://linux-hadoop3.ibeifeng.com:11000/oozie"

      bin/oozie  job  -config applications/wc-wf/job.properties -run

      

    12.结果

      

      

    五:自定义shell action的workflow

    1.拷贝官方的shell,并命名为shell-wf

      

     2.修改job.properties

      

    3.在shell-wf中新建oozie.sh

      

    4.修改workflow.xml

      主要是sh文件的绝对路径。

      

    5.完成oozie.sh 

      在oozie中,必须写#!/bin/bash

      因为这个sh要在机器上执行。

      

    6.上传到HDFS

      bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/applications/shell-wf/ /applications

    7.运行

      bin/oozie job -config applications/shell-wf/job.properties -run

    8.结果

      

    六:DAG图的设计

    1.拷贝wc-wf,并该名为dag-wf

      

    2.将shell-wf中 的.sh拷贝到dag-wf中

      

    3.修改job.properties

      

    4.修改oozie.sh

      

    5.修改workflow.xml

      

    6.上传

      bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/applications/dag-wf/ /applications   

    7.运行

      bin/oozie job -config applications/dag-wf/job.properties -run

    8.结果

      

    9.HDFS上

      

    七:修改linux时区

    1.说明

      因为,下面的coordinate的会使用。

      让时区变成中国的时区。

      

    2.查看

      默认的是UTC。

      

    2.如果不是+0800,则需要重新生成

      在linux中删除:

        rm -rf /etc/localtime

      重新生成,建立软连接:

        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

    3.修改时间

      

    4.在oozie.site中修改时区

      

    5.在js中修改时区

      因为web界面上的时间不对应,考虑到当时拷贝的js包。在oozie-server中的webapps中。

      

    6.重新启动oozie

    八:编写coordinate

      》基于时间的任务调度

        起始时间

        终止时间

        频率

      》基于数据可用性的调度

        文件是否存在

        判断数据是否符合标准

      》执行顺序

        job.properties

        coordinator.xml:完成时间的封装,然后指向workflow.xml

    1.复制

      

    2.修改job.properties

      指向两个地址,workflow.xml,coordinator.xml

      关于日期的配置,可以参考官网Datetime。

      

    3.修改coordinator.xml

      下面修改频率。

      以及,时区。

      

    4.修改oozie.xml

      因为,oozie的最小时间是5分钟。

      

    5.重启oozie

    6.上传到HDFS

       bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/applications/cron-wf/ /applications

    7.运行

      bin/oozie job -config applications/cron-wf/job.properties -run 

    8.结果

      任务的调度特点:包头不包尾。

      

      

    九:支持crontab的任务调度

      上面的格式不仅支持,linux 的crontab格式也支持。

    1.拷贝

      

    2.修改job.properties

      

    3.修改coordinate

      

    4.上传

      bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/applications/crontab/ /applications   

    5.运行

      bin/oozie  job  -config applications/crontab/job.properties -run

    6.运行结果

      

      

      

      

        

  • 相关阅读:
    三十岁了是否该改行——我完全晕倒了
    asp.net Context.Handler 页面间传值的几种方法
    信道与信道栈
    正则表达式之字符组
    移动Web界面样式CSS3
    Media Queries语法总结
    WCF全面解析(上下册)
    HTML5移动Web开发指南
    HTML5移动开发即学即用(双色)
    可靠会话最佳实践
  • 原文地址:https://www.cnblogs.com/juncaoit/p/6122187.html
Copyright © 2011-2022 走看看