网易邮箱 DolphinScheduler 迁移实战:从部署到优化,10 倍效率提升的内部经验

——企业级调度系统平滑迁移指南,附避坑全流程!
随着互联网的飞速发展,电子邮件作为重要的信息交流工具之一,其数据处理和任务调度的需求日益增长。网易邮箱作为国内领先的电子邮件服务提供商,为了更好地应对海量数据的处理和任务调度挑战,引入了 DolphinScheduler 平台,并在实际应用中进行了深入的部署与优化实践。
嘉宾介绍
雷宝鑫 网易邮箱 大数据工程师

项目背景与选型
网易邮件发展史
网易邮箱自 1997 年推出以来,经历了多个重要发展阶段,从 126 邮箱、163 邮箱到邮箱大师等,不断丰富产品线和服务内容。如今,网易邮箱已构建起涵盖免费邮箱、企业邮箱、VIP 邮箱等在内的多元化业务体系,为海量用户提供稳定、安全、高效的邮件服务。

从上图中可以看到,2023 年网易邮箱引入了 Apache DolphinScheduler。
数据应用场景
在网易邮箱的日常运营中,面临着海量的业务日志数据处理需求。这些数据需要进行永久冷备以及大于半年的热备存储,并且业务日志按离线(HDFS)和实时(ClickHouse)分别处理落盘。同时,为了保障业务的可用性,核心收发信链路以及登录用户验证机制等环节都需要高效的数据处理和任务调度支持。

选型背景与 DolphinScheduler 优势
面对日益增长的数据处理需求,网易邮箱团队对多个开源调度平台进行了选型对比。DolphinScheduler 凭借其支持多种调度机制、稳定性强、易用性高以及功能丰富等优势脱颖而出。它能够支持多种数据场景,满足网易邮箱复杂多样的任务调度需求。

平台部署与使用现状
基于 DS 的升级改造之路
网易邮箱团队在引入 DolphinScheduler 平台后,开启了一段持续优化改进的升级改造之路。从前期的调研选型对比,到针对使用过程中遇到的问题进行解决,再到进行二次开发持续优化平台的易用性和使用体验,团队不断推进平台的完善。2023 年 3 月确定选型后,于 2023 年 12 月完成基于告警功能的初步改造,并在 2024 年 3 月实现稳定运行与持续探索。

数据架构与使用现状
目前,DolphinScheduler 平台在网易邮箱部门内部已部署为 3-Master、5-Worker 架构,并运行在 k8s 上。该平台承接了反垃圾、风控、AI 等业务的 1200 多个离线调度任务,每日执行次数超过 5 万次。
在数据架构层面,结合了 DolphinScheduler 与 Streampark,实现了离线调度与实时 Flink 任务处理的结合。同时,自研的元数据中心、数据门户等组件构成了数据服务层,为数据管理与服务提供支持。
平台的引入显著提升了数据开发效率,降低了运维成本,并保障了业务数据的稳定产出,有力地支持了业务的快速迭代与创新。

任务类型与应用支撑
DolphinScheduler 平台已成为部门内主要的任务调度平台,任务类型丰富多样,涵盖 Spark、Shell、SQL、SeaTunnel、Python 等多种类型。这些任务为下游的元数据管理、BI 报表、数据研发等应用提供了坚实的数据支撑,满足了不同业务场景下的数据处理需求。

集成数据分发功能与优化实践
集成数据分发功能
在数据调度分发上,网易邮箱团队发现了一些亟待解决的问题,以提高数据处理的效率和能力,包括:
数据处理需求频繁
非研发人员数据处理需求频繁,需要数据开发人员支持。
中间表构建意愿低
产品和 QA 对中间表的构建意愿低,对他们来说耗时较长。
数据同步配置存在门槛
异构数据源间的数据同步任务配置存在门槛,需要专门的数开支持。
同步任务开发流程较长
完整的数据同步任务开发流程较长,涉及表创建、同步配置创建、调度任务创建等步骤。
为了解决以上问题,网易邮箱团队在 DolphinScheduler 平台上集成了数据分发功能。

