中电信翼康基于Apache Dolphinscheduler重构“星海济世医疗数据中台”实践经验分享

news/2024/9/20 13:34:01

文章作者:尚志忠

编辑整理:曾辉

行业背景

随着大数据、云计算、5G、人工智能等技术的快速发展,以及医疗信息化建设的不断深入,数据中台作为打通医疗数据融合壁垒、实现数据互通与共享、构建高效数据应用的关键信息平台,正逐渐成为推动医疗行业数字化转型和创新发展的重要力量。

星海·济世医疗数据中台介绍

中国电信依托多年行业积累,定制打造医疗行业数据中台,以夯实卫生健康信息化新基建能力为目标,赋能行业客户,深化数据集成治理与开发应用能力,推进健康医疗大数据应用发展,充分释放数据价值。

星海·济世医疗数据中台以“湖仓一体、流批一体”技术为核心,围绕健康医疗数据在集成、存储、治理、建模、分析、挖掘、服务、应用、流通等各个环节的需求,构建数据全生命周期管理的能力平台。

关于数据处理中任务调度的思考

在医疗行业的数据处理过程中,存在着以下常见的问题:

  • 复杂的数据处理逻辑与流程未能实现统一的管理和调度,数据处理流程长,依赖关系错综复杂,不易于维护和使用,同时影响工作效率,间接提高了使用数据的成本。

  • 传统的调度工具支持的组件有限,不能满足在医疗行业中多场景多种异构数据源的数据处理和使用,且各种数据处理逻辑和关系不能够可视化管理,只依赖脚本和定时任务不足以支撑目前的业务发展,不能可视化的反应任务之间的依赖关系,增加了业务处理的复杂性。

  • 多系统之间的定时任务缺乏统一的调度机制,这些任务可能由不同系统的不同团队开发和维护,导致资源浪费和运维成本上升。缺乏统一的调度平台,使得运维人员需要手动监控和管理这些任务。

基于任务调度和管理相关的以上问题,我们认为一个平台级的产品必要要有一款优秀的调度工具,不仅要具备基于时序的主动触发能力和基于事件的被动触发能力,同时要能够支持丰富的组件方便数据处理任务的开发,还需要具备运行时监控能力和分布式的架构下资源调度及均衡能力。

产品架构图

经过不断的学习和探索使用发现Apache DolphinScheduler 调度器在处理以上问题的过程中,有明显的优势。

技术特点及优势

技术特点

Apache DolphinScheduler 是一个分布式易扩展的带有强大可视化 DAG 界面的新一代工作流调度平台 ,立项之初即确立了使命 —— “解决大数据任务之间错综复杂的依赖关系,使整个数据处理过程直观可见”,至此配置工作流程无需代码即可完成!

作为强大的DAG可视化界面的分布式大数据工作流调度平台,Apache Dolphin Scheduler 解决了复杂的任务依赖关系和简化了数据任务编排的工作。

它以开箱即用的、易于扩展的方式将众多大数据生态组件连接到可处理 100,000 级别的数据任务调度系统中来。

其整体特征如下:

(1)云原生设计:支持多云、多数据中心的跨端调度,同时也支持K8s Docker部署与扩展,性能上可以线性增长,在用户测试情况下最高已经支持10万的并行任务控制;

(2)高可用、高稳定性:去中心化的多Master/Worker的架构,可以自动任务平衡,自动高可用,确保任务在任何节点死机的情况下可以具有完整性完成整体调度;

(3)用户界面友好:可视化的DAG图,包括子任务,条件调度、脚本管理、多租户等方便功能,并具有让运行任务实例与任务模板分开,让你的平台维护人员和数据科学家都有一个方便易用的开发和管理平台;

(4)支持多种数据场景:支持流数据处理,批数据处理,暂停、回复、多租户等,对于spark,hive,MR,flink,clickhouse等等平台都可以方便直接调用;

(5)支持多种调度机制:任务调度机制,支持时间触发,包括定时触发、循环触发、间隔触发;事件触发机制,支持前置触发和后置触发;

(6)支持数据分析、可视化的监控功能、完善的告警模块

任务整体情况监控

Worker监控示例

告警实例

技术优势

首先,‌Apache Dolphinscheduler调度系统的本质是满足用户使用其进行做调度的需求,‌其最大的优势在于方便、‌简易、‌美观,‌这使得即使是不懂代码的人也能使用它进行调度操作。‌

