暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ApacheCon Asia 2022 精彩回顾 | DolphinScheduler 在 T3 出行一站式平台中的应用

海豚调度 2022-08-20
1582
 点亮 ⭐️ Star · 照亮开源之路

GitHub:https://github.com/apache/dolphinscheduler

    

在 ApacheCon Asia 2022 大会上,众多企业分享了 Apache DolphinScheduler 的用户实践分享,其中 T3 出行大数据工程师 李心恺&赵玉威 分享了公司在一站式平台开发中对 Apache DolphinScheduler 所做的功能迭代和整合增强。


感谢硕磐智能科技有限公司 大数据工程师 刘步龙将本次演讲整理本文,您对 Apache DolphinScheduler 的贡献是社区不断前进的动力!


本次的分享主要围绕下面四点展开:
  • 选择Apache DolphinScheduler的原因
  • T3出行的数据湖架构
  • Apache DolphinScheduler在使用中的痛点
  • 解决痛点的方案

1

选择Apache DolphinScheduler的原因


01

什么是 DolphinScheduler


Apache Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。

02

为什么选择 DolphinScheduler



选择Apache DolphinScheduler主要是基于以下四个原因:

  • 高可用性
Apache DolphinScheduler 提供去中心化的多 worker 和 master,有更高的可用性,可以自我支持和进行过载处理。

  • 用户友好
由于所有的过程定义都是可视化的,Apache DolphinScheduler 通过让没有编码知识的人(比如数据分析师)创建复杂的工作流程来降低学习成本。

  • 场景丰富
Apache DolphinScheduler 提供多种任务类型,包括 Spark、Hive、Python、Flink、MapReduce 等。此外,平台的多租户提高了效率,并提供了高水平的可伸缩性。

  • 高拓展性
Apache DolphinScheduler 能够根据集群的规模线性增加其整体调度能力。

03

DolphinScheduler在T3出行的使用现状



Apache DolphinScheduler 在T3出行的应用场景,主要是与 Kyuubi on Spark task 结合,每天处理 30000+ 的离线调度任务;同时每天调度着 300+ Spark Streaming 任务,100+ Flink 任务,以及500+ Kylin、ClickHouse 和 Shell 任务。

04

基于 DolphinScheduler 的优化


T3出行大量的调度任务重度依赖 Apache DolphinScheduler,本次,我们主要分享以下几点优化工作:

1. 增加了联动补数的功能,我们的任务流通过 depends 组件等处理一些跨任务流的上下游关系。这些任务关系比较复杂,用户补数时如果需要上游补数,人工梳理上下游关系非常复杂。所以我们做了联动补数功能。

2. 增加了任务视图功能。比如说如果一个工作流设置了 T-1 的定时调度,那么每天都会产生一个运行类型为调度执行的工作实例,增加任务视图功能后,大家可以一目了然地看到该工作流在调度周期中的运情况,是否是调度成功,有没有进行失败补数、恢复失败等操作,提高开发效率。

2

T3 出行的数据湖架构

接下来和大家介绍一下 T3 出行的数据湖架构。

01

数据湖架构



T3 出行的数据湖架构中最底层的数据来源主要是 Kafka 数据,以及一些 cannel 订阅的数据库数据。CDC 获取的数据是主要以 Hudi 为存储格式,内容存储在OBS 对象存储上,通过 YARN 进行集群统一的资源编排。YARN 之上统一对接Spark、Hive、Flink、Presto 以及 ClickHouse 等计算引擎,通过 Kyuubi 和Linkis 的计算中间件对外暴露给各个业务,包括帆软、数据地图、Hue、机器学习平台等。这中间的 ETL 操作主要就是由 Apache DolphinScheduler 来调度的。

02

T-1调度过程



T-1 的调度过程,主要是通过连接 Kyuubi,为不同租户分配不同的资源策略。Apache DolphinScheduler 把不同的租户连接到 Kyuubi 上,并在 Spark 引擎上执行计算。此外,我们还对以 Hudi 为主的存储数据做了增量数据加工。

03

其他场景



同时,数据开发和一些 OLAP 场景主要是连接 Kyuubi 做开发。其中报表系统主要是通过连接 Kyuubi 对接 Presto 引擎,查询数据湖数据。还可以连接 Spark 引擎写 Spark SQL,进行数据探索和数据开发。

3

DolphinScheduler在使用中的痛点


在使用 Apache DolphinScheduler 的过程中,我们也遇到了一些痛点问题(仅针对 1.3 版本),如下所示:

  • 没有专门的开发工具

