关于开源:日均-6000-实例TB-级数据流量Apache-DolphinScheduler-如何做联通医疗大数据平台的顶梁柱

33次阅读

共计 4948 个字符,预计需要花费 13 分钟才能阅读完成。

作者 | 胡泽康 鄞乐炜

作者简介

胡泽康

联通(广东)产业互联网公司  大数据工程师,专一于开源大数据畛域,从事大数据平台研发工作

鄞乐炜

联通(广东)产业互联网公司 大数据工程师,次要从事大数据平台的利用与引擎端开发

01 背景介绍

咱们是联通医疗团队,始终践行 “服务医改,惠及民生” 的使命,全面驱动医疗衰弱产业数字化、智能化转型。

在调度零碎选型初期,咱们团队技术栈 以 JVM 语言 为主,因为 Airflow 的构造体系无奈进行充沛的革新和交融,因而在开源调度零碎的抉择上,咱们次要对 **Azkaban 和 **Apache Dolphin Scheduler 进行了充沛的调研和预演。结果显示,在雷同的环境压测下,Azkaban 在稳定性上存在有余,会有工作积压和 executor 负载过低等影响,功能性上也存在肯定的缺点。

咱们 抉择 Apache DolphinScheduler 次要起因 有以下几点:

  • 分布式去中心化构造,零碎的稳定性有足够的保障;
  • 可视化的 DAG 编辑模式,应用成本低;
  • 多我的项目施行、资源隔离和动静扩缩容有残缺的解决方案,可疾速落地;
  • JVM 体系,疾速开发革新和适配。

从 2020 年开始,咱们团队基于 Apache DolphinScheduler(版本 1.3.2)构建了涵盖 数据采集、同步、解决和治理为一体 的大数据平台(UniM-Data)。在理论生产中,以后该平台每天解决超过 6000+ 工作实例,调度零碎承载业务量大,作业定义与调度策略复杂度高。在如此庞杂的任务调度中,**Apache DolphinScheduler ** 施展了重要的作用,向上撑持利用侧的工作下发和治理,向下承接大数据底座的工作编排和调度。

02 UniM-Data 架构

在社区的蓬勃发展下,Apache DolphinScheduler 曾经演进到 3.0 版本,带来了很多优良的个性和启发。UniM-Data 以后在线运行的 Apache DolphinScheduler  原生 版本为 1.3.2,产品迭代降级中排汇和交融了 Apache DolphinScheduler 的优良架构和个性。基于零碎设计和业务需要,咱们团队对 Apache DolphinScheduler 做了肯定的开发革新、适配和代码合并,让其在 UniM-Data 上仍能 稳固撑持线上生产零碎 的运行。

接下来,咱们也筹备致力于 Apache DolphinScheduler 的版本升级,引入更多社区的优良能力。在此也感激社区的奉献,为咱们带来如此优良的我的项目,心愿后续也能奉献咱们的力量,为 Apache DolphinScheduler 的壮大添砖加瓦。

在 UniM-Data 的构建实际中,产品设计与 Apache DolphinScheduler 的格调 存在肯定的抵触 ,因而咱们放弃了原有的 Apache DolphinScheduler 的 UI 前端,从新构建 基于产品格调的前端页面。在 Apache DolphinScheduler 的底层实现中。为了满足平台团队、数仓团队、算法团队和医疗业务团队的理论需要,咱们不仅借助 Apache DolphinScheduler 的优良架构提供的任务调度和失败策略等能力,也在其之上开展了接口拓展、新增工作类型、血统埋点、数据治理工具开发等工作,进行整体架构设计和构建。

UniM-Data 的整体的架构视图如下所示:

技术架构视图

03 Apache DolphinScheduler 的实际与革新

从横向上看,UniM-Data 上元数据和数据安全两个模块贯通数据的全生命周期,Apache DolphinScheduler 在其中表演了要害角色,次要从工作执行器嵌入 血统采集、权限校验和数据探查 等性能上,对生产加以撑持。

