概述
Apache DolphinScheduler 是一个分布式易扩展的可视化 DAG 工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。
Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应用程序提供数据和各种 OPS 编排中的关系。解决数据研发 ETL 依赖错综复杂,无法监控任务健康状态的问题。DolphinScheduler 以 DAG(Directed Acyclic Graph,DAG)流式方式组装任务,可以及时监控任务的执行状态,支持重试、指定节点恢复失败、暂停、恢复、终止任务等操作。
特性
1.*简单易用 *
可视化 DAG,对待用户友好,通过拖拽定义工作流的,模块化操作,轻松定制和维护。
2.丰富的使用场景
支持多种任务类型,例如:Shell、MR、Spark、SQL 等 10 余种任务类型,支持跨语言,易于扩展。
3.丰富的工作流操作
工作流程可以定时、暂停、恢复和停止,便于维护和控制全局和本地参数。
- High Reliability 高可靠性
去中心化设计,确保稳定性,原生 HA 任务队列支持,提供过载容错能力。DolphinScheduler 能提供高度稳健的环境。
5.High Scalability 高扩展性
支持多租户和在线资源管理,支持每天 10 万个数据任务的稳定运行。
去中心化设计,让系统的控制和决策权分散到不同的节点或组件,而不是集中在单一中心节点。这意味着系统中的各个组件可以独立运作和做出决策,而不必依赖于一个中心控制节点。 在 DolphinScheduler 中,去中心化的设计意味着任务调度和管理系统的各个组件能够独立运作,而不需要依赖于一个单一的中心节点。
架构
DolphinScheduler 的架构设计允许分布式任务调度和管理,以满足大规模数据处理和工作流需求。
1. Master Server(主服务器):
DolphinScheduler 主服务器是整个系统的核心,它负责调度、管理和监控所有任务和工作流。
主服务器维护任务元数据和工作流定义,包括任务依赖关系、任务类型、调度计划等信息。
主服务器接收用户提交的任务和工作流,并决定如何调度和执行它们。
2. Worker Server(工作节点):
DolphinScheduler 工作节点是执行任务的节点,它们分布在集群中,可以是物理机器或虚拟机器。
工作节点根据主服务器的调度计划执行任务,可以处理各种不同类型的任务,如 Shell 脚本、Python 脚本、Hive、Spark、Flink 等。
工作节点还负责监控任务的执行状态和性能,并将信息报告给主服务器。
3. ZooKeeper:
DolphinScheduler 使用 Apache ZooKeeper 来协调主服务器和工作节点之间的通信和状态管理。
ZooKeeper 负责维护一致性和协调,以确保系统的高可用性和容错性。
4. 数据存储:
DolphinScheduler 使用关系型数据库(如 MySQL)来存储任务元数据、工作流定义和调度计划等信息。
数据存储用于持久化和管理系统的状态和元数据。
5. Web界面:
- DolphinScheduler 提供了一个可视化的 Web 界面,用户可以使用该界面来配置任务和工作流,监控任务的执行状态,以及管理系统的权限和用户。
工作流程
整个 DolphinScheduler 系统的工作流程如下:
用户使用 Web 界面创建和配置任务和工作流。
主服务器接收用户的任务和工作流定义,然后根据定义生成调度计划。
主服务器将调度计划发送给工作节点。
工作节点执行任务,监控任务的状态和性能,并将信息报告给主服务器。
用户可以通过 Web 界面查看任务的执行状态和日志,同时系统支持告警功能,以便在任务失败或性能下降时通知管理员。
DolphinScheduler 和 Azkaban 的比较
DolphinScheduler 和 Azkaban 都是用于任务调度和工作流管理的开源工具,但它们之间存在一些区别,包括以下方面:
1. 开发背景和社区支持
DolphinScheduler 是中国社区开源项目,得到了国内外开发者和组织的积极支持和贡献。
Azkaban 是由 LinkedIn 开发的,后来成为了开源项目,得到了 LinkedIn 和其他组织的支持。
2. 历史和成熟度
Azkaban 的项目起源较早,因此在一些组织中有更广泛的应用和更成熟的生态系统。
DolphinScheduler 是一个相对较新的项目,仍在不断发展中。
3. 特性和功能
DolphinScheduler 提供了更多种类的任务类型,包括Shell、Python、Hive、Spark、Flink等,以满足不同数据处理需求。
Azkaban 也支持多种任务类型,但其生态系统不如 DolphinScheduler 多样化。
4. 去中心化和架构设计
DolphinScheduler 强调去中心化的设计,允许任务调度和管理系统的各个组件独立运作。
Azkaban 通常具有中心化的控制节点来协调任务的调度和执行。
就我个人而言更喜欢用 DolphinScheduler,去中心化的设计更加便利,生态也特别丰富,前端 UI 也十分人性化,编辑任务流等方面都比 Azkaban 使用起来更加舒适。
DolphinScheduler 分布式安装
基础环境说明与配置
官方给出的系统要求以及服务器配置如下所示:
服务器资源没有那么多也无所谓,官方的配置是生产环境的配置,学习或者测试环境低点也能玩。
请在进行下列步骤前,确保集群之间已经设置好了免密登录,且指定用户具有 sudo
权限, 集群中已经安装 JDK1.8、MySQL、Zookeeper(3.4.6+
) 并能正常使用。
sudo
用户权限添加
这里以创建 dolphinscheduler
用户进行举例,开始前,请先切换到 root
用户。
创建用户及授权的指令在主从节点都要执行!
# 先切换到 root 用户
su root
# 添加用于部署的用户
useradd dolphinscheduler
# 添加密码
echo "123456" | passwd --stdin dolphinscheduler
# 配置 sudo 免密
sed -i '$adolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL' /etc/sudoers
sed -i 's/Defaults requirett/#Defaults requirett/g' /etc/sudoers