总的思路是中间表创建+同步任务配置生成+调度任务创建」,提升中间数据处理效率,提供一站式数据处理任务构建流程。
该功能提供了快速配置和自定义配置两种方式,能够根据表单参数自动生成表 DDL 语句并执行建表逻辑,同时生成中间处理 SQL 和数据同步任务配置,最后调用海豚内部方法创建工作流和调度任务。
这一功能的实现,将中间数据处理的平均耗时从 1 小时降低到 20 分钟以内,提升了 67%的开发效率,并已支撑线上 40 多个数据处理任务,且使用人数在不断增加。


优化离线调度方式,提升故障恢复能力
原调度机制在处理依赖任务失败时,会导致 dependent 节点直接运行失败,无法一键重跑未完成数据链路,增加了数据开发人员的运维压力和故障恢复时长。

针对这一问题,团队对 dolphinscheduler-master 模块的DependentExecute
类中getModelDependResult
方法的等待及失败信号处理逻辑进行了重新设计。当依赖任务状态为FAILED
时,将dependResultList
中的状态改为WAITING
,从而使下游任务获取到的是WAITING
状态而非FAILED
状态。

这一优化实现了数据链路的一键恢复重跑,减少了人工干预成本,提升了任务链的恢复效率和智能化程度,加快了数据链路故障恢复速度,保障了业务数据的及时恢复产出。


SeaTunnel 组件集成与优化,数据同步提效
为满足新业务大规模数据同步需求,团队引入了 SeaTunnel 数据集成工具,并以分离集群模式部署在 k8s 集群上。
通过优化 SeaTunnel 插件,网易邮箱提供了自定义与快速配置两种方式,降低了使用门槛。

实现原理
在实现原理上,支持表单配置和自定义配置两种方式,表单配置方式通过表单参数生成 ST 配置的交互逻辑,并支持配置额外自定义参数以及任务级的 JVM 配置。

后端接收表单参数生成任务执行上下文的必要配置,设计IConfigGenerator
接口实现各数据源生成 Source 和 Sink 的逻辑,最终通过SeatunnelConfigGenerator
类生成最终的 ST 配置。

部署与调优
在部署与调优方面,SeaTunnel 集群采用 2-Master、5-Worker 架构实现高可用和同步性能。
通过优化 HDFS、HIVE、MultiTable Source 的分片逻辑,使 reader 接收到的分片更均衡,提升数据同步性能,并已将相关优化提交 PR 反馈社区。

在参数调优方面,针对 HDFS 到 Doris 的大规模数据同步需求,对 DorisSink 的代码进行研究和参数调优后,实现了 200w/s 的数据传输速率,极大地提升了数据同步性能。

项目实践案例:任务迁移与资源隔离
猛犸平台任务向海豚调度的高效迁移
猛犸平台是面向网易集团内部的大数据平台软件,部分猛犸任务间的依赖关系非常复杂,需要进行分析整理。如果是采用人工分析整理的话,效率较低,且容易遗漏、错漏。

最终在调研 DolphinScheduler 平台的任务依赖关系的表示方式之后,决定迁移到 DolphinScheduler。
在迁移方式的选择上,如果以手动迁移的方式,不仅耗时耗力,还容易因任务依赖关系的复杂性而导致迁移错误,进而影响整体任务的稳定性。
基于种种原因的考虑,网易邮箱讨论并调研后决定,采用自动化同步方案,通过程序自动采集旧平台任务元数据和任务血缘,并转化成海豚平台的任务配置形式,同时添加上任务依赖关系,最后通过海豚接口快速进行工作流的创建。为了实现这个流程,网易邮箱采用了 DolphinScheduler 官方提供的 PyDolphinScheduler 同步工具,这个 Python API 允许通过 Python 代码定义工作流,即所谓的“工作流即代码”。
此外,网易邮箱还通过元数据系统采集猛犸任务的元数据和血缘关系,将猛犸任务批量改写为 DolphinScheduler 任务,并根据血缘关系自动添加依赖关系节点。

