一、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 应采用主从模式进行备份和容错。这种模式下 webServerexecutorServer 在不同进程中运行,彼此之间互不影响,适合用于生产环境。
  • 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。

更多大数据系列文章可以参见 GitHub 开源项目大数据入门指南

转载于:https://www.cnblogs.com/heibaiying/p/11441362.html

Azkaban 简介相关推荐

  1. azkaban简介及azkaban部署、原理和使用介绍

    azkaban简介及azkaban部署.原理和使用介绍 azkaban简介 ​ Azkaban是一套简单的任务调度服务,整体包括三部分webserver.dbserver.executorserver ...

  2. Azkaban简介与使用

    一.Azkaban简介 Azkaban是由Linkedin开源的一个批量工作流任务调度器.用于在一个工作流内以一个特定的顺序运行一组工作和流程.Azkaban定义了一种KV文件格式来建立任务之间的依赖 ...

  3. Azkaban简介及安装教程

    前言: 最近在实际工作中玩到了Azkaban,虽然之前有简单的接触,但是真正用到的时候,才能体会到这个工具的实用性有多强.下面就写个系列文章来记录下azkaban从简介及安装配置再到简单使用的一个过程 ...

  4. Azkaban简介和使用

    概述 为什么需要工作流调度系统 l 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序.hive脚本等 l 各任务单元之间存在时间先后及前后依 ...

  5. Azkaban简介及使用

    一.Azkaban概述Azkaban是一个分布式工作流管理器,在LinkedIn上实现,以解决Hadoop作业依赖性问题.我们有需要按顺序运行的工作,从ETL工作到数据分析产品.特点:1)给用户提供了 ...

  6. Azkaban入门(启动一个Simple Example)

    Azkaban简介 azkaban是一个开源的任务调度系统 Azkaban是一套简单的任务调度服务,整体包括三部分webserver.dbserver.executorserver. 开发语言为Jav ...

  7. 数据调度组件:基于Azkaban协调时序任务执行

    一.Azkaban概述 1.任务时序 在数据服务的业务场景中,很常见的业务流程就是日志文件经过大数据分析,再向业务输出结果数据:在该过程中会有很多任务需要执行,并且很难精准把握任务执行的结束时间,但是 ...

  8. Azkaban的囚徒——Azkaban安装和介绍

    文章目录 Azkaban简介 Azkaban安装 Azkaban配置 azkaban.properties azkaban-users.xml Azkaban简介 为什么需要工作流调度器? 1.一个完 ...

  9. Azkaban入门简介

    体系架构 - WebServer :暴露Restful API,提供分发作业和调度作业功能: - ExecServer :对WebServer 暴露 API ,提供执行作业的功能: - MySQL : ...

最新文章

  1. python while循环语句-Python中的while循环语句怎么用?
  2. jquery学习资源
  3. TabLayout让Fragment在ViewPager中的滑动切换更优雅
  4. Android SDK安装与环境配置
  5. 移动Web—CSS为Retina屏幕替换更高质量的图片
  6. 《计算复杂性:现代方法》——第0章 记 号 约 定 0.1 对象的字符串表示
  7. 公司里面用的iTextSharp(教程)---关于PDF的属性设置
  8. 视频播放器+控制器--封装
  9. 我的2017OKR - 年中回顾
  10. 驱动人生安装驱动计算机无法启动,驱动人生解决声卡驱动问题 驱动人生针对电脑不出声解决方案...
  11. 罗技鼠标 903 底部按键是干嘛的,板载模式
  12. C语言 摄氏度与华氏度转换
  13. Exchange2013中POP3和IMAP4
  14. 团队组成五个基本要素_团队构成的五大要素
  15. python爬取选股宝(https://xuangubao.cn)之二度尝试
  16. java 生成csv文件_Java生成CSV文件实例详解
  17. python基于flask_sockets实现WebSocket
  18. Frida Internal - Part 1: 架构、Gum 与 V8
  19. YOLOv3源码解析2-数据预处理Dataset()
  20. geek_询问How-To Geek:如何监视带宽使用情况?

热门文章

  1. Golang 实现依赖注入
  2. 启发式算法和元启发式算法
  3. 解决APP抓包问题「网络安全」
  4. Buuctf Exec
  5. 【个人建站心得】wordpress页面真正静态化插件really static
  6. 放大格局,放小自己 |【常垒·常识】
  7. 抓取前程无忧51job海量信息进行数据分析并进行可视化
  8. 全球区块链(智媒链)技术交流暨中国社区成立大会圆满结束
  9. 数组名不代表首元素地址的两种例外情况
  10. python mail解决Envolope sender mismatch with header from..(新浪邮箱 )