高可用Hadoop平台-Oozie工作流

简介

Oozie是一个基于工作流引擎的服务器,可以在上面运行Hadoop的Map
Reduce和Pig任务。它其实就是一个运行在Java
Servlet容器(比如Tomcat)中的Javas Web应用。

对于Oozie来说,工作流就是一系列的操作(比如Hadoop的MR,以及Pig的任务),这些操作通过有向无环图的机制控制。这种控制依赖是说,一个操作的输入依赖于前一个任务的输出,只有前一个操作完全完成后,才能开始第二个。

Oozie工作流通过hPDL定义(hPDL是一种XML的流程定义语言)。工作流操作通过远程系统启动任务。当任务完成后,远程系统会进行回调来通知任务已经结束,然后再开始下一个操作。

1.概述

  在《高可用Hadoop平台-Oozie工作流》一篇中,给大家分享了如何去单一的集成Oozie这样一个插件。今天为大家介绍如何去使用Oozie创建相关工作流运行与Hadoop上,已经在创建过程当中需要注意的事项,下面是今天的分享目录:

  • Oozie简介
  • 任务工作流
  • 截图预览

  下面开始今天的内容分享。

3.4 启动

  接下来,我们去启动Oozie,命令如下所示:

# 在$OOZIE_HOME/bin目录下 
./oozie-start.sh

  正常启动内容如下所示:

[hadoop@nna bin]$ ./oozie-start.sh 
WARN: Use of this script is deprecated; use 'oozied.sh start' instead

Setting OOZIE_HOME:          /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0
Setting OOZIE_CONFIG:        /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/conf
Sourcing:                    /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/conf/oozie-env.sh
  setting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"
Setting OOZIE_CONFIG_FILE:   oozie-site.xml
Setting OOZIE_DATA:          /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/data
Setting OOZIE_LOG:           /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/logs
Setting OOZIE_LOG4J_FILE:    oozie-log4j.properties
Setting OOZIE_LOG4J_RELOAD:  10
Setting OOZIE_HTTP_HOSTNAME: nna
Setting OOZIE_HTTP_PORT:     11000
Setting OOZIE_ADMIN_PORT:     11001
Setting OOZIE_HTTPS_PORT:     11443
Setting OOZIE_BASE_URL:      http://nna:11000/oozie
Setting CATALINA_BASE:       /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server
Setting OOZIE_HTTPS_KEYSTORE_FILE:     /home/hadoop/.keystore
Setting OOZIE_HTTPS_KEYSTORE_PASS:     password
Setting OOZIE_INSTANCE_ID:       nna
Setting CATALINA_OUT:        /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/logs/catalina.out
Setting CATALINA_PID:        /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/temp/oozie.pid

Using   CATALINA_OPTS:        -Xmx1024m -Dderby.stream.error.file=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/logs/derby.log
Adding to CATALINA_OPTS:     -Doozie.home.dir=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0 -Doozie.config.dir=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/conf -Doozie.log.dir=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/logs -Doozie.data.dir=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/data -Doozie.instance.id=nna -Doozie.config.file=oozie-site.xml -Doozie.log4j.file=oozie-log4j.properties -Doozie.log4j.reload=10 -Doozie.http.hostname=nna -Doozie.admin.port=11001 -Doozie.http.port=11000 -Doozie.https.port=11443 -Doozie.base.url=http://nna:11000/oozie -Doozie.https.keystore.file=/home/hadoop/.keystore -Doozie.https.keystore.pass=password -Djava.library.path=

Setting up oozie DB
  setting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"

Validate DB Connection
DONE
DB schema exists

The SQL commands have been written to: /tmp/ooziedb-9100396876446618885.sql

Using CATALINA_BASE:   /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server
Using CATALINA_HOME:   /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server
Using CATALINA_TMPDIR: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/temp
Using JRE_HOME:        /usr/java/jdk1.7
Using CLASSPATH:       /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/bin/bootstrap.jar
Using CATALINA_PID:    /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/temp/oozie.pid

永利官网ylg客户端 1

4.截图预览

  在提交作业后,我们可以通过浏览Oozie的Web监控界面观察相关信息,如下图所示:

永利官网ylg客户端 2

永利官网ylg客户端 3

永利官网ylg客户端 4

2.2 基础环境

  本次给大家分享的基础环境是:

Name   Value
操作系统 CentOS6.6
工作流 Oozie4.2
Hadoop 2.6

  

 

 

 

  以上便是本篇博客需依赖的基础环境。另外还需要用到JDK,Maven,MySQL驱动文件等。

Oozie工作流包含控制流节点以及操作节点