元数据模块在 UniM-Data 的设计上属于要害模块,可实现 数据溯源、元数据采集、信息探查 等性能(如下所示)。在全链路数据的变更上,都须要向元数据模块裸露血缘关系,咱们的 解决方案 是在 Apache DolphinScheduler 上进行了各类工作的血统埋点和采集器嵌入,如 Spark SQL、Spark Shell、数据同步等,实现了表级血统的全链路采集。

元数据管理

各类工作的血缘关系解析形式大抵如下:

  • SQL 类型:采纳 Druid SQL 解析,解析源表和指标表信息。HiveSQL 应用 org.apache.hadoop.hive.ql.parse 工具类解析
  • Spark shell:解析 Spark 的 DAG 信息,获取源表和指标表信息
  • 数据同步:采纳 DataX 进行数据同步,利用 DataX 的 Json 信息,解析源表和指标表
  • 利用侧:建设模型设计模块,在数据变更时,同步进行血缘关系推送;利用侧,全副自研模块,可简略嵌入血统采集器进行血统信息推送
  • 工作间:利用 Apache DolphinScheduler 的工作关系,串联表级血统信息

数据安全模块,首先平台侧沿用 Apache DolphinScheduler 的项目管理模式,嵌入数据源隔离、用户权限、文件权限等性能,建设项目间资源隔离环境。在 Apache DolphinScheduler 上,咱们在各类工作的生成上进行权限校验,对立拜访平台权限核心,控制数据拜访平安。

从纵向上看,在 **UniM-Data ** 上,咱们次要借助 Apache Dolphin Scheduler 的任务调度、失败策略和补数等性能,撑持所有工作的既定打算的执行。次要从以下几方面进行了开发和适配:

离线开发

在进行 UniM-Data 的 离线开发性能适配 中,Apache DolphinScheduler (1.3.2)的原生版本在 SQL 工作类型通过 jdbc 连贯时,对 Spark SQL,Hive SQL 的反对上存在性能、稳固、平安认证等问题,以及交互上无奈获取工作执行日志的痛点,加之应用团队的简单需要,所以咱们对离线开发工作做了对立的革新:

1) UniM-Data 的离线工作开发,提供了在线开发和调试性能。在 Apache DolphinScheduler 上,咱们进行了工作编排逻辑的革新,反对工作开发调试确认后造成作业。工作在调试模式运行时,处理结果会缓存起来,撑持在线调试后果预览性能。

在线开发与调试

2) 在原生的 SQL 工作的根底上,增加备注反对、优化 SQL 语句切割逻辑等性能,贴近用户编辑 SQL 的应用习惯

3) 优化 Spark SQL 工作,放弃 Apache DolphinScheduler 原生应用 Spark Thrift Server 的计划,采纳 Spark API 进行封装,并应用 Spark Submit 的形式执行,能够灵便配置资源,解决工作的性能和日志输入问题

4) 优化 Hive SQL 工作,交融 HiveServer2 的 HA 性能,应用 namespace 进行连贯,解决利用端的并发和负载问题

5) 新增 Spark Shell 工作,撑持在线编辑 Spark 代码,在 SparkShell 的执行引擎外部,咱们封装了 ApiProxy 的 API,不便用户疾速读写各数据源

6) 新增 Kerbero 平安认证,在各工作生成阶段,依据成员的 Kerberos 绑定信息,实现票据认证

7)  新增图形化开发工作(外部代号 EasyFlow),搭载 Apache DolphinScheduler 的调度能力,提供低代码能力。现阶段已实现数据处理根本算子的集成,后续打算实现业务类算子的集成,撑持简单业务逻辑造成算子能力。

调度核心

UniM-Data 的调度核心 次要借助 Apache DolphinScheduler 的任务调度能力,根本沿用其工作 高低线、重跑、定时执行等能力,为用户提供工作监控和治理能力。为了使平台与 Apache DolphinScheduler 可能解耦,咱们对其进行了接口拓展,新增和革新了工作增加、工作信息订阅等接口,裸露给平台进行通信。

数据同步

