日均 6000+ 实例 TB 级数据流量海豚调度如何支撑联通

时间:2022-09-07 05:34:28 作者:KOK网页在线登录 来源:kok网页地址

  原标题:日均 6000+ 实例 TB 级数据流量,海豚调度如何支撑联通医疗大数据平台

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

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

  我们是联通医疗团队,一直践行“服务医改,惠及民生”的使命,全面驱动医疗健康产业数字化、智能化转型。

  在调度系统选型初期,我们团队技术栈以 JVM 语言为主,由于 Airflow 的结构体系无法进行充分的改造和融合,因此在开源调度系统的选择上,我们主要对Azkaban 和 Apache Dolphin Scheduler进行了充分的调研和预演。结果显示,在相同的环境压测下,Azkaban 在稳定性上存在不足,会有任务积压和 executor 负载过高等影响,功能性上也存在一定的缺陷。

  从2020年开始,我们团队基于 Apache DolphinScheduler(版本1.3.2)构建了涵盖数据采集、同步、处理和治理为一体的大数据平台(UniM-Data)。在实际生产中,当前该平台每天处理超过6000+任务实例,调度系统承载业务量大,作业定义与调度策略复杂度高。在如此庞杂的任务调度中,Apache DolphinScheduler发挥了重要的作用,向上支撑应用侧的任务下发和管理,向下承接大数据底座的任务编排和调度。

  接下来,我们也准备致力于Apache DolphinScheduler 的版本升级,引入更多社区的优秀能力。在此也感谢社区的贡献,为我们带来如此优秀的项目,希望后续也能贡献我们的力量,为 Apache DolphinScheduler 的壮大添砖加瓦。

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

  从横向上看,UniM-Data 上元数据和数据安全两个模块贯穿数据的全生命周期,Apache DolphinScheduler 在其中扮演了关键角色,主要从任务执行器嵌入血缘采集、权限校验和数据探查等功能上,对生产加以支撑。

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

  数据安全模块,首先平台侧沿用 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 上,我们进行了任务编排逻辑的改造,支持任务开发调试确认后形成作业。任务在调试模式运行时,处理结果会缓存起来,支撑在线调试结果预览功能。

  在线)在原生的 SQL 任务的基础上,添加备注支持、优化 SQL 语句切割逻辑等功能,贴近用户编辑 SQL 的使用习惯

  6)新增 Kerbero 安全认证,在各任务生成阶段,根据成员的 Kerberos 绑定信息,完成票据认证

  7)新增图形化开发任务(内部代号EasyFlow),搭载 Apache DolphinScheduler 的调度能力,提供低代码能力。现阶段已实现数据处理基本算子的集成,后续计划完成业务类算子的集成,支撑复杂业务逻辑形成算子能力。

  ,为用户提供任务监控和管理能力。为了使平台与 Apache DolphinScheduler 能够解耦,我们对其进行了接口拓展,新增和改造了任务添加、任务信息订阅等接口,暴露给平台进行通信。

  在 2020 年进行数据同步技术选型时,基于医疗信息多源异构的特点,我们经过考察分析,认为 Sqoop 虽然在分布式上具备一定的优势,但是需要使用 MR 的计算框架,成本较高。而 DataX 虽然是单进程模式,但可以通过 Apache DolphinScheduler 的调度系统进行性能规避,且单进程模式更容易进行控制和排错,DataX 具有开放式的框架,可以在极短的时间

  ,快速支持新的数据库/文件系统,实现架构如下:在项目落地过程中,我们在开源版本

  UniM-Data 上,提供了数据质控、数据探查、数据识别等自研治理工具,在 Apache Dolphin Scheduler 上进行较为综合性的拓展和应用。我们的设计思路是,实现独立的计算引擎,使用 Apache DolphinScheduler 的调度系统,提供数据治理能力。实现方式主要是在 org.apache.Dolphin

  模型中心创建质控任务( UniM-Data 的数据表实体统一由模型中心标注和创建)

  数据质控在应用端采用配置化方式,降低使用成本,提供了可选表级与字段级质控范围,进行不同数据的定制化任务设定。

  从2020年至今,UniM-Data 经过持续的运营与建设,在医疗、运营、科研、应急等业务线条上

  。在项目实施落地阶段,UniM-Data 承接着日均超6000+任务实例,面临着数据流量达 TB 级别、系统7*24小时支持、准确率达99.9999%等挑战。Apache DolphinScheduler 作为 UniM-Data 的任务调度中心,基于其优秀的架构和丰富的功能,在实际生产中交出了令人欣喜的答卷,

  基于 Apache DolphinScheduler 的调度能力,开发并提供数据采集、血缘、治理等多类执行器,支撑业务的快速演进

  新增功能和业务性接口,在 Apache DolphinScheduler 的调度能力基础上,提供功能更加丰富的调度中心

  基于 Apache DolphinScheduler 的补数和重跑机制,有效降低数仓团队的运维成本,提高数据准确率

  提供多项目、多资源的隔离环境,可在较低成本下,提供统一门户、差异化功能和权限校验

  ,在社区快速发展下,为了进一步强化调度系统和融合优秀能力,我们计划将基线版本,期待 Apache DolphinScheduler 为大家带来更多能力。