在新网银行,每天都有大量的工作实例产生,其中实时工作占据少数。为了更好地解决工作实例,新网银行在综合思考之后,抉择应用 Apache DolphinScheduler 来实现这项挑战。现在,新网银行多个我的项目曾经实现了实时与准实时的跑批,指标管理系统的离线跑批,利用于离线数据开发和任务调度、准实时数据开发和任务调度,以及其余非 ETL 用户定义数据跑批三类场景中。
为了更好地适应业务需要,新网银行是如何基于 Apache DolphinScheduler 做革新的呢?在 Apache DolphinScheduler 4 月 Meetup 上,来自新网银行大数据中心的高级大数据工程师 陈卫,为咱们带来了《Apache DolphinScheduler 在新网银行的实际利用》。
本次分享分为四个环节:
- 新网银行引入 Apache DolphinScheduler 的背景介绍
- Apache DolphinScheduler 的利用场景
- 对新网银行的优化与革新
- 新网银行应用 Apache DolphinScheduler 的后续打算
陈卫
新网银行 大数据中心 高级大数据工程师
11 年工作教训,晚期从事数据仓库建设,后转向大数据根底平台、调度零碎等建设,有传统金融行业、互联网数据仓库、数据集市建设教训,多年的调度零碎建设教训,咪咕文化剖析云调度零碎设计,报表平台设计,目前次要负责新网银行 DataOps 体系相干零碎建设 (离线开发,指标零碎,标签零碎)。
01 背景介绍
咱们抉择应用 Apache DolphinScheduler 次要基于三大需要:研发场景的对立、测试场景的优化,以及投产部署场景优化。
01 研发场景
过来,咱们在数据开发过程中无对立的开发工具,因而新网银行在开发工作过程中,须要在多个工具间来回切换,导致过高的开发成本;
另一方面,咱们在开发过程中的参数替换需要无奈满足,无奈进行即席调试,无现成工具反对开发态与生产态离线工作。
02 测试场景
在测试场景的部署的过程中,当咱们的开发人员将脚本提供给测试,返回的文档却相当不敌对。尤其是须要在多个版本多个场景中部署的时候,测试人员的任务量骤增,可视化的部署也绝对较弱,无奈进行较敌对的自动化测试。
03 投产部署
- 以后调度系统配置简单,可视化成果差;
- 开发与生产环境网络物理隔离,因而开发环境代码部署至生产环境流程长,易出错。测试环境无奈充分体现生产环境配置,手动配置文件易出错,易漏配;
- 运维监控能力有余,可视化成果差,无奈在线查看日志,故障排除进入监控机房须登录物理机器,流程简单。
02 利用场景
咱们利用 Apache DolphinScheduler 的场景次要有以下离线数据开发以及任务调度、准实时数据开发以及任务调度以及其余非 ETL 用户定义数据跑批三类。
01 离线数据开发以及任务调度
在离线数据开发以及任务调度中,次要利用于咱们的银行业的数据仓库、数据集市等,数据包含一些离线数据,按日按月的离线加工的数据等。
02 准实时数据开发以及任务调度
在新网银行中准实时的数据是通过 Flink 从上游的音讯队列数据库的日志外面进行交融计算,补全相干维度信息后,把数据推送到 Clickhouse 内进行解决。但按分钟级进行跑批计算,但绝对于日常的按日跑批的调度,会有一些非凡的需要。
03 其余非 ETL 用户定义数据跑批
咱们有这部分的利用是通过一些外部的低代码平台来实现性能,咱们将利用零碎凋谢给业务人员,他们能够自助剖析利用数据,不须要开发人员解决。业务人员定义好后,能够自助对这部分数据进行跑批。
1、离线数据开发以及任务调度
其中,咱们在离线数据开发和任务调度场景中利用 Apache DolphinScheduler,次要波及工作开发调式、历史的工作集成、工作流与工作拆散、我的项目环境变量、数据源查找五个板块。
1、工作开发调式(SQL,SHELL,PYTHON,XSQL 等),在线开发调式(在下查看日志,在线查看 SQL 查问返回后果)。WEBIDE 能够主动对弹窗变量替换,会依据用户的设置以及默认的解决进行动静替换。
2、历史的工作集成
银行业大部分数仓曾经建设了四五年,有很多的历史工作,因而,咱们不心愿咱们新的零碎上线的时候,用户须要自主革新代码,因为这样会导致用户的应用老本绝对过高。
3、工作流与工作拆散
开发间接开发工作并调式、测试,工作流间接援用已开发工作,这样咱们的工作开发与咱们的工作编排就进行了相应的切割。
4、我的项目环境变量
新增我的项目环境变量,我的项目环境变量默认适配我的项目内的所有作业,这样咱们不须要在每一个工作流内配置,每个我的项目能够间接援用。
5、数据源
咱们按数据源名称查找数据源,反对 phoenix 等数据源。后续咱们心愿工作能够导入导出,但在导入导出的过程中,咱们工作中的参数定义,数据源等不能进行扭转,这样从测试就能够间接导向间接投产,在生产方面就会较为简单。
2、准实时的工作
- 工作开发调式(SQL),在线开发调式(在线查看日志,在线查看 SQL 查问返回后果),WEBIDE 中弹窗替换脚本变量。
- Clickhouse 数据源 HA 配置集成反对。但在离线跑批中会呈现一个小问题,即如果以后端口不可用,可能间接报错,在这一块,须要进行额定的解决。
- 准实时工作流单实例运行,如已有初始化实例,或存在正在进行的工作流实例,即便触发了下一批次,也不会触发工作流的运行。
3、其余非 ETL 用户定义数据跑批
1、咱们目前有来自指标治理平台推送的模型数据计算工作,这些用户自定的简略报表,平台会动静生成 SQL,随后间接推送到离线调度中。将来这一过程将不会有开发人员参加。
2、在标签管理系统中,咱们次要通过生成非凡的插件工作来配适。
03 优化革新
1、新网银行现状
在新网银行,每天都有大概 9000+ 的工作实例产生,其中实时工作占据少数。现在,咱们曾经应用 Apache DolphinScheduler,在很多我的项目中实现实时与准实时的跑批,指标管理系统的离线跑批等,包含对集成的反对 XSQL 外部 SQL 工具进行跑批。
在右侧的截图中咱们能够看到,咱们其实实现了工作独立,将参数进行二次替换。另外,在工作血统方面,尤其是 SQL 类的工作,咱们能够做到主动解析,也能够手动减少。这次要用于咱们工作流的主动编排,如公司外部的工作地图等。
为了满足以上的业务需要,咱们对 Apache DolphinScheduler 进行了如下五大优化,同时也列出了相应的在革新过程中必须要留神的批改。
- 我的项目通过环境进行认为在不同场景下的各类(开发、测试);
- 环境变量与我的项目、环境进行隔离,但不同环境环境变量名称保持一致;
- 数据源通过我的项目、环境进行隔离,但不同环境数据源名称保持一致;
- 新增非 JDBC 数据源,ES,Livy 等。因为在外部通明的利用中,须要 Livy 作为数据服务框架,对接 Spark job 进行数据脱敏。
2、独立工作
- 开发独立的工作开发,调试,配置页面,可能反对我的项目环境变量
- JDBC,XSQL 的工作可能通过数据源名称援用数据源
- 开发交互式 WEBIDE 调试开发
- 实现参数优化,反对用户 ${参数} 并援用零碎内置工夫函数
- 实现独立 SQL、XQSL 主动血统解析
- 实现 SQL 主动参数解析
3、工作流启动逻辑优化
- 准实时工作流单实例运行,如已存在正在运行的工作流实例,则疏忽本次运行
- 减少环境控制策略,工作流依据不同的环境援用不同的环境变量、数据源拜访连贯,比方如果提前配置了灾备环境和生产环境,一旦生产环境呈现问题,能够一键切换到灾备环境中。
- 优化因为工作流、工作拆散带来的调度问题,次要包含异样的检测
4、导入导出优化
- 新增导入导出工作、工作配置及其资源文件等
- 因为银行业和金融业有许多开发测试环境网络和生产网络是不统一的,所以须要在多个环境中解决数据时,导出一个绝对敌对的资源脚本工作流以及资源文件信息。
- 新增工作流导入导出逻辑,解决因为不同数据库实例自增 ID 存在的数据抵触问题
- 导航式导入导出,版本治理,次要应答紧急情况时,局部代码的回退等等
5、告警体系改良与优化
- 对接新网银行外部告警零碎,默认对工作创立人员订阅告警组用户进行告警
- 减少策略告警(启动提早、实现提早),对重点工作进行启动、实现提早告警
6、对接外部零碎
- 模型类工作运行以及监控
- 报表推送类工作运行以及监控
- 对接外部 IAM SSO 对立登录认证零碎
- 按网络不同,限定特定性能(代码编辑,工作流运行,工作运行等)
金融行业有一个非凡的景象,就是咱们的投产须要在特定的机房去做,咱们必须限定某些操作只能在机房中实现,但咱们也须要缩小批改一次的老本,咱们心愿开发在看到日志当前,间接在办公网络中进行修复,修复实现后再去机房进行投产。
如上图所示,咱们次要基于这种维度模型实践主动创立报表。配置后,咱们依据配置报表逻辑,进行多个表的代码合并计算。聚合计算实现后推送到报表服务器。这样业务用户能够依照咱们提供的一些根底性能。间接进行数据聚合,不须要去写 SQL,也防止了业务端用户不安给咱们提出长期的需要。
04 后续打算
- 向更多的项目组推广离线数据研发平台
- 逐渐替换行内已有调度零碎,实现所有离线工作安稳迁徙
- 调度零碎下沉,对接行数据研发管理系统
技术指标
- 更加智能化、自动化的任务调度、编排零碎,升高调度零碎在用户侧的应用门槛
- 运行监控、预测,面相与运维人员提供更加敌对的运维监控,工作实现工夫预测等性能
- 全局视图性能,面向开发、运维人员提供离线工作的全局视图,提供数据血统、影响剖析性能
- 进一步集成行内定制的配置模块化,升高开发人员的开发成本
- 与数据品质治理平台进行整合集成
- 用户定义木板工作反对
谢谢大家,我明天的分享就到这里。
参加奉献
随着国内开源的迅猛崛起,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”volunteer+wanted”
如何参加奉献链接:https://dolphinscheduler.apache.org/zh-cn/docs/development/contribute.html
来吧,DolphinScheduler 开源社区须要您的参加,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是微小的。
参加开源能够近距离与各路高手切磋,迅速晋升本人的技能,如果您想参加奉献,咱们有个贡献者种子孵化群,能够增加社区小助手微信 (Leonard-ds),手把手教会您 (贡献者不分程度高下,有问必答,要害是有一颗违心奉献的心)。
增加小助手微信时请阐明想参加奉献。
来吧,开源社区十分期待您的参加。