在 2020 年进行数据同步技术选型时,基于医疗信息多源异构的特点,咱们通过考查剖析,认为 Sqoop 尽管在分布式上具备肯定的劣势,然而须要应用 MR 的计算框架,老本较高 。而 DataX 尽管是单过程模式,但能够通过 Apache DolphinScheduler 的调度零碎进行性能躲避,且单过程模式更容易进行管制和排错,DataX 具备开放式的框架,能够在极短的工夫 开发一个新插件,疾速反对新的数据库 / 文件系统,实现架构如下:

在我的项目落地过程中,咱们在开源版本  DataX 上拓展 了诸如百度 Doris、人大金仓 kingbase、华为 openGauss 等国产数据库的适配。

数据治理工具

UniM-Data 上,提供了 数据质控、数据探查、数据辨认等自研治理工具,在 Apache Dolphin Scheduler 上进行较为综合性的拓展和利用。咱们的设计思路是,实现独立的计算引擎,应用 Apache DolphinScheduler 的调度零碎,提供数据治理能力。实现形式次要是在 org.apache.Dolphin

Scheduler.server.worker.task 的 package 上减少对应的工作生成逻辑,通过 Apache DolphinScheduler 的调度能力执行计算引擎。上面以数据质控为例进行阐明。

整体的运行流程

1)利用侧:

  • 模型核心创立质控工作(UniM-Data 的数据表实体对立由模型核心标注和创立)
  • 质控引擎提供表级和字段级质控类型,如记录数、及时性、范畴、规定等质控算子
  • 设置评分规定,依据质控后果造成等级划分
  • 提交工作 Json 至 Apache DolphinScheduler 的 API Server,并将工作控制权托管至调度核心

2) Apache DolphinScheduler 侧:

  • API Server 接管和保留质控工作
  • Master 进行任务调度,向调度核心裸露管制接口
  • Worker 实现对参数的解析和结构,通过权限管制后,生成质控引擎的执行命令,执行计算引擎

3) 输入侧:

  • 报告核心承接质控后果的展现和报告输入
  • 质检异样的抽样数据寄存至 MinIO,以文件模式提供异样数据

引擎实现

数据质控的架构图

依照整体的零碎设计思维,引擎与 Apache DolphinScheduler 别离解耦,各司其职,可独自执行也能够与 Apache DolphinScheduler 配合应用。引擎形象层设计有 source、measure、sink、sample 和 score(记分规定):

  • source:现反对 hive、oracle、mysql、doris、kingbase、openguase、cache、sqlserver 等数据源
  • measure:现建设有记录值、及时性、值域、极值、非空等 10+ 种算子
  • sink:反对 API、CSV
  • sample:反对 MinIO、mysql 的数据样本下发

利用实现

数据质控在利用端采纳配置化形式,升高应用老本,提供了可选表级与字段级质控范畴,进行不同数据的定制化工作设定。

04 成绩与总结

从 2020 年至今,UniM-Data 通过继续的经营与建设,在医疗、经营、科研、应急等业务线条上 有多个我的项目落地 。在我的项目施行落地阶段,UniM-Data 承接着日均超 6000+ 工作实例,面临着数据流量达 TB 级别、零碎 7 *24 小时反对、准确率达 99.9999% 等挑战。Apache DolphinScheduler 作为 UniM-Data 的任务调度核心,基于其优良的架构和丰盛的性能,在理论生产中交出了令人欣慰的答卷, 次要体现在:

  • 基于 Apache DolphinScheduler 的调度能力,开发并提供数据采集、血统、治理等多类执行器,撑持业务的疾速演进
  • 新增性能和业务性接口,在 Apache DolphinScheduler 的调度能力根底上,提供性能更加丰盛的调度核心
  • 基于 Apache DolphinScheduler 的补数和重跑机制,无效升高数仓团队的运维老本,进步数据准确率
  • 去中心化构造,保障整体零碎 7 *24 小时稳固运行
  • 提供多我的项目、多资源的隔离环境,可在较低成本下,提供对立门户、差异化性能和权限校验

05 下一步打算

UniM-Data 目前采纳的是 Apache DolphinScheduler 的 1.3.2 版本,在社区疾速倒退下,为了进一步强化调度零碎和交融优良能力,咱们打算将基线版本升级至社区 3.0 版本,期待 Apache DolphinScheduler 为大家带来更多能力。

正文完
 0