在新网银行,每天都有大量的任务实例产生,其中实时任务占据多数。为了更好地处理任务实例,新网银行在综合考虑之后,选择使用 Apache DolphinScheduler 来完成这项挑战。如今,新网银行多个项目已经完成了实时与准实时的跑批,指标管理系统的离线跑批,应用于离线数据开发和任务调度、准实时数据开发和任务调度,以及其他非 ETL 用户定义数据跑批三类场景中。

为了更好地适应业务需求,新网银行是如何基于Apache DolphinScheduler 做改造的呢?在 Apache DolphinScheduler 4 月Meetup上,来自新网银行大数据中心的高级大数据工程师 陈卫,为我们带来了《 Apache DolphinScheduler 在新网银行的实践应用》。

本次分享分为四个环节:

  1. 新网银行引入 Apache DolphinScheduler 的背景介绍

  2. Apache DolphinScheduler 的应用场景

  3. 对新网银行的优化与改造

  4. 新网银行使用 Apache DolphinScheduler 的后续计划

Apache DolphinScheduler

陈卫 

新网银行 大数据中心 高级大数据工程师

11 年工作经验,早期从事数据仓库建设,后转向大数据基础平台、调度系统等建设,有传统金融行业、互联网数据仓库、数据集市建设经验,多年的调度系统建设经验,咪咕文化分析云调度系统设计,报表平台设计,目前主要负责新网银行 DataOps 体系相关系统建设(离线开发,指标系统,标签系统)。

01

背景介绍

我们选择使用 Apache DolphinScheduler 主要基于三大需求:研发场景的统一、测试场景的优化,以及投产部署场景优化。

01

研发场景

过去,我们在数据开发过程中无统一的开发工具,因此新网银行在开发工作过程中,需要在多个工具间来回切换,导致过高的开发成本;

另一方面,我们在开发过程中的参数替换需求无法满足,无法进行即席调试,无现成工具支持开发态与生产态离线任务。

02

测试场景

在测试场景的部署的过程中,当我们的开发人员将脚本提供给测试,返回的文档却相当不友好。尤其是需要在多个版本多个场景中部署的时候,测试人员的任务量骤增,可视化的部署也相对较弱,无法进行较友好的自动化测试。

03

投产部署

  • 当前调度系统配置复杂,可视化效果差;

  • 开发与生产环境网络物理隔离,因此开发环境代码部署至生产环境流程长,易出错。测试环境无法充分体现生产环境配置,手动配置文件易出错,易漏配;

  • 运维监控能力不足,可视化效果差,无法在线查看日志,故障排除进入监控机房须登录物理机器,流程复杂。

02

应用场景

我们应用 Apache DolphinScheduler 的场景主要有以下离线数据开发以及任务调度、准实时数据开发以及任务调度以及其他非 ETL 用户定义数据跑批三类。

01

离线数据开发以及任务调度

在离线数据开发以及任务调度中,主要应用于我们的银行业的数据仓库、数据集市等,数据包括一些离线数据,按日按月的离线加工的数据等。

02

准实时数据开发以及任务调度

在新网银行中准实时的数据是通过 Flink 从上游的消息队列数据库的日志里面进行融合计算,补全相关维度信息后,把数据推送到 Clickhouse 内进行处理。但按分钟级进行跑批计算,但相对于日常的按日跑批的调度,会有一些特殊的需求。

03

其他非ETL用户定义数据跑批

我们有这部分的应用是通过一些内部的低代码平台来实现功能,我们将应用系统开放给业务人员,他们可以自助分析应用数据,不需要开发人员处理。业务人员定义好后,可以自助对这部分数据进行跑批。

1、离线数据开发以及任务调度

DS

其中,我们在离线数据开发和任务调度场景中应用 Apache DolphinScheduler ,主要涉及任务开发调式、历史的任务集成、工作流与任务分离、项目环境变量、数据源查找五个板块。

1、任务开发调式(SQL,SHELL,PYTHON,XSQL等),在线开发调式(在下查看日志,在线查看 SQL 查询返回结果)。WEBIDE 可以自动对弹窗变量替换,会根据用户的设置以及默认的处理进行动态替换。

2、历史的任务集成

