【Meetup回顾】Apache DolphinScheduler在联通的实践和二次开发经验分享

在由 openLooKeng 社区主办,Apahce DolphinScheduler社区、Apache Pulsar 社区、示说网协办的联合 Meetup 上,来自联通数字科技的王兴杰老师分享了DolphinScheduler 在联通的实践和二次开发经验分享。
视频分享请参见 B 站
兴杰老师也总结了本次分享的文字版,欢迎阅读!

2020 年 3 月在完成一套服务监控治理系统的时候,我们接触到了 DolphinScheduler,发现 DolphinScheduler 的功能和我们的业务场景匹配度很高,于是萌生了是否可以使用 DolphinScheduler 或者其他开源调度系统的作为核心调度系统想法。
但由于复杂的业务模式和庞大的数据体量,没有一款开源调度系统的功能能够完全覆盖我们的要求,只能找到一款更适合我们的基于此做二次开发。
我们调研了市面上较为常用的开源调度系统:
Oozie:
配置工作流的过程是编写大量的HPDL语言(一种XML流程定义语言)配置
代码复杂度比较高
Azkaban:
创建job需要手动完成固定格式文件
任务执行中信息存储在内存中并没有持久化,所以一旦失败会丢失所有工作流。
Oozie 和 Azkaban 目前的社区活跃度相对 Airflow 和 DolphinScheduler 较低,并且其开发成本和使用成本较高,所以不在考虑范围。
关于 Airflow 和 DolphinScheduler 我们做了重点的讨论
Airflow:
开发语言 Python
scheduler 使用数据库行锁作为分布式锁(2.0版本升级分布式部署,1.0为单机)
不支持暂停与重跑
分布式架构需要依赖其它组件(RabbitMQ or Redis)
用户需要编写Python脚本完成工作流定义
DolphinScheduler:
开发语言 Java
使用 zk 作为分布式锁
支持重跑、暂停、停止等多种调度策略
去中心化设计,天然支持HA
可拖拽式编排方式

从开发语言上来说,小组的主要技术栈是Java,对于 Python 的使用成本较高。
DolphinScheduler 的分布式架构依赖的是 zookeeper,Airflow 依赖的是 RabbitMQ 或 Redis,zookeeper 集群的运营成本对于我们来说要低于 RabbitMQ 或 Redis。使用 zookeeper 作为分布式锁在任务量大时其性能、稳定性都要略高于数据库行锁。
底层架构各有优缺点,而 DolphinScheduler 的去中心化架构更可以保证 HA的稳定性,而且内部支持的负载均衡策略也是我们所需要的。对于调度策略,我们所需要的主子流程调度、干涉调度策略等 DolphinScheduler 已经原生支持。所以无论是对于公司的业务模式、用户的使用习惯还是对于开发人员来看,DolphinScheduler都是我们更好的选择。

DolphinScheduler 是一个分布式易扩展的可视化 DAG 工作流任务调度开源系统,可拖拽式任务编排的方式对于使用用户来说,更容易接受,更容易操作,技术基础要求更低,从而也就更容易推广,为准备迁移调度系统或从 0 到 1 使用调度系统的企业和用户提供了全新的选择。

Master 和 Worker 两个核心服务都采用了去中心化设计,这样既保证了分布式架构的稳定性,也保证了负载的均摊,没有一个是主,大家又都是主。DolphinScheduler 的 Master 和 Worker 是从服务器级别的负载情况来决定任务的执行策略,这样对于一些部署多种应用的服务器来说,不需要过度担心其他服务对调度服务的影响。
高可靠性,简单易用,丰富的使用场景,高扩展性,这些特性造就了 DolphinScheduler 被原来越多的企业和用户认可。
DolphinScheduler 的使用者分布在各个行业,不仅包含了互联网企业,还有不同类型的传统行业,社区的参与者有很多都是来自一线互联网大厂的大佬,所以在多行业多环境的使用场景和一线技术参与者的加持下 DolphinScheduler 会成为越来越多大数据工作者的选择。
DolphinScheduler 提供了一个很好的基础无中心化架构设计基础上的容错机制,保证了即便是服务器宕机,也可以保证任务不丢失。尽管对于稳定的日常加工来说服务器的不稳定发生的概率相对较低,但是对于研发人员却要耗费大量的时间和精力尽可能地保证万无一失,对于调度系统稳定性的要求肯定是企业要求的最高级别,而 DolphinScheduler 已经为想要使用的企业和用户解决了这一头疼的问题。
但是天有不测风云,研发人员面对的永远都是最好的准备,最坏的打算,即便是做了万全的准备,异常告警也是不可或缺的,DolphinScheduler 已经为用户准备好了多种类型的告警通知,如果不能满足用户的要求,二次开发的成本也是非常低的,我们仅用了两个小时添加了短信告警类型。同时可以通过可视化页面直观的看到服务器的 CPU、内存、负载情况,也配置了工作流执行甘特图,可以覆盖到大部分的使用场景。这些都是 DolphinScheduler 原生具备的特性。
我们的业务场景包括了全局变量、条件判断节点(根据变量值)、延时功能、循环功能、批量调用子流程功能、任务执行并行数量控制。

