Azkaban学习之路(一)—— Azkaban 简介
一、Azkaban 介绍
1.1 背景
一个完整的大数据分析系统,必然由很多任务单元(如数据收集、数据清洗、数据存储、数据分析等)组成,所有的任务单元及其之间的依赖关系组成了复杂的工作流。复杂的工作流管理涉及到很多问题:
- 如何定时调度某个任务?
- 如何在某个任务执行完成后再去执行另一个任务?
- 如何在任务失败时候发出预警?
- …
面对这些问题,工作流调度系统应运而生。Azkaban就是其中之一。
1.2 功能
Azkaban产生于LinkedIn,并经过多年生产环境的检验,它具备以下功能:
- 兼容任何版本的Hadoop
- 易于使用的Web UI
- 可以使用简单的Web页面进行工作流上传
- 支持按项目进行独立管理
- 定时任务调度
- 模块化和可插入
- 身份验证和授权
- 跟踪用户操作
- 支持失败和成功的电子邮件提醒
- SLA警报和自动查杀失败任务
- 重试失败的任务
Azkaban的设计理念是在保证功能实现的基础上兼顾易用性,其页面风格清晰明朗,下面是其WEB UI界面:

二、Azkaban 和 Oozie
Azkaban 和 Oozie 都是目前使用最为广泛的工作流调度程序,其主要区别如下:
功能对比
- 两者均可以调度Linux命令、MapReduce、Spark、Pig、Java、Hive等工作流任务;
- 两者均可以定时执行工作流任务。
工作流定义
- Azkaban使用Properties(Flow 1.0)和YAML(Flow 2.0)文件定义工作流;
- Oozie使用Hadoop流程定义语言(hadoop process defination language,HPDL)来描述工作流,HPDL是一种XML流程定义语言。
资源管理
- Azkaban有较严格的权限控制,如用户对工作流进行读/写/执行等操作;
- Oozie暂无严格的权限控制。
运行模式
- Azkaban 3.x 提供了两种运行模式:
- solo server model(单服务模式) :元数据默认存放在内置的H2数据库(可以修改为MySQL),该模式中
webServer
(管理服务器)和executorServer
(执行服务器)运行在同一个进程中,进程名是AzkabanSingleServer
。该模式适用于小规模工作流的调度。 - multiple-executor(分布式多服务模式) :存放元数据的数据库为MySQL,MySQL应采用主从模式进行备份和容错。这种模式下
webServer
和executorServer
在不同进程中运行,彼此之间互不影响,适合用于生产环境。
- solo server model(单服务模式) :元数据默认存放在内置的H2数据库(可以修改为MySQL),该模式中
- Oozie使用Tomcat等Web容器来展示Web页面,默认使用derby存储工作流的元数据,由于derby过于轻量,实际使用中通常用MySQL代替。
三、总结
如果你的工作流不是特别复杂,推荐使用轻量级的Azkaban,主要有以下原因:
- 安装方面:Azkaban 3.0 之前都是提供安装包的,直接解压部署即可。Azkaban 3.0 之后的版本需要编译,这个编译是基于gradle的,自动化程度比较高;
- 页面设计:所有任务的依赖关系、执行结果、执行日志都可以从界面上直观查看到;
- 配置方面:Azkaban Flow 1.0 基于Properties文件来定义工作流,这个时候的限制可能会多一点。但是在Flow 2.0 就支持了YARM。YARM语法更加灵活简单,著名的微服务框架Spring Boot就采用的YAML代替了繁重的XML。
Azkaban学习之路(一)—— Azkaban 简介的更多相关文章
- Azkaban学习之路 (二)Azkaban的安装
安装过程 1.软件介绍 Azkaban Web 服务器:azkaban-web-server-2.5.0.tar.gz Azkaban Excutor 执行服务器:azkaban-executor-s ...
- Azkaban学习之路(四)—— Azkaban Flow 2.0的使用
一.Flow 2.0 简介 1.1 Flow 2.0 的产生 Azkaban 目前同时支持 Flow 1.0 和 Flow2.0 ,但是官方文档上更推荐使用Flow 2.0,因为Flow 1.0会在将 ...
- Azkaban学习之路(三)—— Azkaban Flow 1.0 的使用
一.简介 Azkaban主要通过界面上传配置文件来进行任务的调度.它有两个重要的概念: Job: 你需要执行的调度任务: Flow:一个获取多个Job及它们之间的依赖关系所组成的图表叫做Flow. 目 ...
- Azkaban学习之路 (三)Azkaban的使用
界面介绍 首页有四个菜单 projects:最重要的部分,创建一个工程,所有flows将在工程中运行. scheduling:显示定时任务 executing:显示当前运行的任务 history:显示 ...
- Azkaban学习之路 (一)Azkaban的基础介绍
一.为什么需要工作流调度器 1.一个完整的数据分析系统通常都是由大量任务单元组成: shell 脚本程序,java 程序,mapreduce 程序.hive 脚本等 2.各任务单元之间存在时间先后及前 ...
- Azkaban学习之路(二)—— Azkaban 3.x 编译及部署
一.Azkaban 源码编译 1.1 下载并解压 Azkaban 在3.0版本之后就不提供对应的安装包,需要自己下载源码进行编译. 下载所需版本的源码,Azkaban的源码托管在GitHub上,地址为 ...
- python学习之路-1 python简介及安装方法
python简介 一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. 目前最新版本为3.5.1,发布于2015年12月07日 ...
- GIT学习之路第一天 简介及其安装
本文参考廖雪峰老师的博客进行总结,完整学习请转廖雪峰博客 Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git有什么特点?简单来说就是:高端大气上档次! 那什么是版本控制 ...
- Sass学习之路(1)——Sass简介
Sass是CSS的一种预处理器语言,类似的语言还有Less,Stylus等. 那么什么是CSS预处理器? CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些 ...
随机推荐
- 对偶空间(dual linear space)
1. 定义 设 V 为定义在数域 F 上的向量空间,定义 V 上的线性函数是从 V 到 F 的映射:f:V→F,且满足 ∀x,y∈V,k∈F 有:f(x+y)=f(x)+f(y),f(ka)=kf(a ...
- c#开发移动APP-Xamarin入门剖析
原文:c#开发移动APP-Xamarin入门剖析 剖析应用程序 Phoneword这个项目是.net标准库项目,它包含所有的共享代码和共享UI. Phoneword.Android这个项目包含Andr ...
- WPF-WPF BitmapEffect (按钮凹凸效果)
原文:WPF-WPF BitmapEffect (按钮凹凸效果) BitmapEffect位图效果是简单的像素处理操作.它可以呈现下面几种特殊效果. BevelBitmapE ...
- Unity3d基础组件 (Component) 和脚本 (Script) 关系
原版的:http://edu.china.unity3d.com/learning_document/getData?file=/Manual/TheComponent-ScriptRelations ...
- 嵌入式开发(*(volatile unsigned long *)) 认识
一个.说明 (*(volatile unsigned long *)) 这个语句对于不同的计算机体系结构,设备可能是port映射,也可能是内存映射的. 假设系统结构支持独立的IO地址空间.而且是por ...
- Spring MVC专题
Spring从3.1版本开始增加了ConfigurableEnvironment和PropertySource: ConfigurableEnvironment Spring的ApplicationC ...
- Emgu-WPF学习使用-阈值化
原文:Emgu-WPF学习使用-阈值化 环境:Win8 64位 Vs2015 Emgu 版本:emgucv-windesktop 3.2.0.2682 上图为常用阈值化处理效果.不同阈值设置可呈现不同 ...
- WPF编游戏系列 之二 图标效果
原文:WPF编游戏系列 之二 图标效果 本篇将要实现图标的两个效果:1. 显示图标标签,2. 图标模糊效果.在上一篇中提到Image没有HTML <img>的Title属性( ...
- jquery ready和window onload区别
window onload是指标签加载完成,并且标签资源加载完成: jquery ready是指标签加载完成,标签资源可能未加载完成 $(document).ready(function(){});= ...
- WPF中任意Object的XAML代码格式化输出
原文:WPF中任意Object的XAML代码格式化输出 有时候,我们需要将WPF中的控件自身的XAML代码输出成文本,那么,我们可以使用System.Windows.Markup.XamlWriter ...