首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

用户案例 | 集度汽车

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

01

业务挑战

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

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

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

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

02

解决方案

1

调度架构设计

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

通过自研的大数据集成平台,可以对数据集成、数据加工、数据质量、元数据管理等做统一管理,大大降低了数据开发成本,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执行

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

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

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

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

3

血缘及数据质量

血缘

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

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

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

数据质量

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

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

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

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

用户收益

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

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

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

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

04

客户简介

北京集度科技有限公司

所属行业:新能源汽车

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230504A074HN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券