控制流节点定义了工作流的开始和结束(start,end以及fail的节点),并控制工作流执行路径(decision,fork,join节点)。操作节点是工作流触发计算处理任务的执行,Oozie支持不同的任务类型——hadoop
map
reduce任务,hdfs,Pig,SSH,eMail,Oozie子工作流等等。Oozie可以自定义扩展任务类型。

Oozie工作流可以参数化的方式执行(使用变量${inputDir}定义)。当提交工作流任务的时候就需要同时提供参数。如果参数合适的话(使用不同的目录)就可以定义并行的工作流任务。

3.任务工作流

  下面,我们在Hadoop平台下去创建这样一个工作流,首先,我们需要配置Hadoop的core-site.xml文件,在该文件中添加以下内容:

  • core-site.xml

        <!-- OOZIE -->
        <property>
                <name>hadoop.proxyuser.hadoop.hosts</name>
                <value>*</value>
        </property>
        <property>
                <name>hadoop.proxyuser.hadoop.groups</name>
                <value>*</value>
        </property>    
    

  然后,在去修改Oozie的oozie-site.xml文件,在该文件中添加如下内容如下:

  • oozie-site.xml

    oozie.services

    org.apache.oozie.service.SchedulerService,
    org.apache.oozie.service.InstrumentationService,
    org.apache.oozie.service.MemoryLocksService,
    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.JobsConcurrencyService,
    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.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.CallableQueueService,
    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
    oozie.service.HadoopAccessorService.hadoop.configurations
    *=/home/hadoop/hadoop-2.6.0/etc/hadoop

  在修改完相关文件后,下面我们去创建Oozie的sharelib,其命令如下所示:

oozie-setup.sh sharelib create -fs hdfs://cluster1

  然后使用shareliblist命令查看相关内容,命令如下所示:

oozie admin -shareliblist -oozie http://nna:11000/oozie

  若成功创建,会生成如下图所示内容:

永利官网ylg客户端 5

  若未出现相应内容,请检查相关信息是否配置正确即可。

  • 启动Oozie服务

    oozied.sh start

  注:在启动时,这里建议打开oozie的启动日志,动态观察相关日志信息,也许会出现一些异常信息,比如:

