Oozie介绍
1. Hadoop常见调度框架:
(1)Linux Crontab:
Linux自带的任务调度计划,在任务比较少的情况下,可以使用这种方式,直接执行脚本,例如添加一个执行计划: 0 12 * hive -f xxx.sql
(2)Azkaban:
(3)Oozie:Cloudera公司开源
(4)Zeus:阿里开源。
Oozie是管理Hadoop作业的工作流调度系统。Oozie定义了控制流节点和动作节点。Oozie实现的功能:
(1)Workflow:顺序执行流程节点;
(2)Coordinator:定时触发workflow;
(3)Bundle Job:绑定多个Coordinator。
Work Flow流程图:
Coordinator生命周期:
Bundle:
2. Oozie安装:
Oozie不需要设置OOZIE_HOME环境变量(系统自行计算),推荐使用单独的用户(而不是root)来安装Oozie。
1.编译源码,解压压缩包:
如果需要对Oozie个性化修改,可以自行修改源代码并编译,这里我直接使用官网编译好的版本oozie-4.0.0-cdh5.3.6.tar.gz:
$ tar zxf oozie-4.0.0-cdh5.3.6.tar.gz -C /opt/modules/
以下配置添加到core-site.xml文件(使用用户和hostname替换文档中内容):
$HADOOP_HOME/etc/hadoop/core-site.xml:
<!-- OOZIE -->
<property>
<name>hadoop.proxyuser.natty.hosts</name>
<value>hadoop-senior01.pmpa.com</value>
</property>
<property>
<name>hadoop.proxyuser.natty.groups</name>
<value>*</value>
</property>
修改oozie配置文件,$OOZIE_HOME/conf/oozie-site.xml:
<property>
<name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
<value>*=/opt/modules/hadoop-2.5.0-cdh5.3.6/etc/hadoop</value>
<description>
Comma separated AUTHORITY=HADOOP_CONF_DIR, where AUTHORITY is the HOST:PORT of
the Hadoop service (JobTracker, HDFS). The wildcard '*' configuration is
used when there is no exact match for an authority. The HADOOP_CONF_DIR contains
the relevant Hadoop *-site.xml files. If the path is relative is looked within
the Oozie configuration directory; though the path can be absolute (i.e. to point
to Hadoop client conf/ directories in the local filesystem.
</description>
</property>
在解压oozie二进制发行包的目录,解压hadooplibs发行包,也就是oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz
$ tar zxf oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz -C /opt/modules/
这样,oozie的安装目录多了一个hadooplibs目录。
2.详细配置:
启动应该使用oozied.sh脚本,并添加,start、stop、run等参数。
在oozie的解压目录下创建libext目录。并将hadooplibs下的jar包拷贝到这个目录里,需要注意的是hadooplibs目录下有个文件夹hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6,hadooplib-2.5.0-mr1-cdh5.3.6.oozie-4.0.0-cdh5.3.6;后者对应于mapreduce1,所以我们拷贝第一个文件夹下的jar包即可。
拷贝extjs的压缩包到libext目录。
$ mkdir libext
$ cp hadooplibs/hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6/* libext/
$ cp ext-2.2.zip /opt/modules/oozie-4.0.0-cdh5.3.6/libext/
安装mysql数据库,并生成相关表(oozie是一个web系统,需要自己的知识库),所以,我们需要mysql connector驱动包,拷贝到$oozie_home/libext下。
$ cp mysql-connector-java-5.1.27-bin.jar /opt/modules/oozie-4.0.0-cdh5.3.6/libext/
(1)生成mysql数据表(oozie所需要的)。
我们可以使用 bin/oozie-setup.sh命令的“db create”参数,来操作mysql数据库创建相应的库和表。但在使用这个命令前,需要先给oozie关联上mysql。下面先做关联操作:
修改oozie的配置文件($oozie_home/conf/oozie-site.xml),配置driver、url、username、password:
<!-- Oozie Related Mysql -->
<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://hadoop-senior01.pmpa.com:3306/oozie?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>oozie.service.JPAService.jdbc.username</name>
<value>root</value>
</property>
<property>
<name>oozie.service.JPAService.jdbc.password</name>
<value>123456</value>
</property>
(2)关联好mysql之后,通过脚本创建mysql的库表:
$ bin/oozie-setup.sh db create -run oozie.sql
执行成功之后,登陆到mysql验证数据库表的创建情况:
mysql> show tables;
+------------------------+
| Tables_in_oozie |
+------------------------+
| BUNDLE_ACTIONS |
| BUNDLE_JOBS |
| COORD_ACTIONS |
| COORD_JOBS |
| OOZIE_SYS |
| OPENJPA_SEQUENCE_TABLE |
| SLA_EVENTS |
| SLA_REGISTRATION |
| SLA_SUMMARY |
| VALIDATE_CONN |
| WF_ACTIONS |
| WF_JOBS |
+------------------------+
12 rows in set (0.00 sec)
(3)下面生成war包,供tomcat访问:
$ bin/oozie-setup.sh prepare-war
命令执行成功后,会提示war包已经生成在webapps目录下:New Oozie WAR file with added 'ExtJS library, JARs' at /opt/modules/oozie-4.0.0-cdh5.3.6/oozie-server/webapps/oozie.war
(4)上传sharelib压缩包到HDFS上:
在$oozie_home下,有2个sharelib压缩包,分别是oozie-sharelib-4.0.0-cdh5.3.6.tar.gz 和 oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz,很明显,我们必须拷贝第二个带yarn的压缩包(前边的是1.0版本的,不带yarn的)。
$ bin/oozie-setup.sh sharelib create -fs hdfs://hadoop-senior01.pmpa.com:8020 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
3.启动oozie和测试:
启动oozie,使用oozied.sh脚本。
$ bin/oozied.sh start
启动后,访问网址http://hadoop-senior01.pmpa.com:11000/oozie/
可以看到oozie的主页面:
3. Oozie测试和使用:
1.执行官方example实例:
Oozie官方提供了一个样例包,我们后边的开发都以这个example实例为模板进行。解压Oozie主目录下的example包:
$ tar zxf oozie-examples.tar.gz
$ cd examples/apps
apps目录下存放了我们需要配置的作业内容。
在目录中可以看到,有关于map-reduce、sqoop、hive等很多类型的作业的配置的实例。下面,我以map-reduce作业为例来说明,oozie作业的配置方法。在map-reduce目录中有三个重要的内容:
(1)job.properties:定义job相关的属性,比如输入输出目录、namenode节点等。定义了workflow.xml文件的位置。
(2)workflow.xml:定义工作流相关的配置,start 、 end 、kill等
(3)lib文件夹:存放job任务需要的jar包。
注意:配置作业需要修改job.properties和workflow.xml两个文件。
配置job.properties:
nameNode=hdfs://hadoop-senior01.pmpa.com:8020
jobTracker=hadoop-senior02.pmpa.com:8032
queueName=default
examplesRoot=examples
user.name=natty
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/map-reduce/workflow.xml
outputDir=map-reduce
jobTracker配置的是ResourceManager的端口。需要一定注意,我们的ResourceManager配置在senior02主机上,并且端口是8032(不是8088,8088端口是web界面查看的端口)
配置workflow.xml:
<workflow-app xmlns="uri:oozie:workflow:0.2" name="map-reduce-wf">
<start to="mr-node"/>
<action name="mr-node">
<map-reduce>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<prepare>
<delete path="${nameNode}/user/natty/${examplesRoot}/output-data/${outputDir}"/>
</prepare>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
<property>
<name>mapred.mapper.class</name>
<value>org.apache.oozie.example.SampleMapper</value>
</property>
<property>
<name>mapred.reducer.class</name>
<value>org.apache.oozie.example.SampleReducer</value>
</property>
<property>
<name>mapred.map.tasks</name>
<value>1</value>
</property>
<property>
<name>mapred.input.dir</name>
<value>/user/natty/${examplesRoot}/input-data/text</value>
</property>
<property>
<name>mapred.output.dir</name>
<value>/user/natty/${examplesRoot}/output-data/${outputDir}</value>
</property>
</configuration>
</map-reduce>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
上传examples目录到 HDFS的/user/natty/路径。
$ /opt/modules/hadoop-2.5.0-cdh5.3.6/bin/hdfs dfs -put examples/ /user/natty/
运行example应用:
$ bin/oozie job -oozie http://hadoop-senior01.pmpa.com:11000/oozie -config examples/apps/map-reduce/job.properties -run
杀掉job:
$ bin/oozie job -oozie http://hadoop-senior01.pmpa.com:11000/oozie -kill 0000000-170423000216782-oozie-natt-W
请注意,在执行应用前,要保证oozie是启动状态的。
参考:
Oozie介绍的更多相关文章
- hadoop生态圈介绍
原文地址:大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分 ...
- Oozie 快速入门
设想一下,当你的系统引入了spark或者hadoop以后,基于Spark和Hadoop已经做了一些任务,比如一连串的Map Reduce任务,但是他们之间彼此右前后依赖的顺序,因此你必须要等一个任务执 ...
- 大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
Technorati 标记: hadoop,生态圈,ecosystem,yarn,spark,入门 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用 ...
- kettle、Oozie、camus、gobblin
kettle简介 http://www.cnblogs.com/limengqiang/archive/2013/01/16/KettleApply1.html Oozie介绍 http://blog ...
- Oozie任务调度框架详解及使用简介(一)
摘要:个人最近一段时间一直在使用oozie,从刚开始的各种别扭到现在越来越觉得有意思的情况下,想整理一下关于oozie的认知,整理出来一个oozie系列,本来市面上关于oozie的资料就比较少,希望写 ...
- 【】Hadoop生态圈介绍
Technorati 标记: hadoop,生态圈,ecosystem,yarn,spark,入门 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用 ...
- 基于Hadoop技术实现的离线电商分析平台(Flume、Hadoop、Hbase、SpringMVC、highcharts)
离线数据分析平台是一种利用hadoop集群开发工具的一种方式,主要作用是帮助公司对网站的应用有一个比较好的了解.尤其是在电商.旅游.银行.证券.游戏等领域有非常广泛,因为这些领域对数据和用户的特性把握 ...
- hadoop学习之旅2
集群搭建文档1.0版本 1. 集群规划 所有需要用到的软件: 链接:http://pan.baidu.com/s/1jIlAz2Y 密码:kyxl 2.0 系统安装 2.1 主机名配置 vi /etc ...
- 大数据技术之_14_Oozie学习_Oozie 的简介+Oozie 的功能模块介绍+Oozie 的部署+Oozie 的使用案列
第1章 Oozie 的简介第2章 Oozie 的功能模块介绍2.1 模块2.2 常用节点第3章 Oozie 的部署3.1 部署 Hadoop(CDH版本的)3.1.1 解压缩 CDH 版本的 hado ...
随机推荐
- 双足步行机器人的ZMP与CoP检测
静态步行与动态步行 机器人步态分为静态步行和动态步行.当机器人做静态步行运动时,身体的各个部分运动速度很小,机器人的整体稳定性较易控制.静态步行稳定性采用机器人的重心地面投影点(Center of G ...
- 利用XAMPP搭建PHP开发环境,解决443端口被占用
为了方便,作为学习使用的PHP环境,我们可以直接使用Apache+mysql+php集成开发环境.这样的集成软件有appserv和xampp,这里我们以xampp为例. 首先下载xampp软件,下载地 ...
- 微软的在线文档存储OneDrive使用帮助
onedrive默认空间5G,对于一般的文档存储够用的,很方便不限速!!! ###官方介绍 https://support.office.com/zh-cn/article/%E4%BA%86%E8% ...
- C++ 11保留小数点的四舍五入方案
当然,C++ 11提供各类型的std::round来四舍五入,但是没有一个能直接支持保留小数点位数的四舍五入方案. 所以需要通过setprecision来实现: #include <iomani ...
- 监听textarea文本框文本输入情况
// When the value of the text area changes... $("textarea").on("input", function ...
- Mysql分页之limit用法与limit优化
Mysql limit分页语句用法 与Oracle和MS SqlServer相比,mysql的分页方法简单的让人想哭. --语法: SELECT * FROM table LIMIT [offset, ...
- Easyui入门视频教程 第07集---Accordion的使用
Accordion 是一个 收缩的组件 类似挂历的 百度了一下 意思是 accordion 英[əˈkɔ:diən] 美[əˈkɔrdiən] n. 手风琴 adj. 可折叠的 他就是 一个折叠的 很 ...
- 比较JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket
2009-06-23 Java Web层框架--JSF.Spring MVC.Stripes.Struts 2.Tapestry和Wicket他们各自的优点和缺点: JSF 优点: ◆Java EE标 ...
- hihocoder第233周
题目链接 题目描述 给定一个数组a[N],N小于1e5.把数组划分成若干个片段,每个片段的和都不为0,问有多少种划分方法? 方法描述 定义f(i)表示0~i共有多少种划分方式,则$f(j)=\sum_ ...
- rsync配置及优化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...