文档章节

Azkaban、Xxl-Job与Airflow对比分析

centychen
 centychen
发布于 04/30 17:48
字数 960
阅读 991
收藏 2

概述

Xxl-Job

简述

XXL-JOB是一个国内轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。基于Java技术栈,调度中心与执行器通信基于作者另一个开源项目xxl-rpc,采用自建注册中心,整体架构简单明了,易于上手。

xxl-job架构图

图片来源:http://www.xuxueli.com/xxl-job/#/?id=_533-架构图

项目地址

Github:xuxueli/xxl-job

Azkaban

简述

Azkaban为LinkedIn开源的分布式工作流调度框架,项目起源于解决Hadoop Jop依赖管理问题,但实际已经是一个通用的工作流调度框架,适用于不同业务场景。

image.png

图片来源:https://github.com/azkaban/azkaban/blob/master/docs/figures/azkaban2overviewdesign.png

项目地址

Github:azkaban/azkaban

Airflow

简述

Apache-Airflow 是Airbnb开源的一款数据流程工具,已经在Apache孵化成功,成为Apache的顶级项目。以非常灵活的方式来支持数据的ETL过程,同时还支持非常多的插件来完成诸如HDFS监控、邮件通知等功能。Airflow支持单机和分布式两种模式,支持Master-Slave模式,支持Mesos等资源调度,有非常好的扩展性。

Airflow架构图

图片来源:https://www.jianshu.com/p/2ecef979c606

项目地址

Github:apache/airflow

功能对比

功能 Xxl-job Azkaban Airflow
license GNU General Public License v3.0 Apache License, Version 2.0 Apache License, Version 2.0
调度模块 Quartz Quartz 自实现
调度中心HA 支持,基于Quartz集群实现 不支持 不支持
执行器HA 支持 支持 支持
业务耦合度 高,业务逻辑在执行器中实现 低,与实际业务无耦合。 低,与实际业务无耦合。
Job类型 Java Command、HadoopShell、Java、HadoopJava、Pig、Hive等,支持插件式扩展 Python、Bash、HTTP、Mysql等,支持Operator的自定义扩展。
Executor触发 RPC Restful Restful
工作流 无,可配置任务级联触发 支持,自定义DSL语法 支持,基于Python DAG
管理界面 简单但不美观,符合国人习惯,上手简单 简单,美观程度略胜于xxl-job,整体功能逻辑清晰,上手简单 该有的功能都有,但是就是让你用得不爽。
部署运维 简单 简单 较复杂,包括WebServer、Scheduler、Worker和Flower(可选,用于)
单点故障 Web Server存在单点故障风险 Scheduler存在单点故障风险。

总结分析

Xxl-Job、Azkaban与Airflow三者目标定位有所不同,Xxl-Job是一个轻量级分布式的任务调度框架,Azkaban则是为了解决Hadoop的任务依赖关系问题,而Airflow则是通用的批量数据处理。

Xxl-Job依赖于Xxl-Rpc,可以认为是一个微服务系统,调度中心是服务消费者,调度器是服务提供者,只是服务调用不是通过访问而是通过定时触发而已。

Azkaban重心则在工作流调度,通过DSL语法定义工作流,同时支持子工作流,子工作流可以在主工作流中调度,也可单独调度。

Airflow基于Dag也可以定义复杂的工作流,属于Python技术栈。 总体来说,如果是简单的定时任务调度,可以选择Xxl-Job,与主流Java框架Spring结合很好,上手简单快捷,功能够用;如果调度任务有明确的workflow,需要对workflow状态进行监控分析,则建议使用Azkaban,之所以不选择Airflow,是因为它的管理界面确实太不好用了。

© 著作权归作者所有

centychen
粉丝 40
博文 31
码字总数 30489
作品 0
广州
技术主管
私信 提问
基于Kubernetes的瓜子云的任务调度系统

很大的挑战。 接下来我讲详细介绍一下瓜子云的任务调度系统搭建所遇到的问题和解决方案。 需求 瓜子最早的时候,任务调度用的是Crontab,后来由于数据仓库的复杂调度需求,我们引入了Airflow...

店家小二
2018/12/14
0
0
Airflow在Kubernetes上的操作器

Airflow在Kubernetes (第一部分): 一种不同类型的Operator 作者: Daniel Imberman (Bloomberg LP) 译者:openthings,2019.02.26. 原文:https://kubernetes.io/blog/2018/06/28/airflow-on-......

openthings
2018/07/07
861
0
airflow单机版搭建记录——不使用mysql,redis

[toc] airflow单机版搭建记录 环境准备 Python(pip)——airflow由python编写 安装airflow pip install apache-airflow 环境变量配置 本人是在root用户下执行,可自行选择 export AIRFLOW_HOM...

helplove
07/03
125
0
airflow使用mysql数据库,LocalExecutor并发调度

mysql-airflow 在mysql上执行 create database airflow; —— 创建数据库 GRANT all privileges on airflow.* TO 'airflow'@'%' IDENTIFIED BY '123456'; —— 将数据库airflow的所有权限授权......

helplove
07/03
303
0
Airflow 中文文档:概念

Airflow Platform是用于描述,执行和监控工作流的工具。 核心理念 DAG的 在Airflow中, (或定向非循环图)是您要运行的所有任务的集合,以反映其关系和依赖关系的方式进行组织。 例如,一个...

ApacheCN_飞龙
2018/11/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

006-Sigle-基于blockstack去中心化博客

本篇文章主要讲解有关基于Blockstack的Sigle是一个去中心化的博客项目; 官网地址:https://www.sigle.io/ Github地址:https://github.com/pradel/sigle 页面展示: 介绍: A beautiful de...

Riverzhou
12分钟前
7
0
驰骋工作流引擎开发平台属性功能的隐藏显示介绍

关键字: 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 表单引擎 工作流功能说明 工作流设计 工作流快速开发平台 业务流程管理 bpm工作流系统 java工作流主流框架 自定义...

孟娟
13分钟前
5
0
MyBatis binding 模块分析

MyBatis binding 模块分析 binding功能代码所在包 org.apache.ibatis.binding binding模块作用 封装ibatis编程模型 ibatis编程模型中,SqlSession作为sql执行的入口,实用方法为sqlSession.se...

红妍落日
16分钟前
4
0
网易互娱的数据库选型和 TiDB 应用实践

作者介绍:李文杰,网易互娱计费组,高级数据库管理工程师,TiDB User Group Ambassador。 一、业务架构简介 计费组是为网易互娱产品提供统一登录和支付高效解决方案的公共支持部门,对内是互...

TiDB
22分钟前
4
0
Debezium接入Mysql遇到到的Tinyint坑

问题背景: 在Debezium做数据初始化的时候,对于一些tinyint字段的值,出现0,1的值的异常。 经过源码排查,数据在JDBC上面,读取到的数据是Boolean值。 通过排查,原来是MYSQL特有的数据问题...

吐槽的达达仔
31分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部