银行业大部分数仓已经建立了四五年,有很多的历史任务,因此,我们不希望我们新的系统上线的时候,用户需要自主改造代码,因为这样会导致用户的使用成本相对过高。

3、工作流与任务分离

开发直接开发任务并调式、测试,工作流直接引用已开发任务,这样我们的任务开发与我们的任务编排就进行了相应的切割。

4、项目环境变量

新增项目环境变量,项目环境变量默认适配项目内的所有作业,这样我们不需要在每一个工作流内配置,每个项目可以直接引用。

5、数据源

我们按数据源名称查找数据源,支持 phoenix 等数据源。后续我们希望任务可以导入导出,但在导入导出的过程中,我们任务中的参数定义,数据源等不能进行改变,这样从测试就可以直接导向直接投产,在生产方面就会较为简单。

2、准实时的任务

DS

  1. 任务开发调式(SQL),在线开发调式(在线查看日志,在线查看 SQL 查询返回结果),WEBIDE 中弹窗替换脚本变量。

  2. Clickhouse 数据源 HA 配置集成支持。但在离线跑批中会出现一个小问题,即如果当前端口不可用,可能直接报错,在这一块,需要进行额外的处理。

  3. 准实时工作流单实例运行,如已有初始化实例,或存在正在进行的工作流实例,即使触发了下一批次,也不会触发工作流的运行。

3、其他非ETL用户定义数据跑批

DS

1、我们目前有来自指标管理平台推送的模型数据计算任务,这些用户自定的简单报表,平台会动态生成 SQL ,随后直接推送到离线调度中。未来这一过程将不会有开发人员参与。

2、在标签管理系统中,我们主要通过生成特殊的插件任务来配适。

03

优化改造

1、新网银行现状

DS

在新网银行,每天都有大约 9000+ 的任务实例产生,其中实时任务占据多数。如今,我们已经使用 Apache DolphinScheduler ,在很多项目中完成实时与准实时的跑批,指标管理系统的离线跑批等,包括对集成的支持 XSQL 内部 SQL 工具进行跑批。

在右侧的截图中我们可以看到,我们其实完成了任务独立,将参数进行二次替换。另外,在任务血缘方面,尤其是 SQL 类的任务,我们可以做到自动解析,也可以手动增加。这主要用于我们工作流的自动编排,如公司内部的任务地图等。

为了满足以上的业务需求,我们对 Apache DolphinScheduler 进行了如下五大优化,同时也列出了相应的在改造过程中必须要注意的修改。

  1. 项目通过环境进行认为在不同场景下的各类(开发、测试);

  2. 环境变量与项目、环境进行隔离,但不同环境环境变量名称保持一致;

  3. 数据源通过项目、环境进行隔离,但不同环境数据源名称保持一致;

  4. 新增非 JDBC 数据源,ES,Livy等。因为在内部透明的应用中,需要 Livy 作为数据服务框架,对接 Spark job 进行数据脱敏。

2、独立任务

DS

  • 开发独立的任务开发,调试,配置页面,能够支持项目环境变量

  • JDBC,XSQL 的任务能够通过数据源名称引用数据源

  • 开发交互式 WEBIDE 调试开发

  • 完成参数优化,支持用户${参数}并引用系统内置时间函数

  • 完成独立 SQL、XQSL 自动血缘解析

  • 完成 SQL 自动参数解析

3、工作流启动逻辑优化

DS

  • 准实时工作流单实例运行,如已存在正在运行的工作流实例,则忽略本次运行

  • 增加环境控制策略,工作流根据不同的环境引用不同的环境变量、数据源访问连接,比如如果提前配置了灾备环境和生产环境,一旦生产环境出现问题,可以一键切换到灾备环境中。

  • 优化由于工作流、任务分离带来的调度问题,主要包括异常的检测

4、导入导出优化

DS

  • 新增导入导出任务、任务配置及其资源文件等

  • 由于银行业和金融业有许多开发测试环境网络和生产网络是不一致的,所以需要在多个环境中处理数据时,导出一个相对友好的资源脚本工作流以及资源文件信息。

  • 新增工作流导入导出逻辑,处理由于不同数据库实例自增ID存在的数据冲突问题

  • 导航式导入导出,版本管理,主要应对紧急情况时,部分代码的回退等等

5、告警体系改进与优化

