DolphinScheduler×集度 | DolphinScheduler 灵活调度新能源汽车多样化业务场景

点击蓝字 关注我们

115739df45aab3db2aa69a3000b1609a.png

1c1d5c1e0dad89e5951dbd16163d0f39.png

用户案例 | 集度汽车

集度大数据集成平台日累计离线调度任务量2w+,既要满足高并发分发任务也要满足多种任务类型,为了保障数据的准确性和及时性,集度选择Apache DolphinScheduler作为核心调度系统,在此基础上也做了二次的开发,形成一整套体系,包含元数据管理、血缘地图、数据集成、数据质量管理、Ad-Hoc等,从而降低了使用数据的成本。

01

业务挑战

集度的数据处理涉及到多类型的业务场景,包括车辆数据,流量数据,以及其他的各业务场景的数据等,累计离线任务数量2w+。同时具有多种任务类型,包括Python、SQL、Shell、Sqoop,ChunJun(FlinkX)等。

对于整个数据处理流程来说,主要涉及数据入库,数据开发和数据出库。因业务场景复杂,入库需要考虑多种数据源,例如MySQL,SQLServer等。

对于数据出库场景来说,因涉及到数据端到端的数据同步,需要保证数据同步的数据一致性问题,同时也需要支持多种数据源类型,例如,Mysql,Kafka,Doris等。

综上所述,集度需要调度工具灵活性高、自由度强。

02

解决方案

1

调度架构设计

7d8537ec30387f04da075daca6b062e7.png

注:灰色虚线部分正在自研中

通过自研的大数据集成平台,可以对数据集成、数据加工、数据质量、元数据管理等做统一管理,大大降低了数据开发成本,DolphinScheduler提供了调度系统中所需要的核心功能,包含:任务调度、任务/节点监控。

  • 数据质量:关联调度、通过强弱规则是否截断任务、丰富的规则模版(参考-- 微众 Qualitis)

  • Ad-Hoc:SQL开发/调试、发布调度、数据订阅

  • 任务血缘:收集DolphinScheduler的任务依赖关系、任务粒度依赖关系、方便抽象全局DAG(包含所有工作流)

  • 数据集成:依赖DolphinScheduler丰富任务类型的支持,主要包含:数据导入、数据导出、数据加工

2

任务并发高

使用DolphinScheduler定时调度时,集度是根据任务粒度来配置时间触发器的,这样就可以理解为工作流=任务(弱化了画布的优势),但这引起了一个问题,即单Master节点并发定时触发任务量达到3000+以上时就会丢失任务(新配置的任务优先丢失),由于并发量大会有部分任务丢失的情况发生,导致后置依赖一直等待最终Master分发线程被耗尽,整个集群不再分发任务。DolphinScheduler去中心化设计非常好,可以支持Master动态增加节点,可以临时性解决小批量任务增长带来的丢失问题。

之后,集度通过调整quartz的配置项org.quartz.jobStore.misfireThreshold(线程阻塞时,多久丢弃任务),由60秒提升至30分钟,给夜间并发任务最大限度的保障,目前3台Master节点,支撑1w+任务的并发定时触发。

  • 任务组织形式

    • 工作流(画布)方式

      • 优点:方便界面操作、DAG执行

      • 缺点:任务维护成本高、依赖关系维护成本高

923e0d01ac9f0924850817e87f1da8a1.png

    • 任务粒度方式(工作流=任务)

      • 优点:任务维护成本低、依赖关系维护成本低

      • 缺点:Quartz定时触发器资源消耗高、DAG执行不方便(要解决跨工作流依赖问题)

b213ad6201644f2c0e21c267509f7f52.png

3

血缘及数据质量

血缘

实际数据生产过程中,某些业务会有比较频繁的口径变更,这时需要将口径变化的任务重刷及其下游任务,越是基础的表后置依赖越多,跨工作流的任务就越多,问题就是无法通过一个任务节点触发后置所有任务(包含跨工作流的任务时)。