这一实践高效完成了 300 多个猛犸任务的迁移,保障了业务的平稳过渡,实现了一键批量迁移,极大地节省了人力成本,并为后续类似任务迁移场景提供了可借鉴的经验。
Worker group 隔离实践
下一个项目实践是基于 DolphinScheduler 的 Worker 分组资源隔离实践。
在网易邮箱 DolphinScheduler 平台的日常使用中,一个关键的业务场景是支撑 QA 的线上监控调度任务。这类任务的特点是调度频率高,大多为分钟级;任务数量多,目前监控相关任务数达到 120+。
这些监控调度任务的执行目前其内部主要是通过 SHELL 任务类型通过调用自己开发的一个 ETL 任务处理工具 jar 包来实现的。这个 jar 包提供一些任务执行时的额外扩展功能,比如幂等性校验,超时重试等。
但是这种调用会在 worker 节点启动较多的 JVM 进程。这时,如果有一些比较核心的调度任务也调度到相同的 worker 节点的话,一旦因内存不足导致触发 OOM killer,这些核心任务的内存占用又一般会比较大,导致其 OOM 分数的计算会比较高,更有可能被 kill 掉,就会造成核心任务执行的不稳定。
此外,一些凌晨执行的 T+1 同步任务需要大量资源,也不适合与其他任务调度到同一节点,可能会影响同一 worker 下其他任务的执行性能和稳定。
因此,网易邮箱团队想到用 Worker group 隔离方案来里面以上问题。
通过 Worker group 隔离,团队将实时监控等高频率调度任务与其他任务隔离开,保障了核心 OKR 相关调度的稳定执行,提升了整体任务执行的稳定性与可靠性。

在具体实施中,网易邮箱在平台创建不同的 Worker 分组包含不同的 Worker 节点,包括 Default、AI、监控、Hadoop、大资源任务等多个分组,避免了任务卡死与资源抢占问题,优化了资源分配,提升了平台整体资源利用率与性能。
这一实践有效解决了 QA 监控任务调度频率高导致任务阻塞,以及凌晨 T+1 任务资源需求大引发 worker 节点 OOM 等问题,降低了运维风险。

总结与展望
实践总结
通过引入 DolphinScheduler 平台并进行一系列的部署与优化实践,网易邮箱团队在提升数据开发效率、降低运维成本、保障业务数据稳定产出等方面取得了显著成效。平台的二次开发紧密结合了业务需求,注重用户体验与开发效率的提升,同时团队持续关注平台的优化与改进,并积极贡献社区,推动平台的不断发展。
平台价值与效益
DolphinScheduler 平台在网易邮箱业务中发挥了重要作用,不仅提升了数据开发的效率和稳定性,还通过优化任务调度流程,满足了业务的多样化需求,保障了数据的及时产出,有力地推动了邮箱业务的持续发展。
经验分享与启示
在平台的部署与优化过程中,网易邮箱团队积累了丰富的实践经验。这些经验对于其他企业在选择和使用任务调度平台时具有重要的参考价值。团队强调,二次开发应紧密结合业务实际需求,始终将用户体验和开发效率放在首位。同时,持续关注平台的优化与改进,积极参与开源社区建设,能够推动平台的不断完善和发展。
未来展望
展望未来,网易邮箱团队计划在以下几个方向继续探索和推进:
拥抱 AI:结合 AI 及 LLM 能力,实现更加智能化、易用的数据处理 ETL 流程,提升数据处理的自动化和智能化水平。
数据治理:整合 DolphinScheduler 调度数据和内部的元数据中心,实现智能的数据/任务血缘和数据地图的采集和分析,为数据治理提供有力支持。
平台优化:进一步优化 DolphinScheduler 平台的性能和功能,提升平台的稳定性和可靠性,以更好地满足日益增长的数据处理需求。
拥抱 DATA OPS:实现 DolphinScheduler 平台和其他数据平台系统的集成和整合,推动数据集成和传输的自动化,构建更加高效的数据生态系统。

写在最后
网易邮箱基于 DolphinScheduler 平台的部署与优化实践,不仅解决了当前面临的任务调度和数据处理挑战,还为未来的发展奠定了坚实的基础。通过不断的技术创新和实践探索,网易邮箱将继续为用户提供更加优质、高效的邮件服务,同时也为开源社区的发展贡献更多的力量。
评论