DS

  • 对接新网银行内部告警系统,默认对任务创建人员订阅告警组用户进行告警

  • 增加策略告警(启动延迟、完成延迟),对重点任务进行启动、完成延迟告警

6、对接内部系统

DS

  • 模型类任务运行以及监控

  • 报表推送类任务运行以及监控

  • 对接内部 IAM SSO 统一登录认证系统

  • 按网络不同,限定特定功能(代码编辑,工作流运行,任务运行等)

金融行业有一个特殊的现象,就是我们的投产需要在特定的机房去做,我们必须限定某些操作只能在机房中完成,但我们也需要减少修改一次的成本,我们希望开发在看到日志以后,直接在办公网络中进行修复,修复完成后再去机房进行投产。

如上图所示,我们主要基于这种维度模型理论自动创建报表。配置后,我们根据配置报表逻辑,进行多个表的代码合并计算。聚合计算完成后推送到报表服务器。这样业务用户可以按照我们提供的一些基础功能。直接进行数据聚合,不需要去写 SQL ,也避免了业务端用户不安给我们提出临时的需求。

04

后续计划

  1. 向更多的项目组推广离线数据研发平台

  2. 逐步替换行内已有调度系统,实现所有离线任务平稳迁移

  3. 调度系统下沉,对接行数据研发管理系统

技术目标

DS

  1. 更加智能化、自动化的任务调度、编排系统,降低调度系统在用户侧的使用门槛

  2. 运行监控、预测,面相与运维人员提供更加友好的运维监控,任务完成时间预测等功能

  3. 全局视图功能,面向开发、运维人员提供离线任务的全局视图,提供数据血缘、影响分析功能

  4. 进一步集成行内定制的配置模块化,降低开发人员的开发成本

  5. 与数据质量管理平台进行整合集成

  6. 用户定义木板任务支持

谢谢大家,我今天的分享就到这里。

参与贡献

随着国内开源的迅猛崛起,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/docs/development/contribute.html

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

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

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

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

活动推荐

开源之夏是由“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,由中国科学院软件研究所与 openEuler 社区共同举办,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展,培养和发掘更多优秀的开发者。

学生可自主选择感兴趣的项目进行申请,并在中选后获得社区导师亲自指导。根据项目的难易程度和完成情况,参与者还将获取开源之夏活动奖金和结项证书。

开源之夏活动官网:https://summer.iscas.ac.cn/

欢迎加入交流群交流。

更多精彩推荐

☞又是一年开源之夏,八大课题项目奖金等你来拿!

☞Apache DolphinScheduler 2.X保姆级源码解析,中国移动工程师揭秘服务调度启动全流程

☞插件扩充,血缘耦合系统,生产环境优化,提高Apache DolphinScheduler易用性的应用改

☞中国联通改造 Apache DolphinScheduler 资源中心,实现计费环境跨集群调用与数据脚本一站式访问

☞达人专栏 | 还不会用 Apache Dolphinscheduler?大佬用时一个月写出的最全入门教程

点击阅读原文,免费报名参加【开源之夏】活动!

