zoukankan      html  css  js  c++  java
  • 《OD学Oozie》20160807Oozie

    一、引入

    MapReduce Job

    Hive 脚本任务

    同一个业务:先后、定时调度

    工作流: 定义工作流程

    activity

    jbpm

    oozie: 大数据工作流定义与调度框架

    专门定义与调度MapReduce Job工作流程

    拓展:shell、hive、sqoop、hdfs

    oozie演变过程:

    v1 Workflow 工作流定义

    v2 Coordinator 调度

      基于时间、基于数据集是否可用

    v3 bundle 将某些相关的Cordinator集成在一块

    调度批量执行

    案例:

    nginx收集日志,每天进行分割(一天一个文件) ---> shell

    每天分割出来的日志文件,上传到hdfs上   ---> shell/flume

    mapreduce job数据清洗/ hive udf udts进行数据清洗

    hive hsql 进行业务上的统计分析  pv uv 会话

    sqoop导出到mysql里面

    定义

    start

    两类节点:

    控制流程节点:

    decision选择节点

    fork

    join

    顺序

    action节点:

    MapReduce action

    shell

    hive

    sqoop

    Oozie执行workflow:底层是MapReduce去执行Workflow

    工作流引擎:MapReduce

    启动一个workflow实例,运行工作流中任务,通过Mapreduce来执行

    二、安装部署

    1. 下载

    2. 解压安装

    1)

    2)tar -zxvf oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz -C ../

    3)创建目录libext

    /opt/modules/cdh/oozie-4.0.0-cdh5.3.6/libext

    cp /opt/modules/cdh/oozie-4.0.0-cdh5.3.6/hadooplibs/hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6/*.jar /opt/modules/cdh/oozie-4.0.0-cdh5.3.6/libext/

    4)cp /

    ext-2.2.zip  ---> oozie使用了extjs

    ext-2.2.zip copy 到 libext

    5)将mysql的驱动包添加到libext

    oozie需要有关系型数据库存储工作流运行过程中的状态流转信息

    6)修改oozie-site.xml

    oozie-env.sh

    从CATALINA_OPTS看出,oozie内部使用的tomcat做应用服务器

    7)打war包到tomcat中

    bin/oozie-setup.sh prepare-war

    成功:

     New Oozie WAR file with added 'ExtJS library, JARs' at /opt/modules/cdh/oozie-4.0.0-cdh5.3.6/oozie-server/webapps/oozie.war

    8)将tar包解压并上传依赖包到hdfs上

    bin/oozie-setup.sh sharelib create -fs hdfs://beifeng-hadoop-02:9000 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz

    <property>
    <name>oozie.service.WorkflowAppService.system.libpath</name>
    <value>/user/${user.name}/share/lib</value>
    <description>
    System library path to use for workflow applications.
    This path is added to workflow application if their job properties sets
    the property 'oozie.use.system.libpath' to true.
    </description>

    9)初始化mysql中的oozie库

    bin/oozie-setup.sh db create -run oozie.sql

    10)启动oozie

    bin/oozied.sh start

    netstat -tlnup | grep 11000

    11)访问

    http://beifeng-hadoop-02:11000/oozie/

    三、oozie使用

    1. 运行案例

    使用oozie来运行 fof 好友推荐 mapredue,首先要确保MapReduce能正常运行。

    mapreduce-example.jar findfof bestfof

    2. Oozie:工作流程是通过配置文件进行配置

    worflow.xml  参考examples里面的皮遏制

    oorzie运行workflow是通过MapReduce运行,所以workflow的配置文件需要先放到hdfs上

    如何定义工作流并运行工作流(以MapReduce为例):

    (1)先在本地文件系统定义好配置

    (2)编写两个配置

    job.properties  workflow.xml

    (3)创建lib目录,将mapreduce jar包放进去

    job.properties

    YANR 的调度器的队列

    yarn调度,其实就是讲mr job放到某个queue上运行

    队列:

    (1)FIFO

    (2)Fair公平队列:先尽可能将资源分配给某个Job

    比如只有一个job时,拥有所有资源,当有另一个job要执行,则会分出部分资源

    (3)容量队列:多个FIFO队列,每个队列有资源占有率

    往YARN上提交Job,根据Job的资源要求安排合适队列运行job任务。

    3. 将配置上传到hdfs

    4. 运行

    bin/oozie job -oozie http://beifeng-hadoop-02:11000/oozie -config /opt/datas/oozie-apps/fof-mr/job.properties -run

    补充概念:

    DAG有向无环图:

    Oozie workflow

    storm 数据流

    spark 本质核心 DAG

    <ok to ="">

    1)Map Reduce action

    2) shell action

    Oozie执行具有本地特性的shell脚本:

    引子shell脚本

    真正要执行的shell脚本,要在哪台服务器上,引子shell脚本就放在哪台服务器上。

    password='beifeng'

    /usr/bin/expect

    切割日志

    3) hive action

    4)sqoop action

  • 相关阅读:
    markown 画图
    C++ 结构体指针
    C++指针详解
    C++ 中类对象与类指针的区别
    Java面向对象㈠ -- 封装
    path和classpath
    "System.Web" 中不存在类型或命名空间
    ASP.NET 后台不识别ASPX中的控件
    asp.net中的<%%>形式的详细用法实例讲解
    ASP.NET前台JS与后台CS函数如何互相调用
  • 原文地址:https://www.cnblogs.com/yeahwell/p/5745784.html
Copyright © 2011-2022 走看看