Caused by: java.lang.NoClassDefFoundError: org/htrace/Trace
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:214)

    Caused by: java.lang.NoClassDefFoundError: com/google/protobuf/ServiceException
    at org.apache.hadoop.ipc.ProtobufRpcEngine.<clinit>(ProtobufRpcEngine.jav

  这些异常信息大多是由于我们在前面打包生成war包时,由于缺少相关的依赖JAR包导致的,这里我们将缺少的JAR从Hadoop的share目录下找到对应的JAR拷贝到Oozie运行war包容器下即可,如:

$OOZIE_HOME/oozie-server/webapps/oozie/WEB-INF/lib

  这里,异常都有相应的提示,大家耐心的按照提示解决异常即可,在解决相关异常后,我们就可以去创建相关工作流。

  Oozie给我们提供了相关示例让我去参考配置,下面我们将examples/apps下的文件上传到HDFS当中去,这里我上传在HDFS的/oozie目录下。接下来,我给大家去演示一个定时任务。首先,我们进去到apps目录下的cron目录,这是一个定时任务的示例,其中包含:coordinator.xml、job.properties和workflow.xml三个文件,这里我们对其进行配置。

  • coordinator.xml

                 xmlns="uri:oozie:coordinator:0.2">
        <action>
        <workflow>
            <app-path>${workflowAppUri}</app-path>
            <configuration>
                <property>
                    <name>jobTracker</name>
                    <value>${jobTracker}</value>
                </property>
                <property>
                    <name>nameNode</name>
                    <value>${nameNode}</value>
                </property>
                <property>
                    <name>queueName</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
        </workflow>
    </action>
    

  这里配置的频率为10分钟,该属性可配置其它频率(如:小时,天等)。

  • job.properties

    nameNode=hdfs://cluster1
    jobTracker=nna:8132
    queueName=default
    examplesRoot=examples

    oozie.coord.application.path=${nameNode}/oozie/${examplesRoot}/apps/cron
    start=2015-08-25T13:00+0800
    end=2015-08-26T01:00+0800
    workflowAppUri=${nameNode}/oozie/${examplesRoot}/apps/cron

  这里由于使用Hadoop2.x的HA特性,在指定NameNode时,直接使用hdfs://cluster1,在Hadoop2.x后,jobTracker被替换了,这里将其地址指向resourcemanager.address的地址。

  • workflow.xml

    <start to="end"/>
    <end name="end"/>
    

  工作流使用一个空的Job。

  在配置完相关文件后,我们将workflow.xml和coordinator.xml上传到指定的HDFS地址(之前上传examples目录下的corn目录下,上传之前先删除存在的文件),最后,我们启动这样一个工作流,命令如下所示:

$OOZIE_HOME/bin/oozie job -oozie http://nna:11000/oozie -config job.properties -run

  创建成功后,会生成一个JobID,如下图所示:

永利官网ylg客户端 6

  注:图中我将命令封装在Shell脚本当中。这里在创建工作流时,同样建议动态开启Oozie的运行日志,便于查看异常信息。

  若是需要Kill任务,可以使用以下命令:

$OOZIE_HOME/bin/oozie job -oozie http://nna:11000/oozie -kill [JOB_ID]

  其Job DAG如下图所示:

永利官网ylg客户端 7

1.概述

  在开发ylg娱乐官网,Hadoop的相关应用使用,在业务不复杂,任务不多的情况下,我们可以直接使用Crontab去完成相关应用的调度。今天给大家介绍的是统一管理各种调度任务的系统,下面为今天分享的内容目录:

  • 永利官网ylg客户端,内容介绍
  • Oozie Server
  • 截图预览

  下面开始今天的内容分享。

参考

  • oozie入门介绍

下面关于Oozie的文章您也可能喜欢,不妨看看:

Oozie4.0.1详细安装教程 
http://www.linuxidc.com/Linux/2014-12/110456tm

指定Oozie Java节点的Hadoop属性
http://www.linuxidc.com/Linux/2014-06/103617.htm

Hadoop平台上Oozie调度系统的安装配置
http://www.linuxidc.com/Linux/2014-04/100382.htm

Oozie中运行mapreduce node-action时的常见异常解决方法
http://www.linuxidc.com/Linux/2014-02/96685.htm

Oozie web-console 时间本地化
http://www.linuxidc.com/Linux/2012-11/74797.htm

Hadoop Oozie学习笔记 使用Oozie,通过命令行运行example
http://www.linuxidc.com/Linux/2012-08/67029.htm

Hadoop Oozie学习笔记 自定义安装和启动
http://www.linuxidc.com/Linux/2012-08/67028.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/137322.htm

永利官网ylg客户端 8

2.Oozie简介

  在Oozie中有几个重要的概念,他们分别是:

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



    省略详细内容

  • Coordinator:多个WorkFlow可以组成一个Coordinator,可以把前几个WorkFlow的输出作为后一个WorkFlow的输入,当然也可以定义WorkFlow的触发条件,来做定时触发,其书写方式如下所示:

                 xmlns="uri:oozie:coordinator:0.1">
        <action>
        <workflow>
            <app-path>${workflowAppUri}</app-path>
            <configuration>
                <property>
                    <name>jobTracker</name>
                    <value>${jobTracker}</value>
                </property>
                <property>
                    <name>nameNode</name>
                    <value>${nameNode}</value>
                </property>
                <property>
                    <name>queueName</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
        </workflow>
    </action>
    <action>
        <workflow>
          ...
        </workflow>
      </action>
    

  • Bundle:控制一个或多个Coordinator应用,其写法如下所示:


       <kick-off-time>[DATETIME]</kick-off-time>
    


       <app-path>[COORD-APPLICATION-PATH]</app-path>
          <configuration>
            <property>
              <name>[PROPERTY-NAME]</name>
              <value>[PROPERTY-VALUE]</value>
            </property>
            ...
         </configuration>
    



3.1 依赖包准备

  • Maven

  下载安装Maven环境,命令如下所示:

wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz

tar -zxvf apache-maven-3.3.3-bin.tar.gz

  接着添加环境变量,如下所示:

export M2_HOME=/home/hadoop/maven-3.3.3
export PATH=$PATH:$ES_HOME/bin

  然后输入一下命令使之立即生效:

. /etc/profile

  最后,我们输入 mvn -version
命令,若能现实对应的Maven版本号,即表示Maven环境集成OK。

  • MySQL

  关于 MySQL 数据库的安装配置较为简单,这里就不多做赘述了。

  • Tomcat

  由于Oozie会用其Web容器,这里需要安装Tomcat
Web服务器,可以到Apache的官网下载对应的安装包,这里不多做赘述。

  • ExtJS工具包

  在可视化会依赖该工具包,所以这里我们需要下载其工具,下载地址我们可以在Oozie的DG_QuickStart页面找到,如下图所示:

永利官网ylg客户端 9

  地址如下所示:

wget http://dev.sencha.com/deploy/ext-2.2.zip
  • Oozie

  这里我们可以在Oozie的官网下载其安装包,下载地址:

wget http://mirrors.cnnic.cn/apache/oozie/4.2.0/oozie-4.2.0.tar.gz

发表评论

电子邮件地址不会被公开。 必填项已用*标注