金融任务实例实时、离线跑批,Apache DolphinScheduler 在新网银行的三大应用场景与五大优化...相关推荐

  1. 云+X案例展 | 金融类:金山云为新网银行重塑金融服务提供云计算动力

    本案例由金山云投递并参与评选,CSDN云计算独家全网首发:更多关于[ 云+X 案例征集]的相关信息, 点击了解详情丨挖掘展现更多优秀案例,为不同行业领域带来启迪,进而推动整个"云+行业&qu ...

  2. 学习笔记-如何设计离线跑批系统

    一.基本概念 离线跑批:通常指批量加工数据.完成一系列流程的定时任务. 业务场景:在银行.金融.支付出现较多,其他行业也可能涉及. 1. 定时的数据状态更新(到期失效) 2. 数据计算(计算罚息.计提 ...

  3. 「金融科技50+」新网银行李秀生:第三次金融业信息技术革新

    [ 亿欧导读 ] ①新网银行的基本定位:数字普惠.万能连接:②头部企业具备转型升级的能力,不论是自建场景和渠道还是与场景方合作必然要融入其中:③民营银行的吸储能力与传统银行没有可比性,因此业务上更注重 ...

  4. 新网银行党委书记、执行董事江海:让数据多跑路,让客户不跑路

    四川在线消息(记者 张舒 李欣忆)4月18日,新网银行党委书记.执行董事江海在"2018天府论坛"发表题为"新金融--科技的力量"演讲.江海认为在科技力量的驱动 ...

  5. 小米布局金融5年:新网银行遭银保监通报侵权,小米数科被列入经营异常

    作者 李览青 来源 含金量 3月18日,银保监会消费者权益保护局发布通报称,四川新网银行股份有限公司(下称"新网银行")在与一家互联网汽车消费分期服务平台合作业务中,存在侵害消费者 ...

  6. 突破单点瓶颈、挑战海量离线任务,Apache Dolphinscheduler在生鲜电商领域的落地实践

    点亮 ⭐️ Star · 照亮开源之路 GitHub:https://github.com/apache/dolphinscheduler 精彩回顾 近期,食行生鲜的数据平台工程师单葛尧在社区线上 M ...

  7. 2019年“创青春.交子杯”新网银行高校金融科技挑战赛-AI算法赛道比赛总结

    比赛已经结束,很荣幸能和队友一起拿到这个冠军,非常感谢队友的付出,写个总结,算是对这几个月付出的一个交代. 一.简述 队名:学学没完 队伍成绩: 初赛榜 0.85245 排名第一 (a榜第二,b榜重回 ...

  8. 日均 6000+ 实例,TB 级数据流量,Apache DolphinScheduler 如何做联通医疗大数据平台的“顶梁柱”?...

    作者 | 胡泽康 鄞乐炜 Profile 作者简介 胡泽康 联通(广东)产业互联网公司  大数据工程师,专注于开源大数据领域,从事大数据平台研发工作 鄞乐炜 联通(广东)产业互联网公司 大数据工程师, ...

  9. 感谢有你!Apache DolphinScheduler 项目 GitHub star 突破 8k

    本周伊始,Apache DolphinScheduler 项目在 GitHub 上的 Github Star 总数首次突破 8K.目前,Apache DolphinScheduler 社区已经拥有 C ...

最新文章

  1. 学习动态性能表(20)--v$waitstat
  2. 在zabbix web上进行监控主机配置
  3. Tensor数据相关的运算、函数讲解及与numpy区别
  4. 【期望】选书问题(金牌导航 期望-7)
  5. asp教室使用_为什么要在教室中使用开放式硬件?
  6. 鸿蒙什么时候出来,鸿蒙系统什么时候发布
  7. 3、Keras中的顺序模型Sequential和函数式模型Model
  8. 实践与交流:采取“硬刷”方式完美激活Windows 7旗舰版的具体方法步骤(图文详解教程)...
  9. hotnets 2019 Using ground relays for low-latency wide-area routing in megaconstellations 阅读报告
  10. Android低功耗蓝牙通讯
  11. 按键精灵修改html内容,按键精灵批量开网页点击
  12. 有了这个列表,程序员不愁没练手的小项目了
  13. C和C++不安全?Android 支持 Rust 开发操作系统
  14. 不是所有数学命题都是可以被证明或证伪
  15. php可以开发大型网站吗?其实这个问题不用回答
  16. 轻快的vim(二):插入
  17. 设计原则 单一职责原则、开放封闭原则、依赖倒置原则、里氏代换原则、迪米特法则
  18. 【第十二届蓝桥杯国赛真题】2021年第12届蓝桥杯JAVA B组国赛真题
  19. 漏洞挖掘工具-CE(Cheat Engine) 简介
  20. 【Unity】物体爆炸,碎片横飞

热门文章

  1. turtle八角图形绘制
  2. 单招职业适应性考试题计算机,单招职业适应性测试题库答案
  3. python psutil替代_psutil
  4. 数位dp总结 之 从入门到模板
  5. 机器学习算法系列(十四)-硬间隔支持向量机算法(Hard-margin Support Vector Machine)
  6. HTML学生个人网站作业设计:电影网站设计——电影售票平台网站(8页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
  7. springboot项目报错:ERROR 9112 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] 的解决办法
  8. google android plc,Android Studio 4.0发布 为Android 11做好准备
  9. jquery实现元素的隐藏、显示
  10. 微信公众号与项目的绑定(笔记)