Azkaban、Xxl-Job与Airflow对比分析
概述
Xxl-Job
简述
XXL-JOB是一个国内轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。基于Java技术栈,调度中心与执行器通信基于作者另一个开源项目xxl-rpc,采用自建注册中心,整体架构简单明了,易于上手。
图片来源:http://www.xuxueli.com/xxl-job/#/?id=_533-架构图
项目地址
Github:xuxueli/xxl-job
Azkaban
简述
Azkaban为LinkedIn开源的分布式工作流调度框架,项目起源于解决Hadoop Jop依赖管理问题,但实际已经是一个通用的工作流调度框架,适用于不同业务场景。
图片来源: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等资源调度,有非常好的扩展性。
图片来源: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,是因为它的管理界面确实太不好用了。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
TensorFlow 2.0+Keras 防坑指南
TensorFlow 2.0是对1.x版本做了一次大的瘦身,Eager Execution默认开启,并且使用Keras作为默认高级API, 这些改进大大降低的TensorFlow使用难度。 本文主要记录了一次曲折的使用Keras+TensorFlow2.0的BatchNormalization的踩坑经历,这个坑差点要把TF2.0的新特性都毁灭殆尽,如果你在学习TF2.0的官方教程,不妨一观。 问题的产生 从教程[1]https://www.tensorflow.org/alpha/tutorials/images/transfer_learning?hl=zh-cn(讲述如何Transfer Learning)说起: IMG_SHAPE = (IMG_SIZE, IMG_SIZE, 3) # Create the base model from the pre-trained model MobileNet V2 base_model = tf.keras.applications.MobileNetV2(input_shape=IMG_SHAPE, include_top=F...
- 下一篇
轻量级锁到底是怎么回事啊啊啊啊
微信公众号:IT一刻钟。大型现实非严肃主义现场,一刻钟与你分享优质技术架构与见闻,做一个有剧情的程序员。关注可第一时间了解更多精彩内容,定期有福利相送哟。 之前我们讲了synchronized的原理,以及其中的偏向锁,送佛送到西,这次我们来说一说轻量级锁吧。 友情提醒:上面两篇没有看过的看官,请先阅读上面两篇之后,再读此篇,这样效果会更佳哦~ 开局一张图。 看一张大图 流程讲解 当JVM关闭了偏向锁模式,对象在创建的时候,Mark Word中存储的是hash值,年代,是否偏向锁标志位为0,标志位是01。即一个无锁不可偏向状态。 轻量级锁逻辑: 1.当线程访问同步块,先判断锁状态标志位,如果是00,则说明是轻量级锁,JVM会先在当前线程栈帧中分配Lock Record空间; 2.将锁对象头中的Mark Word拷贝到当前线程的Lock Record中,称为Displaced Mark Word,然后使用CAS,将对象头中的Mark Word修改为指向当前线程栈中Lock Record的指针(如图)。如果成功,则获取轻量级锁,执行同步块中的代码,如果失败,则进行自旋竞争锁,自旋达到一定的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,CentOS8安装Elasticsearch6.8.6
- 2048小游戏-低调大师作品
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2全家桶,快速入门学习开发网站教程