集度通过自研的平台将所有创建的任务依赖关系统一管理起来,能够抽象出全局的DAG图,通过单个任务成功的事件触发后置任务,如下图:

5f3a0e098739e4612f4423fe226d153c.png

例如:Task-002执行完成后,才会触发Task-004和Task-005;反之Task-002失败,Task-002后置的所有任务都不再执行,包含Task-004、Task-005、Task-006,但是不影响其他分支(如:Task-003、Task-007)。

数据质量

通过自研平台实现配置检验规则关联到DolphinScheduler任务中,如下图:

3230d4e8834111ce07d2354c6d8bb79b.png

弱规则情况下只会依赖上游任务本身,但是规则还是会触达条件发送告警信息;

强规则情况下依赖上游任务的规则任务,一旦触达条件会阻断后置任务执行。

4

多种任务类型及日期变量支持

任务类型

目前覆盖集度业务场景所需要的任务类型有Python、Shell、Sqoop、ChunJun(FlinkX)、SQL、Flink、Spark等,集度的数据开发灵活度也很高,正好DolphinScheduler非常丰富的任务插件与其业务场景相匹配,集度也对其中的任务插件做了二次开发,例如Hive SQL执行过程中打印进度日志、停止SQL任务等。

日期变量

数据的统计分析周期也是多样化的,比如按照周、月、小时、年周、天等粒度去统计数据。

DolphinScheduler提供了灵活的日期变量可供使用,通过变量计算可以得到对应的日期,但是由于某些业务统计周期比较特殊,集度对此做了二次改造,增加了具备业务属性的日期变量。例如:2022-34(2022年第34周)、2022-12-31(2022年12月最后一天)、2022-12-01(2022年12月第一天)、统计日期所在周的周N(2022年2月22日-周一)等。

03

用户收益

  1. 实现了每天承接累计2w+的调度任务,涵盖全公司所有业务;凌晨并发1w+的任务量;

  2. 统一管理任务血缘关系,抽象全局DAG,方便数据开发人员维护任务;

  3. 支撑复杂业务场景下,多种数据源支持、多种任务类型的支持和多种业务属性日期变量的支持;

  4. 提升了数据开发人员的研发效率。

04

客户简介

北京集度科技有限公司

所属行业:新能源汽车

集度是一家汽车机器人创业公司,成立于2021年3月,由夏一平担任CEO。集度致力于全球顶尖的自动驾驶、人机交互科技的工程研发和商业化普及,打造拥有情感和智慧的革命性汽车机器人,还人们更多空间与时间,实现更多可能。

参与贡献

随着国内开源的迅猛崛起,Apache DolphinScheduler 社区迎来蓬勃发展,为了做更好用、易用的调度,真诚欢迎热爱开源的伙伴加入到开源社区中来,为中国开源崛起献上一份自己的力量,让本土开源走向全球。

fc271cacdb99e4e1ce972a402768a567.png

参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括:

4e6112d5a72510f78a1434fee45d078a.png

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表:https://github.com/apache/dolphinscheduler/issues/5689

非新手问题列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22

如何参与贡献链接:https://dolphinscheduler.apache.org/zh-cn/community/development/contribute.html

来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。

参与开源可以近距离与各路高手切磋,迅速提升自己的技能,如果您想参与贡献,我们有个贡献者种子孵化群,可以添加社区小助手微信(Leonard-ds) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。

f6e100390ec66a19a9fcd49a267732fb.jpeg

添加社区小助手微信(Leonard-ds) 

添加小助手微信时请说明想参与贡献。

来吧,开源社区非常期待您的参与。

< 🐬🐬 >

更多用户案例

DolphinScheduler×T3出行 | 打造车联网一站式数据应用交互体验

DolphinScheduler×长安汽车 | 千万级数据接入能力智能网联汽车云平台引进核心调度系统

☞金融科技数据中台基于 DolphinScheduler 的应用改造

点击阅读原文,点亮Star支持我们哟b2be4a775e431b493dae9bddbcadf7b4.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DolphinScheduler社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值