当前位置: 首页 > news >正文

工作流调度系统(DolphinScheduler、Azkaban、Airflow、Oozie 和 XXL-JOB)

文章目录

  • 1. DolphinScheduler
    • 1.1 DolphinScheduler介绍
    • 1.2 DolphinScheduler优点
  • 2. Azkaban
    • 2.1 Azkaban介绍
    • 2.2 Azkaban优点
  • 3. Airflow
    • 3.1 Airflow介绍
    • 3.1 Airflow优点
  • 4. Oozie
    • 4.1 Oozie 介绍
    • 4.2 Oozie 优点
  • 5. XXL-JOB
    • 5.1 XXL-JOB介绍
    • 5.2 XXL-JOB优点
  • 6. 总结

1. DolphinScheduler

1.1 DolphinScheduler介绍

DolphinScheduler 是一个分布式去中心化易扩展可视化 DAG 工作流任务调度系统,专注于解决数据处理流程中的依赖关系 。它支持多种任务类型,包括但不限于 ShellMRSparkSQLPython 等,并且提供丰富的任务状态监控信息和可视化的 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 可能更合适。

http://www.lryc.cn/news/426027.html

相关文章:

  • PyTorch 基础学习(5)- 神经网络
  • CI/CD 自动化:最大限度地提高极狐GitLab 群组的“部署冻结”影响
  • 单元训练10:定时器实现秒表功能-数组方式
  • 国外项目管理软件最佳实践:选型与应用
  • Angular组件概念
  • 嵌入式人工智能ESP32(4-PWM呼吸灯)
  • 继承 (上)【C++】
  • WPF打印控件内容
  • [C++][opencv]基于opencv实现photoshop算法图像剪切
  • 四十、大数据技术之Kafka3.x(3)
  • redis——基本命令
  • pytorch实现单层线性回归模型
  • 智能小家电能否利用亚马逊VC搭上跨境快车?——WAYLI威利跨境助力商家
  • 顺丰科技25届秋季校园招聘常见问题答疑及校招网申测评笔试题型分析SHL题库Verify测评
  • 深入理解 Kibana 配置文件:一份详尽的指南
  • 算法的学习笔记—链表中倒数第 K 个结点(牛客JZ22)
  • 聊聊场景及场景测试
  • Spring Web MVC入门(中)
  • Django后端架构开发:后台管理与会话技术详解
  • 挑战Infiniband, 爆改Ethernet(2)
  • Postman文件上传接口测试
  • stm32入门学习14-电源控制
  • [C++][opencv]基于opencv实现photoshop算法色相和饱和度调整
  • Github 2024-08-16Java开源项目日报 Top10
  • AI学习记录 - torch 的 matmul和dot的关联,也就是点乘和点积的联系
  • leetcode 885. Spiral Matrix III
  • mysql windows安装与远程连接配置
  • 子网掩码是什么以及子网掩码相关计算
  • 仿RabbitMQ实现消息队列
  • SpringBoot教程(二十三) | SpringBoot实现分布式定时任务之xxl-job