Oozie任务调度框架详解及使用简介(一)
摘要:个人最近一段时间一直在使用oozie,从刚开始的各种别扭到现在越来越觉得有意思的情况下,想整理一下关于oozie的认知,整理出来一个oozie系列,本来市面上关于oozie的资料就比较少,希望写完后能形成自己对oozie的独特理解和加强整体性的把握.
一.常见的调度框架
1.1.crontab定时器
linux自带定时器,没有web界面 ,不利于监控任务和调度任务,在工作量比较小的情况下,建议使用linux的crontab定时命令
##crongtab 命令
* * * * * 后面接调度 job 的命令
分 时 日 月 周
##简单实例(每天0点11分执行)
11 0 * * * /home/hduser/lubians/intelligentDevice/intelligentDevice.sh
1.2.Azkaban调度
开源项目,key/value配置对,操作简单,带web界面
1.3.Oozie调度
apache项目,xml配置文件,操作稍微有难度,带web查看界面,常用于hadoop相关任务的调度
二.使用背景
公司下半年技术架构升级,将整个大数据集群管理流程化,规模化,引入了更多的技术组件,这其中就有Oozie.
2.1. 之前使用的调度技术
在这之前公司使用的调度工具主要是TaskCtl和Kettle,TaskCtl分为三层,Manage,Server和Agent.
可以理解为将调度分层了.
TASKCTL主要可以完成串行、并行、依赖、互斥、执行计划、定时、容错、循环、条件分支、远程、负载均衡、自定义条件等各种不同的核心调度功能。
根据不同的功能分类,TASKCTL将客户端分为Admin(平台管理)、Designer(流程集成开发环境)、Monitor(流程监控管理)三套不同的软件。
Admi:平台节点管理、任务类型管理、工程管理、应用设置、全局变量管理以及流程导入导出等功能。
Designer:平台流程代码信息管理、代码设计编辑、流程图形编辑、规则语法适时检测功能以及编译发布等功能。
Monitor:图形方式监控、多角度统计监控、流程起停重置、任务锁定、任务重做、信息对象查询等。
2.2. 为什么使用Oozie
TaskCtl最大的问题是作为调度系统需要一台单独的调度服务器,并且和Hadoop生态圈的产品搭配不是很好,所以考虑另行办法在Hadoop集群上使用调度工具.
使用Oozie的原因是因为公司使用的是Ambari集群管理工具,自带Oozie插件安装,同时Oozie支持Java API调度,会在工作中用到Java语言的缘故,选择了Oozie.
三.Oozie介绍
3.1. Oozie是什么
oozie是一个workflow(工作流)协调系统,是由Cloudera公司贡献给Apache的,主要用来管理Hadoop作业(job).属于web应用程序,由oozie client和oozie server两个组件构成.
oozie server运行于java servlet容器(tomcat)中的web程序.
3.2. 为什么需要Oozie
①对于较为复杂的Hadoop作业系统来说,单纯的依靠shell脚本方式,手工方式调度是的流程更加难以控制.
②复杂系统的算法需要很多不同的作业(如mr,Java程序,shell脚本,hivesql,sqoop,spark等)按照特定的顺序,串行并行,不同时间,不同条件进行执行,就需要oozie这样的调度系统做支撑,将复杂问题简单化.
3.3. oozie能带来什么
①将hadoop生态系统中常见的mr任务启动,hdfs操作,shell调度,hive操作等通过统一的方式进行连贯调度.
②将复杂的依赖关系,时间触发,事件触发使用xml语言进行表达,提高开发效率.
③一组任务使用一个DAG(有向无环图)来表示,图形化的表达,流程逻辑更加清晰.
④支持很多种任务调度,能完成大部分的hadoop任务处理.
⑤程序定义支持EL常量和函数,写过shell脚本的小伙伴使用根本没难度.
四.Oozie架构图
在网上找了一个oozie架构图,如下:
oozie包含四大服务组件:
workflow: 用于支持动作有向无环图(DAG)的设计和执行,可以按照特定的顺序执行mr,hive和shell等节点.
coordinator: 用于定时调度特定的 workflow 进行执行,可以基于事件,资源存在,传递参数等自动执行.
bundle: 批量设定一组coordinator执行.
SLA(Service Level Agreement, oozie服务器等级协定): 用于程序执行过程的日志跟踪.
4.1.Oozie简易架构
如上图,oozie调度本身就是一个mr程序,开始,执行,结束或者失败,简单易懂.
所以我们可以思考一下,在oozie调度mr程序时,其实同一时间是运行了两个mr的,一个是调度本身,一个是任务.
4.2.一个有向无环图
任务本身是一个有向无环图(DAG)
图中fork标签后面的 MR job 和 Hive job 是并行执行的,都成功后通过 join 节点合并.
4.3.coordinator生命周期
coordinator是一个定时服务,通过定时来固定频率的执行任务,这里的功能类似crontab.
4.4.bundle Job
bundle的作用就是设定多个coordinator定时服务按批次执行,这样使得多个任务也形成一个DAG.
五.Oozie的安装与配置
5.1.Oozie的安装方式
单独安装: 需要安装server端和client端
组件安装: 使用Ambari进行oozie组件添加(可以使用HA)
注意:如果使用CDH集群管理工具,也是一键配置,因为我是直接组件式安装,这里就不细讲了,有需要的小伙伴可以联系我,看情况写一下ambari配置oozie.
5.2.Oozie配置
节点内存配置:
这里的节点内存配置可能会涉及到oozie调度阻塞的问题,这个在之后有时间整理一下整个问题现象以及解决办法,这里就看一下
#(节点并发),决定了你可以同时执行几个action
oozie.service.callablequeueservice.callable.concurrency
#(队列大小)
oozie.service.callablequeueservice.queue.size
#(扩展)一些扩展相关
oozie.service.ActionService.executor.ext.classes
5.3.oozie元数据更改
ambari配置oozie元数据
Ambari默认数据库为Derby.
我们配置时,无特殊需求情况下,一般默认选择mysql
选择数据库类型,库名,用户名,url连接串,驱动,密码
测试连接成功即可.
5.4.ext2.2添加
进入oozie文件夹
将ext-2.2.tar.gz解压放到./libext/ext-2.2目录下
5.5.第三方jar包添加
- 运行时的共享目录(在HDFS下)
- libserver目录
- libtools目录
六.Oozie管理
6.1.Oozie管理Web界面
这里有时候会出现oozieUI界面无法访问问题,之后更新一篇文章,简单说明一下.
6.2.oozie使用
- 任务列表查看
- 任务状态查看
- 流程返回信息
- 节点信息查看
- 流程图信息
- 日志查看
- 系统信息查看和配置
6.3.状态识别
状态 | 含义说明 |
---|---|
PREP | 一个工作流Job第一次创建将处于PREP状态,表示工作流Job已经定义,但是没有运行。 |
RUNNING | 当一个已经被创建的工作流Job开始执行的时候,就处于RUNNING状态。它不会达到结束状态,只能因为出错而结束,或者被挂起。 |
SUSPENDED | 一个RUNNING状态的工作流Job会变成SUSPENDED状态,而且它会一直处于该状态,除非这个工作流Job被重新开始执行或者被杀死。 |
SUCCEEDED | 当一个RUNNING状态的工作流Job到达了end节点,它就变成了SUCCEEDED最终完成状态。 |
KILLED | 当一个工作流Job处于被创建后的状态,或者处于RUNNING、SUSPENDED状态时,被杀死,则工作流Job的状态变为KILLED状态。 |
FAILED | 当一个工作流Job不可预期的错误失败而终止,就会变成FAILED状态。 |
我是鲁边, 2020 peace and love
别惊讶,今年的主题就是爱与和平,但愿我能一直用下去...
按例按例,我的个人公众号:鲁边社,欢迎关注
Oozie任务调度框架详解及使用简介(一)的更多相关文章
- iOS 开发之照片框架详解
转载自:http://kayosite.com/ios-development-and-detail-of-photo-framework.html 一. 概要 在 iOS 设备中,照片和视频是相当重 ...
- hadoop框架详解
Hadoop框架详解 Hadoop项目主要包括以下四个模块 ◆ Hadoop Common: 为其他Hadoop模块提供基础设施 ◆ Hadoop HDFS: 一个高可靠.高吞吐量的分布式文件系统 ◆ ...
- jQuery Validate验证框架详解
转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...
- mina框架详解
转:http://blog.csdn.net/w13770269691/article/details/8614584 mina框架详解 分类: web2013-02-26 17:13 12651人 ...
- lombok+slf4j+logback SLF4J和Logback日志框架详解
maven 包依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lomb ...
- [Cocoa]深入浅出 Cocoa 之 Core Data(1)- 框架详解
Core data 是 Cocoa 中处理数据,绑定数据的关键特性,其重要性不言而喻,但也比较复杂.Core Data 相关的类比较多,初学者往往不太容易弄懂.计划用三个教程来讲解这一部分: 框架详解 ...
- iOS 开发之照片框架详解(2)
一. 概况 本文接着 iOS 开发之照片框架详解,侧重介绍在前文中简单介绍过的 PhotoKit 及其与 ALAssetLibrary 的差异,以及如何基于 PhotoKit 与 AlAssetLib ...
- Quartz.NET作业调度框架详解
Quartz.NET作业调度框架详解 http://www.cnblogs.com/lmule/archive/2010/08/28/1811042.html
- mapreduce框架详解
hadoop 学习笔记:mapreduce框架详解 开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感 ...
随机推荐
- [转]cron表达式的用法
cron表达式通过特定的规则指定时间,用于定时任务,本文简单记录它的部分语法和实例,并不完全,能覆盖日常大部分需求. 1. 整体结构 cron表达式是一个字符串,分为6或7个域,每两个域之间用空格分隔 ...
- vue 生成 二维码 qrCode 插件 使用 方法
首先安装方法:(--save 参数会改变package.json 推荐使用 下次直接install就行了) npm install --save qrcode 然后项目使用: import QRCod ...
- Python--day30--网络基础
单波: 查找mac:
- Codeforces Round #177 (Div. 1 + Div. 2)
A. Polo the Penguin and Segments 模拟. B. Polo the Penguin and Matrix 每个数字模d余数必须一样. 枚举结果,可计算操作次数,取最小. ...
- java 内存操作流
操作内存流的时候(从读取出来,注意一定要把真正的数据用toByteArray或者toCharArray将数据读出来) 之前的文件操作流是以文件的输入输出为主的,当输出的位置变成了内存,那么就称为内存操 ...
- P1001 A+B+C Problem
题目描述 输入三个整数 \(a,b,c\) ,计算它们的和并将结果输出. 输入格式 输入一行,三个整数 \(a,b,c\) ,每个整数之间以一个空格隔开 \((0 \le a,b,c \le 1000 ...
- win2d 通过 CanvasActiveLayer 画出透明度和裁剪
本文告诉大家如果在 UWP 的 win2d 通过 CanvasActiveLayer 创建一层,在这里画出的图片有透明度或者裁剪 在 win2d 如果需要对某个元素裁剪,可以使用很多方法,本文只是告诉 ...
- centos虚拟机Ping不通网关
centos虚拟机Ping不通网关 今天在VMware中安装了centos mini版本,安装完成后,用xshell连接一直连不上,本来以为是mini版本没有安装ssh server,于是就用命令: ...
- 微信小程序 image图片组件实现宽度固定 高度自适应
给img的mode设置值 注1:image组件默认宽度300px.高度225px 注2:image组件中二维码/小程序码图片不支持长按识别.仅在wx.previewImage中支持长按识别. mode ...
- C++ windows客户端支持SSL双向认证
C++ windows客户端支持SSL双向认证,服务端是JAVA开发的,使用的证书是jks格式的.C++并不支持JKS格式的证书,所以要用openssl进行转换下. 1. 需要先把jks转成.p12文 ...