前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oozie如何和安装部署

Oozie如何和安装部署

作者头像
别先生
发布2018-04-16 14:40:11
2.1K0
发布2018-04-16 14:40:11
举报
文章被收录于专栏:别先生别先生

1、Oozie的简单介绍:

1、Oozie是一个工作流引擎服务器,用于运行hadoop map/reduce和hive等任务工作流,同时Oozie还是一个Java web程序,运行在Java Servlet容器中,如Tomcat中。Oozie以action为基本任务单元,可以将多个action构成一个DAG图,(有向五环图Direct Acyclic Graph)的模式进行运行。Oozie工作流通过HPDL(一种通过XML自定义处理的语言)来构造Oozie的工作流。一个Oozie服务器主要包括四个服务:Oozie Workflow,Oozie Coordinator,Oozie Bundle和Oozie SLA(Oozie服务器等级协定)。
  a、Oozie Workflow:该组件用于定义和执行一个特定顺序的mapreduce,hive和pig作业。
  b、Oozie Coordinator:该组件用户支持基于事件,系统资源存在性等条件的workflow的自动化执行。
  c、Oozie Bundle:该引擎可以定义和执行“一束”应用,从而提供一个批量化的方法,将一组Coordinator应用程序一起进行管理。
  d、Oozie服务器等级协定(Service Level Agreement,SLA):该组件支持workflow应用程序执行过程的记录跟踪。

 2、Oozie的安装操作:

1、Oozie使用tomcat等服务器作为web页面展示容器,使用关系型数据库存储Oozie的工作流元数据,默认使用derby,由于derby的缺点,一般情况使用mysql作为Oozie的元数据库,使用extjs来作为报表展示js框架。
  a、安装步骤:
    1)、安装mysql。之前安装过,省略。
    2)、安装tomcat。
      a、下载tomcat压缩包:wget http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.8/bin/apache-tomcat-7.0.8.tar.gz
        [hadoop@slaver1 package]$ wget http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.8/bin/apache-tomcat-7.0.8.tar.gz
      b、解压缩操作。
       [hadoop@slaver1 package]$ tar -zxvf apache-tomcat-7.0.8.tar.gz -C /home/hadoop/soft/
      c、设置环境变量。
        [hadoop@slaver1 soft]$ sudo vim /etc/profile
        export CATALINA_HOME=/home/hadoop/soft/apache-tomcat-7.0.8
        export PATH=$PATH:$CATALINA_HOME/bin
      d、启动tomcat测试是否安装成功。
        [hadoop@slaver1 bin]$ startup.sh
        [hadoop@slaver1 apache-tomcat-7.0.8]$ jps
        4547 Bootstrap
    3)、安装Oozie。下载地址:archive.cloudera.com/cdh5/cdh/5/oozie-4.0.0-cdh5.3.6.tar.gz
      a、下载Oozie安装包解压缩操作和ext-2.2.zip。
        [hadoop@slaver1 package]$ tar -zxvf oozie-4.0.0-cdh5.3.6.tar.gz -C /home/hadoop/soft/
      b、设置用户环境变量。
        [hadoop@slaver1 soft]$ sudo vim /etc/profile
        export OOIZE_HOME=/home/hadoop/soft/oozie-4.0.0-cdh5.3.6
        export PATH=$PATH:$OOIZE_HOME/bin
      c、修改cong/Oozie-site.xml文件进行配置信息修改。(这个文件的内容可以去Oozie-default.xml文件找)
        主要就是进行元数据指定和service的指定:
        配置信息见下面所示:
      如果修改端口号,可以在conf/oozie-enc.sh文件中进行参数修改,比如修改端口号,默认端口号为11000。
      d、在Oozie根目录下创建libext文件夹,并将Oozie依赖的其他第三方jar移动到该目录下面。
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ mkdir libext
        然后将mysql的driver压缩包到libext文件夹中:
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ cp /home/hadoop/package/mysql-connector-java-5.1.31.jar ./libext/
      e、创建Oozie元数据库。执行sql创建,执行完成后,mysql中出现数据库和数据表:
        [hadoop@slaver1 ~]$ ooziedb.sh create -sqlfile oozie.sql -run
      f、设置hadoop代理用户。必须设置 哦。
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ vim /home/hadoop/soft/hadoop-2.5.0-cdh5.3.6/etc/hadoop/core-site.xml
         <property>
                <name>hadoop.proxyuser.hadoop.hosts</name>
                <value>*</value>
            </property>
            <property>
                <name>hadoop.proxyuser.hadoop.groups</name>
                <value>*</value>
            </property>
      g、在hdfs上设置Oozie的公用jar文件夹。
        hadoop的默认端口号是8020,我改成了9000,所以这里注意一下:
        [hadoop@slaver1 ~]$ oozie-setup.sh sharelib create -fs hdfs://slaver1:8020 -locallib $OOIZE_HOME/oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ oozie-setup.sh sharelib create -fs hdfs://slaver1:9000 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
      h、创建Oozie的war文件。
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ addtowar.sh -inputwar ./oozie.war -outputwar ./oozie-server/webapps/oozie.war -hadoop 2.5.0 $HADOOP_HOME -jars ./libext/mysql-connector-java-5.1.31.jar -extjs ../../../hadoop/package/ext-2.2.zip
        或者将hadoop相关包,mysql相关包,ext相关压缩包放到libext文件夹中,运行oozie-setup.sh prepare-war也可以创建war文件。
      i、运行Oozie并检查是否安装完成。
        oozied.sh run 或者oozied.sh start(前端在前端运行,后者在后台运行)
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ oozied.sh start
      j、查询web界面&查看状态:oozie admin -oozie http://slaver1:11000/oozie -status。
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ oozie admin -oozie http://slaver1:11000/oozie -status

