oozie 重新触发job任务是怎么触发执行的

【图文】Oozie作业调度_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
Oozie作业调度
上传于||文档简介
&&A​p​a​c​h​e​ ​O​o​z​i​e​ ​是​用​于​ ​H​a​d​o​o​p​ ​平​台​的​一​种​工​作​流​调​度​引​擎​,​用​于​运​行​H​a​d​o​o​p​ ​M​a​p​/​R​e​d​u​c​e​和​P​i​g​ ​任​务​工​作​流​.​同​时​O​o​z​i​e​还​是​一​个​J​a​v​a​ ​W​e​b​程​序​,​运​行​在​J​a​v​a​ ​S​e​r​v​l​e​t​容​器​中​。
大小:856.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢当前位置: →
针对Hadoop的Oozie工作流管理引擎的实际应用
Apache Oozie 是用于 Hadoop 平台的一种工作流调度引擎。该框架(如图 1 所示)使用 Oozie 协调器促进了相互依赖的重复工作之间的协调,您可以使用预定的时间或数据可用性来触发 Apache Oozie。您可以使用 Oozie bundle 系统提交或维护一组协调应用程序。作为本练习的一部分,Oozie 运行了一个 Apache Sqoop 作业,以便在 MySQL 数据库中的数据上执行导入操作,并将数据传输到 Hadoop 分布式文件系统 (HDFS) 中。可以利用导入的数据集执行 Sqoop 合并操作,从而更新较旧的数据集。通过利用 UNIX shell 操作,可从 MySQL 数据库中提取用来执行 Sqoop 作业的元数据。同理,可执行 Java 操作来更新 Sqoop 作业所需的 MySQL 数据库中的元数据。
InfoSphere BigInsights Quick Start Edition
InfoSphere BigInsights Quick Start Edition 是一个免费的、可下载的 InfoSphere BigInsights 版本,是 IBM 基于 Hadoop 的产品。使用 Quick Start Edition,您可以尝试使用 IBM 开发的特性来提高开源 Hadoop 的价值,这些特性包括 Big SQL、文本分析和 BigSheets。为了让您的体验尽可能顺利,我们提供了引导式学习,包括一些按部就班的、自定进度的教程和视频,它们可以帮助您开始让 Hadoop 为您工作。没有时间或数据的限制,您可以自行安排时间在大量数据上进行试验。观看视频、遵循这些教程 (PDF) 并 立刻下载 BigInsights Quick Start Edition。
图 1. Oozie 编排架构
需要安装的软件
要想充分利用本文的示例,访问以下软件可能对您有所帮助:
Hadoop 2.2.0一个 MySQL 数据库Oozie-4.0.0Hive-0.11.0电子邮件服务本文可下载的源代码,便于参考
该集群是一个分布式集群,在 1 个主名称节点、2 个核心节点和 8 个任务节点中运行。
Oozie 工作流
Oozie 工作流是控制依赖有向非循环图 (DAG) 中安排的 Oozie 操作的集合。控制依赖(Control dependency)可确保以下操作在前面的操作已成功完成后才会启动。本文首先会简要概述工作流控制节点,然后重点介绍以下工作流操作节点:
Oozie shell 操作Oozie Java 操作Oozie Sqoop 操作Oozie Hive 操作Oozie 电子邮件操作工作流控制节点
启动控制节点(如清单 1 所示)是工作流作业的入口点。在工作流启动时,它会自动过渡到启动过程中指定的节点。
清单 1. 启动控制节点
末端控制节点(如清单 2 所示)是结束工作流作业时所用的节点。它表示工作流操作已经成功完成。一个工作流定义必须有一个末端节点。
清单 2. 末端控制节点
停止控制节点(如清单 3 所示)可使工作流作业自行停止。在到达停止节点(kill node)时,如果工作流作业启动的一个或更多操作正在运行,那么当前运行的所有操作都将停止。工作流定义可以包含零个或更多停止节点。
清单 3. 停止控制节点 Sqoop failed, error message[${wf:errorMessage(wf:lastErrorNode())}]
决策控制节点(如清单 4 所示)可使工作流确定要采用的执行路径。决策节点的工作原理类似于拥有一组谓词转换对(predicates-transition pair)和一个默认转换的 switch-case 块。谓词是按顺序进行评估的,直至其中一个评估为 ture 为止,同时还会进行相应的转换。如果没有一个谓词被评估为 true,则会采用默认转换。
清单 4. 决策控制节点 ${wf:actionData('hiveSwitch')['paramNum'] eq 1}
分支节点 将一个执行路径分为多个并发路径。联接节点 一直等待,直到前面的分支节点的所有并发执行路径都到达联接节点为止。您必须成对使用分叉节点和联接节点,如清单 5 所示。
清单 5. 分支-联接控制节点 Oozie shell 操作
您可以将 Oozie shell 操作作为工作流的一部分进行配置,从而运行某个文件中的一组 shell 脚本。您可以利用包含必要参数的 job-tracker、name-node 和 exec 元素来配置 Oozie shell 操作,从而执行相关的任务,如清单 6 所示。您可以将具有配置参数的一个配置 shell 操作来创建或删除 HDFS 上的文件和目录,然后启动 shell 作业。您可以使用与配置元素内联的 job-xml 元素,利用配置参数将一个 XML 文件传递给 shell 作业。您可以配置其他文件或归档文件,让它们可用于 shell 作业。在 shell 作业结束后,您可以让 shell 作业的输出可供 workflow 作业使用,但它需要满足以下条件:
输出的格式必须是一个有效的 Java 属性文件。输出的大小必须小于 2KB。清单 6. Shell 脚本host=&XXX.XX.XX.XXX&port=&3306&username=&root&password=&&database=&zzz&tableName=&$1&####################################echo &Host: $host&echo &Database: $database&echo &Table: $tableName&####################################sqoopLstUpd=`mysql --host=$host --port=$port --user=$username --password=$password -N -e 'SELECT PARM_DATE_VAL from T_CONTROL_PARM where PARM_NM=&SQOOP_INCR_LST_UPD& and PARM_GROUP_NM=&'$tableName'&' $database`echo &sqoopLstUpd=$sqoopLstUpd&echo &tableName=$tableName&
清单 7 展示了 workflow.xml 文件中的 shell 操作配置。
清单 7. Oozie shell 操作 ${jobTracker} ${nameNode} mapred.job.queue.name ${queueName} ${sqoopUpdTrack} ${tableName} ${sqoopUpdTrackPath}#${sqoopUpdTrack}
要想访问 shell 输出,可以使用清单 8 中所示的 Sqoop 增量作业。
清单 8. 用来实现增量导入的 Oozie Sqoop 操作 ${jobTracker} ${nameNode} mapred.job.queue.name ${queueName} import --connect ${dbURL} --driver ${mySqlDriver} --username ${user} --table ${wf:actionData('timeCheck')['tableName']} --target-dir ${s3BucketLoc}/${tableName}/incr --check-column LAST_UPD --incremental lastmodified --last-value ${wf:actionData('timeCheck')['sqoopLstUpd']} --m 1 Oozie Java 操作
Java 操作运行了指定的主要 Java 类的 public static void main (String args) 方法。Java 应用程序作为具有单个 mapper 任务的 MapReduce 作业运行在 Hadoop 集群上。工作流作业一直要等到 Java 操作结束运行之后才能继续执行下一个操作。Java 操作可使用 job-tracker、name-node、Java 主类、JVM 选项和输入参数进行配置,如清单 9 所示。您可以使用 Expression Language (EL) 表达式将参数分配给内联属性值。您必须以 Java 属性文件的格式写入所有输出参数。
您可以配置 Java 操作来清理 HDFS 文件和目录,或者建立 Apache HCatalog 分区,然后再启动 Java 应用程序。这使得 Oozie 能够在出现暂时性或非暂时性故障时重试 Java 操作。
清单 9. Oozie Java 操作 ${jobTracker} ${nameNode} mapred.job.queue.name ${queueName} SqoopMetaUtil ${tableName} ${mySqlDriverPath}
您可以通过使用 capture-output 来配置 Java 操作,从而将值传递给下一操作。您可以通过使用 Hadoop EL 函数来访问这些值。您能够以 Java 属性文件的格式在 Java 类中写入值,如清单 10 所示。
清单 10. 用于实现值传递的 Java 代码片段String OOZIE_ACTION_OUTPUT_PROPERTIES = &oozie.action.output.properties&;String oozieProp = System.getProperty(OOZIE_ACTION_OUTPUT_PROPERTIES); OutputStream os = if(oozieProp != null){ File propFile = new File(oozieProp); Properties p = new Properties(); p.setProperty(&name&, &Autodesk&); p.setProperty(&address&, &Sun Rafael&); try { os = new FileOutputStream(propFile); p.store(os, &&); } catch (FileNotFoundException e) { System.err.println(& FileNotFoundException &&&&+e.getMessage()); } catch (IOException e) { System.err.println(& IOException &&&&+e.getMessage()); } finally{ if(os != null) try { os.close(); } catch (IOException e) { System.err.println(& IOException &&&&+e.getMessage()); } } } else{ throw new RuntimeException(OOZIE_ACTION_OUTPUT_PROPERTIES + & System property not defined&); }
您可以在 workflow.xml 文件中配置操作来访问属性文件中的相应值设置,如清单 11 所示。
清单 11. 用于实现值传递的 Oozie Java 操作 ${jobTracker} ${nameNode} mapred.job.queue.name ${queueName} PropertyExplorer surajit. Oozie workflow finished successfully!${wf:actionData('jProperties')['name']} | ${wf:actionData('jProperties')['address']}Oozie Sqoop 操作
Oozie 工作流触发了一个 Sqoop 脚本,该脚本在 Hadoop 集群上启动了一个 Sqoop 作业。Sqoop 作业通过在 Hadoop 集群上启动 MapReduce 作业来完成任务。Sqoop 脚本启动的 MapReduce 作业会将数据从 RDBMS 传输到 HDFS。您可以配置一个 Sqoop 操作(如清单 12 所示)来删除 HDFS 上的文件和目录,然后再启动 Sqoop 作业。与其他 Oozie 操作类似,您可以通过使用 job-xml 元素,利用其他的属性来配置 Sqoop 操作。configuration 元素中指定的属性值将会覆盖 job-xml 元素中指定的属性。可以将其他文件和归档文件提供给 Sqoop 作业。
清单 12. 用于合并的 Oozie Sqoop 操作 ${jobTracker} ${nameNode} mapred.job.queue.name ${queueName} merge --new-data ${s3incr} --onto ${s3BucketLoc}/${tableName}/master2 --target-dir ${s3BucketLoc}/${tableName}/master1 --jar-file ${tableJarLoc}/${tableName}.jar --class-name ${tableName} --merge-key ROW_ID Oozie Hive 操作
您可以配置 Hive 操作(如清单 13 所示)来执行 HDFS 上的文件和目录中的任何 Hive 脚本。该操作启动了一个 MapReduce 作业来完成这些任务。您需要在 Oozie 上配置 Hive 操作,使用 Hive 配置文件 hive-default.xml 或 hive-site.xml 作为 job-xml 元素。对于支持 Hive 访问 Oozie 环境而言,这一点是必需的。您可以配置 Hive 操作来创建或删除 HDFS 文件和目录,然后再启动 Hive 作业。configuration 元素中指定的属性值将会覆盖 job-xml 文件中指定的值。您可以添加其他的文件和归档文件,让它们可用于 Hive 作业。Oozie 执行了由脚本元素中的路径指定的 Hive 脚本。您可以通过 Oozie 工作流,将参数作为输入参数分配给 Hive 脚本。
清单 13. Oozie Hive 操作 ${jobTracker} ${nameNode} mapred.job.queue.name ${queueName} ${hiveSwitchScript} ${tableName} ${hiveSwitchScriptPath}#${hiveSwitchScript} Oozie 电子邮件操作
Oozie 电子邮件操作(如清单 14 所示)可以从工作流应用程序发送电子邮件。除了主题和消息正文之外,电子邮件操作还必须拥有 to 和 cc(可选)地址。您可以使用逗号分割的电子邮件地址向多个收件人发送电子邮件。电子邮件操作可同步运行,而工作流作业一直要等到发送电子邮件之后才会触发下一个操作。您可以使用 Hadoop EL 表达式将参数分配给电子邮件操作。
清单 14. Oozie 电子邮件操作 surajit. Oozie workflow finished successfully!${wf:actionData('jProperties')['name']} | ${wf:actionData('jProperties')['address']}结束语
当多个相互依赖的作业与数据流捆绑在一起的时候,Oozie 工作流就会变成一个数据管道应用程序。Apache Oozie 工作流促进了数据逻辑流程的设计、错误处理、故障转移机制等。您可以配置 Oozie 协调器或捆绑的应用程序来有效地管理工作流,不过,关于这些主题的讨论已超出了本文的讨论范围。一些等效的 Hadoop 工作流引擎包括 Amazon Data Pipeline、Simple Workflow Engine、Azkaban、Cascading 和 Hamake。虽然 Hamake 和 Oozie 是基于 XML 的配置,但 Azkaban 是使用包含键值对的文本文件进行配置的,而 Cascading 是使用 Java API 进行配置的。
原文链接:/developerworks/cn/data/library/bd-hadoopoozie/index.html?ca=drs-
关注官方微信
扫一扫分享本文到朋友圈
联系我们:
&(发送邮件时,请把#换成@)
投稿信箱:
&(发送邮件时,请把#换成@)
企业网版权所有Oozie-3.3.2安装配置运行实践 - 为程序员服务
Oozie-3.3.2安装配置运行实践
Oozie是一个开源的工作流调度系统,它能够管理逻辑复杂的多个Hadoop作业,按照指定的顺序将其协同运行起来。例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示:
通过Hadoop先将原始数据同步到HDFS上;
借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张Hive表中;
需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive大表;
将明细数据进行复杂的统计分析,得到排序后的报表信息;
需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。
上述过程可以通过工作流系统来编排任务,最终生成一个工作流实例,然后每天定时启动运行这个实例即可。在这种依赖于Hadoop存储和处理能力要求的应用场景下,Oozie可能能够简化任务调度和执行。
这里,我们在CentOS 6.2系统下安装Oozie-3.3.2,需要安装相关的依赖软件包,下面我们一步一步地进行安装,包括安装配置依赖软件包。这里,我们使用MySQL数据库存储Oozie数据,Hadoop使用的是1.2.1版本。
安装Oozie Server
Oozie Server可以为我们提供很多管理Job的便捷功能,比如,通过可视化界面去管理Job的运行状态,同时也支持我构建含有多个复杂Hadoop Job流程,各个Job之间的依赖关系完全可以通过一个工作流配置文件组装起来,然后由Oozie Server其管理执行。
安装Maven构建工具
下载安装,执行如下命令:
wget http://mirrors./apache/maven/maven-3/3.2.1/binaries/apache-maven-3.2.1-bin.tar.gz
tar xvzf apache-maven-3.2.1-bin.tar.gz
加入环境变量,使变量配置生效:
export MAVEN_HOME=/home/shirdrn/cloud/programs/apache-maven-3.2.1
export PATH=$PATH:$MAVEN_HOME/bin
安装MySQL数据库
安装MySQL数据库,执行如下命令:
sudo rpm -e --nodeps mysql
yum list | grep mysql
sudo yum install -y mysql-server mysql mysql-deve
为root用户设置密码:
mysqladmin -u root password '8YOhyo988_Kjo0'
然后可以使用root账号登录MySQL数据库,进行管理:
mysql -u root -p
输入密码登录成功。
安装配置Tomcat
下载安装Tomcat Web服务器:
wget /tomcat/tomcat-7/v7.0.52/bin/apache-tomcat-7.0.52.tar.gz
tar xvzf apache-tomcat-7.0.52.tar.gz
设置环境变量:
export CATALINA_HOME=/home/shirdrn/cloud/programs/apache-tomcat-7.0.52
export PATH=$PATH:$CATALINA_HOME/bin
如果使用MySQL存储Oozie数据,需要将MySQL的驱动程序拷贝到Tomcat安装目录下,亦即$CATALINA_HOME/lib下面。
准备ExtJS工具包
下载ExtJS压缩包:
wget /deploy/ext-2.2.zip
下载安装,执行如下命令:
wget http://mirror./apache/oozie/3.3.2/oozie-3.3.2.tar.gz
tar xvzf oozie-3.3.2.tar.gz
cd oozie-3.3.2
bin/mkdistro.sh -DskipTests
构建成后,可以在oozie-3.3.2/distro/target目录下看到构建后的文件,例如我的路径是/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2,内容如下所示:
[shirdrn@oozie-server oozie-3.3.2]$ pwd
/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2
[shirdrn@oozie-server oozie-3.3.2]$ ls
oozie-core
oozie-sharelib-3.3.2.tar.gz
oozie-examples.tar.gz
oozie-client-3.3.2.tar.gz
oozie-server
release-log.txt
将OOZIE_HOME变量指向该目录,修改~/bashrc文件:
export OOZIE_HOME=/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2
export PATH=$PATH:$OOZIE_HOME/bin
将ExtJS工具包拷贝到目录$OOZIE_HOME中:
cp ~/cloud/programs/oozie-3.3.2/ext-2.2.zip $OOZIE_HOME/
在上面的目录下创建libext目录,并将hadoop相关的jar库文件拷贝到libext下面,我使用的是Hadoop 1.2.1版本:
[shirdrn@oozie-server oozie-3.3.2]$ mkdir libext
[shirdrn@oozie-server oozie-3.3.2]$ cp ~/cloud/programs/hadoop-1.2.1/hadoop-*.jar libext/
[shirdrn@oozie-server oozie-3.3.2]$ cp ~/cloud/programs/hadoop-1.2.1/lib/*.jar ./libext/
同时,我们使用了MySQL来存储Oozie的元数据,现在需要将MySQL的驱动程序添加到libext目录下:
cp ~/packages/mysql-connector-java-5.1.29/mysql-connector-java-5.1.29/mysql-connector-java-5.1.29-bin.jar libext/
执行下面的命令开始安装:
bin/oozie-setup.sh prepare-war
运行结果,示例如下:
setting CATALINA_OPTS=&$CATALINA_OPTS -Xmx1024m&
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/asm-3.2.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/aspectjrt-1.6.11.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/aspectjtools-1.6.11.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-beanutils-1.7.0.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-beanutils-core-1.8.0.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-cli-1.2.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-codec-1.4.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-collections-3.2.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-configuration-1.6.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-daemon-1.0.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-digester-1.8.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-el-1.0.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-httpclient-3.0.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-io-2.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-lang-2.4.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-logging-1.1.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-logging-api-1.0.4.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-math-2.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/commons-net-3.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/core-3.1.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/hadoop-ant-1.2.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/hadoop-capacity-scheduler-1.2.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/hadoop-client-1.2.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/hadoop-core-1.2.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/hadoop-examples-1.2.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/hadoop-fairscheduler-1.2.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/hadoop-minicluster-1.2.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/hadoop-test-1.2.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/hadoop-thriftfs-1.2.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/hadoop-tools-1.2.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/hsqldb-1.8.0.10.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/jackson-core-asl-1.8.8.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/jackson-mapper-asl-1.8.8.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/jasper-compiler-5.5.12.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/jasper-runtime-5.5.12.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/jdeb-0.8.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/jersey-core-1.8.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/jersey-json-1.8.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/jersey-server-1.8.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/jets3t-0.6.1.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/jetty-6.1.26.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/jetty-util-6.1.26.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/jsch-0.1.42.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/junit-4.5.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/kfs-0.2.2.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/log4j-1.2.15.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/mockito-all-1.8.5.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/mysql-connector-java-5.1.29-bin.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/oro-2.0.8.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/servlet-api-2.5-.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/slf4j-api-1.4.3.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/slf4j-log4j12-1.4.3.jar
INFO: Adding extension: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/libext/xmlenc-0.52.jar
New Oozie WAR file with added 'ExtJS library, JARs' at /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/oozie-server/webapps/oozie.war
INFO: Oozie is ready to be started
这样,上述已经生成了/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/oozie-server/webapps/oozie.war文件。
修改conf/oozie-site.xml配置文件,内容如下所示:
&property&
&name&oozie.service.JPAService.jdbc.driver&/name&
&value&com.mysql.jdbc.Driver&/value&
&description&
JDBC driver class.
&/description&
&/property&
&property&
&name&oozie.service.JPAService.jdbc.url&/name&
&value&jdbc:mysql://mysql-server:3306/oozie&/value&
&description&
&/description&
&/property&
&property&
&name&oozie.service.JPAService.jdbc.username&/name&
&value&shirdrn&/value&
&description&
DB user name.
&/description&
&/property&
&property&
&name&oozie.service.JPAService.jdbc.password&/name&
&value&0o21e&/value&
&description&
DB user password.
IMPORTANT: if password is emtpy leave a 1 space string, the service trims the value,
if empty Configuration assumes it is NULL.
&/description&
&/property&
默认情况下,Oozie的配置中有个配置项oozie.service.JPAService.create.db.schema,值为false,设置非自动创建数据库,我们保持默认设置,这样可以通过手动创建Oozie数据库,并对其进行权限控制。然后,我们在MySQL数据库中创建数据库,名称为oozie,并进行访问授权:
CREATE DATABASE
GRANT ALL ON oozie.* TO 'shirdrn'@'oozie-server' IDENTIFIED BY '0o21e';
FLUSH PRIVILEGES;
然后可以执行如下命令,生成Oozie所需要的数据表:
bin/ooziedb.sh create -sqlfile oozie.sql -run
查看控制台输出日志,没有报错,并且在当前目录下可以看到,同时也生成了oozie.sql脚本文件。到MySQL数据库中可以看到生成的表,说明上述操作执行成功。
下面可以启动Oozie,使用如下命令:
bin/oozied.sh start
启动信息,示例如下所示:
Setting OOZIE_HOME:
/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2
Setting OOZIE_CONFIG:
/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/conf
/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/conf/oozie-env.sh
setting CATALINA_OPTS=&$CATALINA_OPTS -Xmx1024m&
Setting OOZIE_CONFIG_FILE:
oozie-site.xml
Setting OOZIE_DATA:
/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/data
Setting OOZIE_LOG:
/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/logs
Setting OOZIE_LOG4J_FILE:
oozie-log4j.properties
Setting OOZIE_LOG4J_RELOAD:
Setting OOZIE_HTTP_HOSTNAME: oozie-server
Setting OOZIE_HTTP_PORT:
Setting OOZIE_ADMIN_PORT:
Setting OOZIE_HTTPS_PORT:
Setting OOZIE_BASE_URL:
http://oozie-server:11000/oozie
Setting CATALINA_BASE:
/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/oozie-server
Setting OOZIE_HTTPS_KEYSTORE_FILE:
/home/shirdrn/.keystore
Setting OOZIE_HTTPS_KEYSTORE_PASS:
Setting CATALINA_OUT:
/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/logs/catalina.out
Setting CATALINA_PID:
/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/oozie-server/temp/oozie.pid
CATALINA_OPTS:
-Xmx1024m -Dderby.stream.error.file=/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/logs/derby.log
Adding to CATALINA_OPTS:
-Doozie.home.dir=/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2 -Doozie.config.dir=/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/conf -Doozie.log.dir=/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/logs -Doozie.data.dir=/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/data -Doozie.config.file=oozie-site.xml -Doozie.log4j.file=oozie-log4j.properties -Doozie.log4j.reload=10 -Doozie.http.hostname=m1 -Doozie.admin.port=11001 -Doozie.http.port=11000 -Doozie.https.port=11443 -Doozie.base.url=http://m1:11000/oozie -Doozie.https.keystore.file=/home/shirdrn/.keystore -Doozie.https.keystore.pass=password -Djava.library.path=
Using CATALINA_BASE:
/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/oozie-server
Using CATALINA_HOME:
/home/shirdrn/cloud/programs/apache-tomcat-7.0.52
Using CATALINA_TMPDIR: /home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/oozie-server/temp
Using JRE_HOME:
/usr/java/jdk1.7.0_25/
Using CLASSPATH:
/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/oozie-server/bin/tomcat-juli.jar:/home/shirdrn/cloud/programs/apache-tomcat-7.0.52/bin/bootstrap.jar
Using CATALINA_PID:
/home/shirdrn/cloud/programs/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/oozie-server/temp/oozie.pid
从上面日志可以看到,Oozie管理控制台连接为,可以看到图形化界面。
整合Oozie和Hadoop
我们的Hadoop平台使用的是用户shirdrn,用户组为shirdrn,这里配置Hadoop代理用户也使用该用户,部署Oozie的主机名为oozie-server。修改Hadoop的配置文件core-site.xml,增加如下配置内容:
&!-- OOZIE --&
&property&
&name&hadoop.proxyuser.shirdrn.hosts&/name&
&value&oozie-server&/value&
&/property&
&property&
&name&hadoop.proxyuser.shirdrn.groups&/name&
&value&shirdrn&/value&
&/property&
修改完上述配置后,需要重新启动Hadoop集群才能生效。
安装Oozie Client
我们可以通过在外部的一个Oozie客户端去提交工作流任务,实际上就是一个客户端程序,通过与Oozie Server进行交互,提交任务,并由Oozie Server去调用执行。
我们可以回到前面解压缩Oozie发行包oozie-3.3.2.tar.gz的目录下,通过前面的构建,现在已经可以看到有一个client目录,该目录下就是Oozie的客户端相关文件。含有Oozie客户端脚本的路径,我这里为/home/shirdrn/cloud/programs/oozie-3.3.2/client/target/oozie-client-3.3.2-client/oozie-client-3.3.2。
查看Oozie客户端运行job的命令帮助信息,可以执行如下命令:
cd /home/shirdrn/cloud/programs/oozie-3.3.2/client/target/oozie-client-3.3.2-client/oozie-client-3.3.2
bin/oozie help
bin/oozie help job
我们可以找到,Oozie发行包中自带的examples,我这里对应的目录是/home/shirdrn/cloud/programs/oozie-3.3.2/examples/target/oozie-examples-3.3.2-examples/examples/apps,我们可以通过运行这些例子来验证安装是否成功。
首先,将Oozie自带的examples上传到HDFS上:
bin/hadoop fs -mkdir /oozie
bin/hadoop fs -copyFromLocal /home/shirdrn/cloud/programs/oozie-3.3.2/examples/target/oozie-examples-3.3.2-examples/examples /user/shirdrn/examples
我们拿examples中的map-reduce来进行验证,修改job.properties文件,配置内容如下所示:
nameNode=hdfs://m1:9000
jobTracker=m1:19830
queueName=default
examplesRoot=examples
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/map-reduce
outputDir=map-reduce
我的环境下,Namenode服务端口为hdfs://m1:9000,JobTracker为m1:19830,运行任务,执行如下命令:
cd /home/shirdrn/cloud/programs/oozie-3.3.2/client/target/oozie-client-3.3.2-client/oozie-client-3.3.2
bin/oozie job -oozie http://oozie-server:11000/oozie -config /home/shirdrn/cloud/programs/oozie-3.3.2/examples/target/oozie-examples-3.3.2-examples/examples/apps/map-reduce/job.properties -run
可以通过OozieWeb管理控制台查看提交运行的任务,如图所示:
以及,job配置,运行状态等信息,如图所示:
上面命令选项-run表示直接运行一个job,当然你可以使用其他选项,如-submit是提交job,-rerun是重新运行job,-suspend是挂起job等等,可以查看命令帮助,或参考相关文档。
简单之美,难得简单,享受简单的唯美。
原文地址:, 感谢原作者分享。
您可能感兴趣的代码

我要回帖

更多关于 oozie 定时任务 的文章

 

随机推荐