经过调研后确定研发方案,历时三个星期开发完成主要功能的研发工作并且上线。上线后压测,当时为了最大程度的压测 DolphinScheduler 任务分发和处理的能力我们将 Master 接受 Worker 通知的队列修改为线程池,task 主要包括我们常用的 SQL、shell、条件判断、子流程(批量)节点,SQL 执行 select 和 insert 语句,shell 执行 echo 和 sh 命令,被执行的脚本中不包含业务逻辑,基于 DolphinScheduler 二次开发后的调度系统支持 5000 并发(测试的流程并发 task 数为 5000),累计运行超过 20 万 task,耗时 20 分钟。
从用户的反馈来看,在简单的培训之后便可以进行工作流的配置工作,一般用户配置时出现的错误也可以通过页面展示的日志自行解决。
在开发过程中方案的确定,问题的排查都得到了社区的积极反馈,我们也在反馈社区的过程中不断地优化现有的系统。
二次开发经验

联通数科数据智能事业部
联通数科数据智能事业部的前身是联通大数据,成立于2017年,是联通全网数据商业运营的统一出口。联通数科以上云、用数、赋智为核心,助力社会治理能力和体系现代化,在创新研发能力上不断取得突破。云计算领域沉淀了丰富的全栈自研沃云产品、全面的多云管理能力、大体量的混合云纳管实践以及全流程覆盖的云运营服务能力;大数据治理、运营和安全能力方面达到行业领先,率先通过DCMM(数据管理能力成熟度)四级认证,运营商大数据业务市场份额位居第一。
【Meetup回顾】Apache DolphinScheduler在联通的实践和二次开发经验分享的更多相关文章
- Apache DolphinScheduler&ShenYu(Incubating) 联合 Meetup,暖春 3 月与你相约!
云霞出海曙,梅柳渡江春. 2022 年的早春在疫情中显得格外生机勃勃,虽然接下来寒流仍有可能造访国内部分地区,但开源的世界,早已热闹非凡! 2022 年 3 月 26 日(星期六), Apache D ...
- 基于 DolphinScheduler 的数据质量检查实践
今天给大家带来的分享是基于 Apache DolphinScheduler 的数据质量检查实践,分享的内容主要为以下四点: " 为什么要做数据质量检查? 为什么要基于 DolphinSche ...
- 活动回顾|Apache DolphinScheduler x Pulsar 在线 Meetup
关于 Apache DolphinScheduler: " Apache DolphinScheduler(Incubating) 是一个分布式去中心化.易扩展的可视化工作流任务调度系统,致 ...
- 就在明天,Apache DolphinScheduler Meetup 2021 如约而至!
点击上方 蓝字关注我们 社区的小伙伴们,Apache DolphinScheduler Meetup 2021 如约而至,就在明天,等你来玩! 在此次 Meetup 线上直播中,不仅将有来自 Bigo ...
- 挑战海量数据:基于Apache DolphinScheduler对千亿级数据应用实践
点亮 ️ Star · 照亮开源之路 GitHub:https://github.com/apache/dolphinscheduler 精彩回顾 近期,初灵科技的大数据开发工程师钟霈合在社区活动的线 ...
- 日均 6000+ 实例,TB 级数据流量,Apache DolphinScheduler 如何做联通医疗大数据平台的“顶梁柱”?
作者 | 胡泽康 鄞乐炜 作者简介 胡泽康 联通(广东)产业互联网公司 大数据工程师,专注于开源大数据领域,从事大数据平台研发工作 鄞乐炜 联通(广东)产业互联网公司 大数据工程师,主要从事大数据平 ...
- 数据平台调度升级改造 | 从Azkaban 平滑过度到 Apache DolphinScheduler 的操作实践
Fordeal的数据平台调度系统之前是基于Azkaban进行二次开发的,但是在用户层面.技术层面都存在一些痛点问题难以被解决.比如在用户层面缺少任务可视化编辑界面.补数等必要功能,导致用户上手难体验差 ...
- 倒计时2日!基于 Apache DolphinScheduler&TiDB 的交叉开发实践,从编写到调度让你大幅提升效率
当大数据挖掘成为企业赖以生存.发展乃至转型的生命,如何找到一款好软件帮助企业满足需求,成为了许多大数据工程师困扰的问题.但在当下高速发展的大数据领域,光是一款好软件似乎都不足以满足所有场景业务需求,许 ...
- Apache DolphinScheduler&TiDB联合Meetup | 聚焦开源生态发展下的应用开发能力
在软件开发领域有一个流行的原则:Don't Repeat Yourself(DRY),翻译过来就是:不要重复造轮子.而开源项目最基本的目的,其实就是为了不让大家重复造轮子. 尤其是在大数据这样一个高速 ...
随机推荐
- Hadoop安装学习(第三天)
学习任务: 1.解压jdk和hadoop包 2.安装jdk 3.修改hadoop配置文件 4.hadoop格式化 5.hadoop启动 出现的问题:hadoop可以正常启动,但是端口9000丢失,导致 ...
- Proxmox 7.2 部署 DoraCloud桌面云,支持vGPU
介绍 本文介绍了使用Proxmox + DoraCloud,将一台图形工作站(配置有Tesla P4显卡)改造成一台桌面云主机.可以满足多个桌面用户同时使用3D应用的需求. 该方案适合于小型工作室.电 ...
- jQuery其他操作与bootstrap框架
目录 标签操作 样式操作 位置操作 文本值操作 属性操作 文档处理 事件操作 常见事件 克隆案例 悬浮事件hover() 监听input输入值事件 阻止后续事件 事件委托 动画效果 bootstrap ...
- python面向对象双下划线方法与元类
目录 双下划线方法(__) 元类简介 产生类的两种表现形式 元类的基本使用 元类进阶操作 __new__方法 双下划线方法(__) 面向对象中的双下方法也有一些人称之为是魔法方法,有些双下方法不需要刻 ...
- 编程语言与python与pycharm的下载
目录 编程语言的发展史 编程语言的分类 python解释器 python解释器的下载与安装 环境变量 执行python程序方式 pycharm编辑器 编程语言的发展史 机器语言是最开始的编程语言,之后 ...
- c# 简单的滑动图片验证
普通的验证码对用户使用体验不友好,出现了滑动图片验证的验证方式,用户只要按住滑块完成图片的拼接即可通过验证(这是最简单的方式,滑动轨迹,数据分析,滑行速度 什么的暂没考虑) 主要的实现思路: 1.先从 ...
- H5 页面 上使用js实现一键复制功能
2.解决苹果手机浏览器 无法使用的问题 上面的方法在 iphone 手机 safari浏览器失效的问题 其实就是使用输入框先显示然后模拟选择复制在隐藏输入框
- 字节开源RPC框架Kitex的日志库klog源码解读
前言 这篇文章将着重于分析字节跳动开源的RPC框架Kitex的日志库klog的源码,通过对比Go原生日志库log的实现,探究其作出的改进. 为了平滑学习曲线,我写下了这篇分析Go原生log库的文章,希 ...
- 一文详解JackSon配置信息
背景 1.1 问题 Spring Boot 在处理对象的序列化和反序列化时,默认使用框架自带的JackSon配置.使用框架默认的,通常会面临如下问题: Date返回日期格式(建议不使用Date,但老项 ...
- 合宙Air32F103CBT6开发板上手报告
2022年6月初合宙新上市了 Air32F103 系列 MCU, 市面上 STM32F103 的克隆军队又增加了新的一员. 这次不知道是哪家的贴牌, 分 Air32F103CBT6 和 Air32F1 ...