
Meetup 回顾
2022/10/19
在上周的 Apache DolphinScheduler Meetup 上,来自 成方金融科技的 大数据工程师 冯鸣夏 为大家带来 DolphinScheduler 在金融科技领域的应用实践分享。以下为演讲整理:

-冯鸣夏 成方金融科技 大数据工程师-
聚焦于大数据领域的实时和离线数据处理和分析,目前主要负责数据中台的研发。
使用背景 基于 DolphinScheduler 的二次改造 DolphinScheduler 的插件扩充 未来和展望
1
使用背景
01
数据中台建设


数据中台的逻辑架构如上图所示,从下往上分析,首先最底层是数据资源层,这是各个业务系统产生的原始数据;再往上一层是数据集成,数据集成的方式分为离线采集和实时采集,其中采用的技术包括 Flume、CDC 实时采集等。
在整个的数据中台的建设中,调度引擎在数据引擎层中是属于比较核心的位置,也是数据中台建设中比较重要的功能。
02
数据中台面对的问题和挑战

首先,DolphinScheduler 部分地解决了我们统一服务管理、服务开发、服务调用和服务管理的需求。其次,它在任务容错方面有自己独到设计,支持 HA、弹性扩展、故障容错,基本保障任务的安全运行。第三,它支持任务和节点的监控。第四,它支持多租户和权限的控制。最后,它的社区非常活跃,版本更迭快速,问题修复也是非常快速。通过分析 DolphinScheduler 的架构和源码分析,我们认为它的架构符合主流的大数据框架设计,和Hbase、Kafka 等优秀的国外产品有类似的架构模式和设计。
2
基于DolphinScheduler
的二次改造
01
增加异步服务调用功能


02
增加元数据库 Oracle 适配

03
多环境配置能力
我们通过修改 install.sh 文件,增加输入参数[dev|test|product],选择合适install_config_${evn}.conf 进行安装,可以实现了环境的自动选择。
另外,DolphinScheduler 的工作流跟环境是强绑定的,不同环境的工作流无法共用。下图是原生 DolphinScheduler 导出的一个工作流的JSON文件,标灰的部分表示这个流程所依赖的 resource 资源, id是一个数字,是由数据库自增所产生的。但是如果 a 环境产生的流程实例放到 b 环境中,可能就会存在ID主键冲突。换句话说,就是不同环境所产生的工作流是无法进行共用的。

我们通过将资源的绝对路径所作为资源的唯一ID这种生成的方式来解决这个问题。
04
日志和历史数据清理策略
其次,DolphinScheduler 的数据主要是日志数据和任务执行目录,其中包括worker、master、API 的服务日志数据以及 worker 执行的目录,这些数据并不会随着任务的执行的结束而自动删除,也需要通过定时任务删除。通过运行日志清理脚本,我们可以实现日志的自动删除。


05
增加对 Yarn 日志的获取能力

06
服务安全策略
增加 Monitor 组件监控


从上面这张表格可以看到 master和 worker连接 Zookeeper 时的一些相关参数,包括连接超时,session超时时间,最大连重试次数。
由于网络抖动等因素,可能会造成 master 和 worker节点与 zk 失联的情况。失联之后,worker 和 master 因为在 zk 上注册的临时信息消失,会判定 zk 与 master 和 worker 失联,影响任务的执行。如果没有人工干预,就会导致任务迟迟得不到响应。我们增加了 monitor 组件进行服务状态的监控,通过定时任务 cron, 每 5 分钟运行一次 monitor 程序检测 worker 进程和 master 进程是否存活,如果宕机则重新调起。
增加服务组件使用 zk 的 Kerberos 认证环节
第二个安全策略是增加了服务组件使用 zk 的 Kerberos 认证环节。Kerberos 是一种网络认证协议,其设计目的是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。Master 服务组件,API 服务组件,worker 服务组件在启动时完成 Kerberos 认证之后再使用 zk 进行相关的服务注册和心跳连接,从而保证服务的安全。
3
基于DolphinScheduler的
插件扩展
01
增加新的任务类型Richshell

02
增加新的任务类型SparkSQL
03
增加新的任务类型 Dataexport

04
增加新的任务类型GBase
4
未来与展望
参与贡献
随着国内开源的迅猛崛起,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 2.0.7 发布,修复补数及容错故障问题
☞挑战海量数据:基于Apache DolphinScheduler对千亿级数据应用实践
☞GSoc DolphinScheduler 优秀贡献者获 3600 美元奖金!






