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

news2024/9/20 14:41:05

文章作者:尚志忠

编辑整理:曾辉

行业背景

随着大数据、云计算、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.coloradmin.cn/o/2149160.html

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

相关文章

U 盘显示需要格式化才能用?一针见血的修复方法在这里!速看!

在日常使用电脑的过程中,我们常常会遇到各种让人头疼的问题,其中之一就是当插入 U 盘时,突然弹出提示 “U 盘需要格式化才能使用”。这可让很多人慌了神,毕竟 U 盘里可能存储着重要的文件资料。别着急,下面就为大家介绍…

基于eBPF的procstat软件追踪程序垃圾回收(GC)事件

在性能敏感的应用程序中,偶尔遇到程序无故卡顿是开发者们常见的挑战之一。这种现象可能会表现为突然的延迟、系统响应时间增加、吞吐量的下降。这类问题的根源可能是编程语言的垃圾回收(Garbage Collection,GC)导致,尤…

超易用的AI训练页面!训练推理一体化助你快速炼制AI模型!

模型训练页面展示 AI绘画的热度也不是一天两天了。之前很火的粘土画风转换、AI漫画风格图像等等也都是由AI绘画来实现的。但要想训练一个模型需要很多繁琐的步骤,甚至很多小白都找不到训练模型的资源。 不过现在这个问题已经不需要担心了,厚德云推出了一…

vue websocket 使用

基于webSocket通信的库主要有 socket.io,SockJS 关于SockJS的使用 先安装 sockjs-client 和 stompjs npm install sockjs-client npm install stompjs import SockJS from sockjs-client; import Stomp from stompjs; export default { data () { …

一文看懂Elasticsearch的技术架构:高效、精准的搜索神器

一、概述 Elasticsearch 以其强大的全文本搜索功能而闻名。速度之所以这么快,因为 Elasticsearch 核心采用的是倒排索引;它功能之所以这么强大,是因为采用了可调相关度分数、高级查询 DSL 以及可提升搜索能力的诸多功能。 然而全文本搜索只是…

OpenCV特征检测(4)检测图像中的角点函数cornerHarris()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 Harris 角点检测器。 该函数在图像上运行 Harris 角点检测器。类似于 cornerMinEigenVal 和 cornerEigenValsAndVecs,对于每个像素 (…

LeetCode[中等] 54.螺旋矩阵

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 思路:定义方向数组,按照顺时针顺序:右(0,1),下(1,0),左(0,-1),上(0,-1) 从矩阵的左上角开始遍历…

卷积参数量计算公式

1. 普通卷积(Standard Convolution) 普通卷积的参数量计算包括卷积核的权重和可能的偏置项。 2. 深度卷积(Depthwise Convolution) 深度卷积是逐通道的卷积操作,每个输入通道都有一个独立的卷积核。 3. 逐点卷积&…

骨传导耳机哪个牌子好?盘点口碑最好的5款骨传导耳机!

在快节奏的现代生活中,耳机成为了我们与外界沟通的重要桥梁,无论是在通勤路上、健身锻炼,还是在工作学习中,耳机都扮演着不可或缺的角色。而在众多耳机类型中,骨传导耳机以其独特的声音传导方式和健康舒适的佩戴体验&a…

C语言中的assert断言

Assert断言 断言是程序中处理异常的一种高级形式。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。 用法: #…

Qt窗口——QDockWidget

文章目录 浮动窗口浮动窗口使用示例 浮动窗口 QDockWidget浮动窗口可以认为是子窗口,每一个子窗口都可以停靠在四周,像Qt Creator页面,就很多的子窗口: 浮动窗口使用示例 创建: QDockWidget* dockWidget new QDock…

宝马I-Plus手动变速器、K手动变速器、G手动变速器解析

(一) I-Plus手动变速器 1、技术特点 (1)改进齿轮组件结构。I-Plus手动变速器采用第四挡(直接挡)高转速方案,这样可以在保持轴中心距不变的前提下减小啮合力。由此提高驱动力矩后,使得在带有N53B3000发动机的528i车型上首次使用 I 手动变速器。 对啮合面几…

Python精选200Tips:151-155

实战项目 P151--气象数据爬取技术栈:数据爬虫P152--求解数独问题技术栈:代码逻辑+回溯法P153--疾病传播模型的100天模拟技术栈:SIR 模型(易感-感染-恢复模型)P154--复杂函数的最值求解技术栈:粒子群优化算法P155-- 评论情感分析技术栈:snownlp和jieba的应用运行系统:ma…

Opencv+Cuda编译的保姆级别教程

OpencvCuda编译的保姆级别教程 一、环境总览二、环境准备2.1 opencv和opencv扩展2.2 cuda环境下载2.2.1 首先电脑要有英伟达的显卡2.2.2 然后查看显卡驱动版本2.2.3 下载Cuda Toolkit工具包2.2.4 下载Cudnn库 2.3 CMake下载 三、CMake配置步骤3.1 加载路径第一次Configure3.1.1…

前端——表格、列表标签

今天我们来学习一下web开发里面的表格标签、列表标签 常用快捷键&#xff1a; shift alt 下 复制粘贴选中内容 表格标签 table HTML 表格由 <table> 标签来定义。 HTML 表格是一种用于展示结构化数据的标记语言元素。 每个表格均有若干行&#xff08;由 <tr>…

yolov5测试代码

一般源码的测试代码涉及很多文件&#xff0c;因项目需要写一个独立测试的代码。传入的是字典 import time import cv2 import os import numpy as np import torch from modules.detec.models.common import DetectMultiBackend from modules.detec.utils.dataloaders import …

京东商品属性的详细api数据解析:颜色、尺寸与材质

京东&#xff08;JD.com&#xff09;作为一个大型电商平台&#xff0c;其商品信息通过API接口提供给开发者或第三方服务使用&#xff0c;以便进行商品搜索、展示、分析等操作。然而&#xff0c;直接访问京东的详细商品属性&#xff08;如颜色、尺寸、材质等&#xff09;API通常…

数据的表示和存储 第2讲 定点数的编码表示

​ 互联网行业 算法研发工程师 ​ 全文概括&#xff1a; 本讲介绍了定点数的编码表示&#xff0c;主要包括原码、补码和移码。 原码表示方式简单&#xff0c;正数用0表示&#xff0c;负数用1表示&#xff0c;但存在表示不唯一和加减运算不统一的问题。 补码表示方式解决了…

zabbix“专家坐诊”第256期问答

原作者&#xff1a;乐维社区 原文链接&#xff1a;https://forum.lwops.cn/questions 问题一 Q&#xff1a;zabbix 6.4.18版本的&#xff0c;使用zabbix_agentd2监控mysql数据库&#xff0c;只能在界面配置mysql的相关信息吗&#xff1f;这个在zabbix表里面是明文存储的&#x…

集采良药:从“天价神药”到低价良药,伊马替尼的真实世界研究!

在医疗科技日新月异的今天&#xff0c;有一种药物以其卓越的疗效和深远的影响力&#xff0c;成为了众多患者心中的“精准武器”——伊马替尼。这款药物不仅在慢性髓细胞白血病&#xff08;CML&#xff09;的治疗上屡创佳绩&#xff0c;更是胃肠道间质瘤&#xff08;GIST&#x…