【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),翻译过来就是:不要重复造轮子.而开源项目最基本的目的,其实就是为了不让大家重复造轮子. 尤其是在大数据这样一个高速 ...
随机推荐
- Android7.1.2 源码编译并烧写Nexus5X
1.环境配置 Ubuntu18.04 openJDK1.8 Python2.7 2.更新Ubuntu镜像源 编辑/etc/apt/source.list,替换为以下内容 deb http://mirr ...
- github新项目npm错误
当我们从GitHub或者别人那里拿到项目的时候,一般都是要先npm install 进行安装依赖.但是难免会遇到报错. 出现问题1: 解决方案:清除缓存npm cache clear --force之 ...
- 以字节跳动内部 Data Catalog 架构升级为例聊业务系统的性能优化
背景 字节跳动 Data Catalog 产品早期,是基于 LinkedIn Wherehows 进行二次改造,产品早期只支持 Hive 一种数据源.后续为了支持业务发展,做了很多修修补补的工作,系统 ...
- Boogie's First Blog
这是boogie在博客园的第一篇随笔,祝大家身体健康,心情愉悦.
- 关于个人全栈项目【臻美IT】博客类出现的问题以及解决方法
每做一个项目,要记得写下心得哦,别偷懒啊!先上网址:https://www.maomin.club/ 这个项目属于博客类的,因为百度审核的问题就大体做了下,就当来练练手,里面文章链接的是CSDN的博客 ...
- ant design pro生产和开发环境的坑
1.axios的get请求开发环境会自动带上cookie,但是生产环境则不会,需要手动设置以下代码: axios.defaults.withCredentials=true; 2.models全局和局 ...
- BPC 脚本
// //税款计算(现金流) // //2018年5月11日修改,去除之前的送数逻辑,新增BADI计算相关科目 // *SELECT(%010804ZH%, "ID", " ...
- ansible-playbook批量修改密码
1. 将服务器ip写到ansible hosts文件中 2. 实现免密登录服务器 将ansible服务器公钥拷贝到目标服务器用户目录下的.ssh/authorized_keys 手动连接一次或者自己写 ...
- 端口被占用的问题解决 Web server failed to start. Port ×× was already in use
出现此问题是端口被占用了,只需要关闭正在使用的端口就行 解决思路: 1.在服务器中更改port端口号,改为不冲突,没有被占用的端口. 2.找出被占用的端口,结束被占用的端口 解决结束被占用的端口的方法 ...
- Java获取当天或者明天等零点时间(00:00:00)0时0分0秒的方法
SimpleDateFormat sdfYMD = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar calendar = ...