这一点使得Dolphinscheduler调度系统在众多调度系统中脱颖而出,‌成为用户优选的原因之一。‌

其次,‌海豚调度作为开源项目,‌其成功得益于全球顶尖人才的参与和贡献。‌开源模式打破了公司和组织的边界,‌甚至国家和国家的边界,‌使得全球最顶尖的架构师、‌开发者等能够组织到一起,‌共同为项目贡献力量。‌这种模式凝聚了全球最顶尖的人才的想法,‌使得项目能够持续多年,‌并且帮助更多的人,‌而不仅仅是为了某一家公司的盈利或发展。‌

再次,我们将Apache DolphinScheduler和原本采用的系统调度器Azkaban进行了对比,发现Azkaban中的缺点不可忽视,如无可视化界面、任务调度多时易卡死、部署复杂、无法暂停任务、集群扩展差等。

对比如下:

DolphinScheduler与Azkaban对比

用海豚做什么:

  1. 用海豚实现对指标计算程序的定时调度:编写java程序实现指标计算功能,采用海豚可以灵活的传递主程序参数,满足计算程序多维度数据处理,操作可视化。

  2. 对复杂关联查询的关联脚本进行定时调度:海豚支持流式方式组装任务,满足了多表多条件复杂查询串联执行,可以及时监控任务的执行状态,支持重试、指定节点恢复失败、暂停、恢复、终止任务等操作。

综上所述,‌选择Apache Dolphinscheduler调度的原因不仅在于其用户友好、‌易于使用的特点,‌还在于其作为一个开源项目所具有的全球顶尖人才的参与和贡献,‌这些因素共同使得Dolphinscheduler调度成为一个值得选择的调度系统。‌

生产实践

二次开发

我们在使用Apache DolphinScheduler时,经过各种场景的试用和测试,升级了用户体系,重构了项目级参数功能,优化了用户体验,修改了调度Java任务的异常问题。

1、项目级别变量

动态扩展项目中项目级别参数的使用,并在列表中对对应的参数的实际值进行展示等,同时可以根据项目参数的名称对引用了该参数的工作流进行查询跳转。

定义不同的项目级参数,展示实际值

添加引用流程按钮

根据图二中选中的参数查询展示工作流

2、Java类任务

该类任务,支持使用单文件和JAR包作为程序入口。

点击项目管理 -> 项目名称 -> 工作流定义,点击“创建工作流”,进入DAG编辑页面;

拖动工具栏的JAVA任务节点到画板中。

添加java任务流程

Java类任务中相关参数配置

主程序参数:作为普通JAVA程序main方法入口参数;

虚拟机参数:配置启动虚拟机参数;

脚本:若使用JAVA运行类型则需要编写JAVA代码,代码中必须存在Public类,不用写Package语句;

资源:可以是外部JAR包,也可以是其他资源文件,他们会被加入到类路径或模块路径中。

3、个性化界面

按照用户操作习惯,我们重新定制了操作相关的按钮,以及按钮较多时收起、展开;

在项目管理界面,可以动态选择需要的项目包,在无需返回到项目管理首页重新选择项目。

新按钮样式

收起展开较多按钮

项目选择

项目实践

使用Apache DolphinScheduler 之后,我们根据实际业务需要进行二次开发之后,很好的解决了一些需求,下列简述其中几个场景:

1、将原有Azkaban中的调度任务平行迁移到DolphinScheduler中

Azkaban中流程示例:

Azkaban流程定义

Azkaban流程中各个节点执行情况

平行迁移到Apache DolphinScheduler中示例:

DolphinScheduler中流程

2、对于数据源模块,动态扩展了从第三方倒入数据源,增加了数据源的可用性

资产导入数据源

数据源详情

解决了指标计算程序定时调度问题,使用海豚调度可以灵活传递计算程序需要的参数并在调度过程打印相应日志方便跟踪排查问题。

解决了多个复杂的关联查询串联执行时中途被阻断导致的整个全流程失败问题,海豚调度可以在失败的节点重新跑流程,不需要再将成功的节点再重跑一次导致服务器资源过度占用的问题,解决了Flink批流作业被动触发的问题。

在公司项目的生产过程中目前已实现日均1000+的任务被调度处理,包含了4条产品线的20多个业务系统,离线开发的任务多半已迁移在Apache DolphinScheduler进行配置,极大的提升了数据开发人员的研发效率,方便数据开发人员维护工作。