首先,Apache DolphinScheduler 没有专门的数据开发模块,所以我们还是在原来在 CDH 集群上安装的 Hue 上进行开发。开发好的语句,也需要人工拷贝到 GitLab 进行版本管理。

  • 缺少大数据管理 CI/CD
其次,开发好的语句如果要发布在 Apache DolphinScheduler 上,需要人工将其拷贝到 Apache DolphinScheduler 上进行节点配置。同时,一些参数、变量的转换配置等也需要人工操作,缺少整体化的 CI/CD 过程,大大增加了运维发布成本。

  • 没有版本管理&代码共享机制
我们之前使用的是 Apache DolphinScheduler 1.3 版本,该版本缺乏工作流版本管理,代码共享机制,导致代码无法提交到 GitLab,无法进行版本切换,以及同组、同部门无法共享代码,重复造轮子等问题。

4

解决痛点的方案


对于以上的痛点问题,我们也投入很大精力做了优化,主要是以下几点优化:

01

引入Datasphere Studio



今年年初,我们引入了以微众银行开源的 Datasphere Studio(DSS)作为一站式应用的交互平台,同时根据公司的业务进行了定制化开发。

02

代码分享



我们通过整合 GitLab 的 SDK 调用开发好的文件,提交代码到对应的 GitLab 代码分支和项目。这样,相同工作空间下的用户可以互相看到对方的代码,实现代码共享,减少开发量,避免重复造轮子。

03

DSS 工作流



DSS 的 工作流支持版本管理,方便回滚和版本迭代,支持对指定对应的版本进行 pick up 操作,拉取编排工作流时可以选择关联脚本(开发好的放在那些目录下的代码文件)。


我们整合了DSS 的工作流,使其可以直接发布到 Apache DolphinScheduler 工作流中。

DSS 工作流类似于 Apache DolphinScheduler,也是 JSON 格式,存储在MySQL 中,通过保存好的任务流进行读取。我们解析 DSS 工作流中的 JSON 字段,并转换成符合 DolphinScheduler 任务流的 JSON 格式文件。


存储之后,在 DolphinScheduler 中就形成了符合其风格的任务流。现在,我们主要支持的节点类型主要包括 SQL、shell 脚本,以及depends组件、watedrop 任务,Spark任务和Python 等。


我们用 DSS 工作流进行版本管理,实质上是多版本对应到 DolphinScheduler 任务流上,选中上线版本,则在DS侧对应的版本工作流就会上线,没有选中版本的工作流下线,相当于一个上下线的过程。

至于补数、定时调度等操作,我们还是在 DolphinScheduler 上进行,这些功能DolphinScheduler 比 DSS 要强大很多。

当然,新版本的 DolphinScheduler 已经支持版本切换功能,后续我们将进行整合对接。

集成 DSS 之后,T3 数据湖架构的变化如图所示。

首先底层还是 CDC 入湖。Hudi 在对象存储之上,资源编排还是在YARN上,引擎还是Spark、Flink、Presto 和 ClickHouse 等。通过计算中间件去对接。Hue 我们这边就替换成了 DSS scripts 数据开发平台,多个业务系统都通过 DSS 跳转对外暴露。DSS 本身有一个单点登录认证的过程,方便统一登录。

T3 大数据平台引入了 DSS 之后,和 Apache DolphinScheduler 相辅相成,基本实现了代码开发、业务上线调度系统一体化过程,可以闭环实现大数据开发CI/CD管理,帮助业务部门降低门槛,专注于业务和业务需求,缓解数据开发的压力,离我们一站式开发平台的目标又进了一步。

Apache DolphinScheduler 这一年来发展迅猛,之前我们没有的一些功能点,比如数据质量、任务流版本管理等都做了增强。我们希望 Apache DolphinScheduler 的这些能力在后续迭代中可以在我们公司场景中得到更多应用,同时也期待 Apache DolphinScheduler 作为调度平台的引领者之一,会发展得越来越好!

参与贡献


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


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


贡献第一个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) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。


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


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



< 🐬🐬 >

更多精彩推荐


如何利用开源和社区聚集用户和开发者共建、共创?

☞Apache DolphinScheduler 3.0.0 正式版发布!

ApacheDolphinScheduler 整合大数据生态安全门 Apache Knox,统一对外服务

名额已排到10月 | Apache DolphinScheduler Meetup分享嘉宾继续火热招募中

小海豚“变身”全新智能调度引擎,深入浅出在DDS的实践开发应用

☞对话 Contributor| 中国团队贡献的开源项目, 当然要支持

自动更新选股模型,实时监控,基于 Apache DolphinSchedule 打造机器学习智能选股系统

开源大数据 Studio 应用开发: Apache Dolphinscheduler + Notebook




我知道你在看

文章转载自海豚调度,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论