文章目录
1. DolphinScheduler
1.1 DolphinScheduler介绍
DolphinScheduler
是一个分布式
、去中心化
、易扩展
的可视化 DAG 工作流任务调度系统
,专注于解决数据处理流程中的依赖关系 。它支持多种任务类型,包括但不限于 Shell
、MR
、Spark
、SQL
、Python
等,并且提供丰富的任务状态监控信息和可视化的 DAG 定义界面 。DolphinScheduler 的架构经过升级,引入了 Netty 进行节点间通信,并提供了多种任务分发算法。
1.2 DolphinScheduler优点
简单易用
:DAG监控界面,所有流程定义都是可视化,通过拖拽任务完成定制DAG,通过API方式与第三方系统集成, 一键部署。高可靠性
:去中心化的多Master和多Worker服务对等架构, 避免单Master压力过大,另外采用任务缓冲队列来避免过载。丰富的使用场景
:支持多租户,支持暂停恢复操作. 紧密贴合大数据生态,提供Spark, Hive, M/R, Python, Sub_process, Shell等近20种任务类型。高扩展性
:支持自定义任务类型,调度器使用分布式调度,调度能力随集群线性增长,Master和Worker支持动态上下线。
2. Azkaban
2.1 Azkaban介绍
Azkaban
是由LinkedIn
开源的批量工作流任务调度器
,它通过一个易于使用的 Web 用户界面来维护和跟踪工作流 。Azkaban 支持插件式扩展,并且可以通过 XML 语言来配置任务之间的依赖关系 。不过,Azkaban 在任务过多时可能会出现服务器卡顿的情况,且 Web Server 存在单点故障风险。
2.2 Azkaban优点
易于配置
:配置相对简单,容易上手。权限管理
:提供了较为细致的权限控制。
3. Airflow
3.1 Airflow介绍
Airflow
是一个由 Python 编写
的 Web 应用,它允许用户编写、安排和监控工作流。Airflow 使用了强大的 Jinja 模板引擎,支持动态生成工作流,并且可以轻松扩展以适应不同环境 。Airflow 的用户界面丰富,易于查看和管理正在运行的管道。
3.1 Airflow优点
灵活性高
:支持自定义任务和扩展。强大的社区支持
:有丰富的资源和插件可用。
4. Oozie
4.1 Oozie 介绍
Oozie 是一个工作流调度系统,用于管理 Hadoop 作业。Oozie 的工作流由动作组成,形成一个有向无环图 (DAG)。Oozie 支持多种类型的 Hadoop 作业,并且可以与 Hadoop 生态圈的其他部分集成 。Oozie 是一个可伸缩、可靠和可扩展的系统,但可能存在一些使用上的坑,特别是在 launcher job 解析 job 时 。
4.2 Oozie 优点
与 Hadoop 生态系统集成紧密
:适用于大规模的 Hadoop 任务调度。支持多种作业类型
:如 MapReduce、Hive 等。
5. XXL-JOB
5.1 XXL-JOB介绍
XXL-JOB 是一个轻量级的分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级和易扩展 。XXL-JOB 提供了运维界面,使得维护成本较小,并且支持错误预警和多种路由策略,可以减轻执行服务器的压力
5.2 XXL-JOB优点
轻量高效
:占用资源少,性能较好。易于扩展
:支持自定义开发扩展。
6. 总结
如果项目主要基于 Hadoop 生态,Oozie 可能是一个较好的选择;如果需要高度的灵活性和自定义扩展,Airflow 可能更合适。