后期发展计划

在日常的运维工作还存在一些问题,主要包括任务失败的及时告警、多项目任务的巡检及对任务完成情况的准确把握等问题。

针对上述问题,计划实施一系列的自动化运维措施,需实现自动化推送功能,每天定时的将生产调度的报告发送到企业微信群中,包括所有任务的执行情况,成功、失败的具体情况;

对失败的任务,增强告警机制,确保任务出现问题是能够及时通知运维团队,并作出迅速的响应和处理。

未来愿景

我们团队对于 Apache DolphinScheduler 的未来愿景主要体现在以下几个方面:

  1. 云原生支持增强

期望Apache DolphinScheduler 进一步增强对云原生环境的支持,在生产环境可使用worker 自动扩缩容特性。

  1. 异构数据源的Join 组件扩展

异构数据源之间的Join组件能极大的提升数据开发的能力和效率,能解决复杂数据任务之前同步数据的一致性问题。

Apache DolphinScheduler 的未来必然能构建一个更加强大、灵活、易用和可靠的开源调度系统,以满足用户对数据处理和调度的复杂需求,推动数据处理技术的发展和进步,希望社区越来越好!

本文由 白鲸开源 提供发布支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/62517.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

ESXi 8.0 中已弃用且不受支持的设备 (88172)

ESXi 8.0 中已弃用且不受支持的设备 (88172)ESXi 8.0 中已弃用且不受支持的设备 (88172) 请访问原文链接:ESXi 8.0 中已弃用且不受支持的设备 (88172),查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org该文为官方 KB 的翻译和整理,方便查询 ESXi 8.0 中不再支持…

帝国cms建立目录不成功!请检查目录权限

当帝国CMS提示“建立目录不成功!请检查目录权限”时,通常是因为帝国CMS在尝试生成静态页面或执行其他文件操作时,遇到了文件系统权限问题。以下是一些解决此问题的步骤: 常见原因及解决办法目录权限不足:解决办法:确保目标目录具有可写的权限。通常,文件权限应设为 644,…

帝国CMS:恢复备份文件刷新时出错——建立目录不成功

当帝国CMS在恢复备份文件刷新时提示“建立目录不成功”,这通常意味着在生成静态页面或存放相关文件的过程中遇到了问题。以下是一些可能的原因及其解决办法: 常见原因及解决办法目录权限问题:解决办法:检查目标目录的权限是否正确。通常文件权限应设为 644,目录权限为 755…

帝国CMS 建立目录不成功!

帝国CMS在尝试建立目录时提示“建立目录不成功”,通常是因为权限问题或其他与文件系统相关的障碍。以下是一些可能的原因及解决方法: 常见原因及解决方法目录权限不足:解决方法:确保目标目录具有可写的权限。通常,文件权限应设为 644,目录权限为 755。可以通过FTP客户端或…

帝国cms数据库连接不上怎么办

当帝国CMS无法连接数据库时,这通常是由多种原因引起的。以下是一些常见的解决步骤: 常见原因及解决办法数据库配置错误:解决办法:检查帝国CMS的数据库配置文件(通常位于 /e/config/config.php),确认数据库服务器地址、用户名、密码和数据库名称是否正确。数据库服务未启…

帝国CMS提示parse error syntax error的解决方法

当帝国CMS提示“Parse error: syntax error”时,这通常意味着PHP解析器遇到了无法理解的代码,最常见的原因是语法错误。以下是一些解决此类问题的方法: 常见原因及解决办法检查语法错误:解决办法:仔细检查报错行附近的代码,查找是否有语法错误,如缺少分号、括号不匹配、…

香橙派5Pro+虚拟机Ubuntu18.04交叉编译+Opencv4.7

1.基础工具安装 ①Ubuntu虚拟机下交叉编译工具链安装 香橙派5Pro为Arm64位架构,因此需要安装g++-aarch64-linux-gnu以及gcc-aarch64-linux-gnu(有其它交叉编译器,本文以此编译器为例)更新软件源 sudo apt update sudo apt upgrate点击查看交叉编译工具链安装 apt-cache sea…

周五学习 -2024/9/20

今天9月20日,出发去徐州! HashMap HashMap的特点HashMap底层是哈希表结构的 依赖hashCode方法和equals方法保证键的唯一 如果键存储的是自定义对象,需要重写hashCode和equals方法DQL-分页查询 SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数; 注意:起始索引从0开始,起始…