3:Oozie的conf文件修改oozie.site.xml:

<?xml version="1.0"?>
<configuration>
    <property>
        <name>oozie.services</name>
        <value>
        org.apache.oozie.service.JobsConcurrencyService,
            org.apache.oozie.service.SchedulerService,
            org.apache.oozie.service.InstrumentationService,
            org.apache.oozie.service.MemoryLocksService,
            org.apache.oozie.service.CallableQueueService,
            org.apache.oozie.service.UUIDService,
            org.apache.oozie.service.ELService,
            org.apache.oozie.service.AuthorizationService,
            org.apache.oozie.service.UserGroupInformationService,
            org.apache.oozie.service.HadoopAccessorService,
            org.apache.oozie.service.URIHandlerService,
            org.apache.oozie.service.DagXLogInfoService,
            org.apache.oozie.service.SchemaService,
            org.apache.oozie.service.LiteWorkflowAppService,
            org.apache.oozie.service.JPAService,
            org.apache.oozie.service.StoreService,
            org.apache.oozie.service.CoordinatorStoreService,
            org.apache.oozie.service.SLAStoreService,
            org.apache.oozie.service.DBLiteWorkflowStoreService,
            org.apache.oozie.service.CallbackService,
            org.apache.oozie.service.ActionService,
            org.apache.oozie.service.ShareLibService,
            org.apache.oozie.service.ActionCheckerService,
            org.apache.oozie.service.RecoveryService,
            org.apache.oozie.service.PurgeService,
            org.apache.oozie.service.CoordinatorEngineService,
            org.apache.oozie.service.BundleEngineService,
            org.apache.oozie.service.DagEngineService,
            org.apache.oozie.service.CoordMaterializeTriggerService,
            org.apache.oozie.service.StatusTransitService,
            org.apache.oozie.service.PauseTransitService,
            org.apache.oozie.service.GroupsService,
            org.apache.oozie.service.ProxyUserService,
            org.apache.oozie.service.XLogStreamingService,
            org.apache.oozie.service.JvmPauseMonitorService
        </value>
    </property>
    <property>
        <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
        <value>*=/home/hadoop/soft/hadoop-2.5.0-cdh5.3.6/etc/hadoop</value>
    </property>
    <property>
        <name>oozie.service.JPAService.create.db.schema</name>
        <value>true</value>
    </property>
    
    <property>
        <name>oozie.service.JPAService.jdbc.driver</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>oozie.service.JPAService.jdbc.url</name>
        <value>jdbc:mysql://slaver1:3306/ooize?createDatabaseIfNotExist=true</value>
    </property>

    <property>
        <name>oozie.service.JPAService.jdbc.username</name>
        <value>hive</value>
    </property>

    <property>
        <name>oozie.service.JPAService.jdbc.password</name>
        <value>hive</value>
    </property>

    <property>
        <name>oozie.processing.timezone</name>
        <value>GMT+0800</value>
    </property>
</configuration>

 4、web界面如下所示:

 5、Oozie的工作流介绍:

1、Oozie的四大组件服务分别是:workflow,coordinator,boundle和sla。启动sla是作为监控服务协议的一个组件,workflow定义Ooize的基本工作流,coordinator定义定时(或者是根据其他资源指标)运行的workflow任务。bundle是将多个coordinator作为一个组件一起管理。也就是说workflow是oozie中最基本的一个服务组件。三大服务的关系是:bundle包含多个coordinator,coordinator包含一个workflow,workflow定义具体的action动作。
2、workflow使用hadoop流程定义语言(hadoop process defination language,hPDL)来描述工作流,hPDL是类似xml语言的一种相当简介的定义类语言,使用有限数目的流控制节点和动作节点来描述workflow,也就是说workflow有两大类节点构成:工作流控制节点和动作节点。其中工作流控制节点是workflow本身提供的一种控制workflow工作流执行路径的方法,不可以自定义,动作节点是具体的操作方法,用户可以自定义。
  workflow工作流的声明周期:
  a、PREP,一个工作流第一次创建就处于PREP状态,表示工作流已经创建,但是还没有运行。
  b、RUNNIG,当一个已经被创建的工作流job开始执行的时候,就处于RUNNING状态。它不会达到结束状态,只能因为出错而结束或者被挂起。
  c、SUSPENDED,一个RUNNING状态的工作流Job会变成SUSPENDED状态,而且它会一直处于该状态,除非这个工作流Job被重启开始执行或者被杀死。
  d、SUCCESSEDED,当一个RUNNING状态的工作流Job达到了end节点,他就变成了SUCCESSEDED最终完成状态。
  e、KILLED,当一个工作流Job处于被创建后的状态。或者处于RUNNING,SUSPENDED状态时,被杀死,则工作流Job的状态变为了KILLED状态。
  f、FAILED,当一个工作流Job不可预期的错误失败而终止,就会变成FAILED状态。
3、
4、

 组件之间的关系如下所示:

6、

待续......

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档