点击上方 蓝字关注我们

从 2020 年起,360 数科全面将调度系统从 Azkaban 迁移到 Apache DolphinScheduler。作为 DolphinScheduler 的资深用户,360 数科如今每天使用 DolphinScheduler 日均处理 10000+ 工作流实例。

为了满足大数据平台和算法模型业务的实际需求,360 数科在 DolphinScheduler 上进行了依赖组件、Master 与 Worker 状态监控、多机房等多项改造,以更加方便运维。

他们具体是如何进行二次开发的呢?360 数科大数据工程师 刘建敏在不久前的 Apache DolphinScheduler 2 月份 Meetup 进行了详细的分享。

PROFILE

刘建敏

360 数科 大数据工程师,主要从事 ETL 任务与调度框架的研究,大数据平台以及实时计算平台的开发。

01

从 Azkaban 迁移到 DolphinScheduler

2019 年之前,360 数科采用 Azkaban 调度进行大数据处理。

这是一个由 Linkedin 开源的批量工作流任务调度器。其安装简单,只需安装 web 与 executor server,就可以创建任务,并通过上传 zip 包实现工作流调度。

Azkaban 的 web-executor 架构如下图所示:

01

Azkaban 的缺点

Azkaban 适用于场景简单的调度,经过三年时间的使用,我们在发现它存在三个重要缺陷:

1. 体验性差

没有可视化创建任务功能,创建与修改任务都需要通过上传 zip 包来实现,这并不方便;另外,Azkaban 没有管理资源文件功能。

2. 功能不够强大

Azkaban 缺乏一些生产环境中不可或缺的功能,比如补数、跨任务依赖功能;用户与权限管理太弱,调度配置不支持按月,在生产上我们需要用很多其他方式进行弥补。

3. 稳定性不够好

最重要的一点是 Azkaban 稳定性不够,当 executor 负载过高时,任务经常会出现积压;小时级别或分钟级别的任务容易出现漏调度;没有超时告警,虽然我们自己开发了有限的短信告警,但还是容易出现生产事故。

针对这些缺陷,我们在 2018 曾进行过一次改造,但由于 Azkaban 源码复杂,改造的过程很是痛苦,因此我们决定重新选型。当时,我们测试了 Airflow、DolphinScheduler 和 XXL-job,但 Airflow Python 的技术栈与我们不符,而 XXL-job 功能又过于简单,显然,DolphinScheduler 是更好的选择。

2019 年,我们 Folk 了 EasyScheduler 1.0 的代码,在 2020 年进行改造与调度任务的部分迁移,并上线运行至现在。

02

DolphinScheduler 选型调研

为什么我们选择 DolphinScheduler?因为其有四点优势:

  1. 去中心化结构,多 Master 多 Worker;

  2. 调度框架功能强大,支持多种任务类型,具备跨项目依赖、补数功能;

  3. 用户体验性好,可视化编辑 DAG 工作流,操作方便;

  4. Java 技术栈,扩展性好。

改造过程非常流畅,我们顺利地将调度系统迁移到了 DolphinScheduler。

02

DolphinScheduler 的使用

在 360 数科,DolphinScheduler 不仅用于大数据部门,算法部门也在使用其部分功能。为了让算法模型部们更方便地使用 DolphinScheduler 的功能,我们将其整合进了我们自己的毓数大数据平台。

01

毓数大数据平台

毓数是一个由基础组件、毓数平台、监控运维和业务支撑层组成的大数据平台,可实现查询、数据实时计算、消息队列、实时数仓、数据同步、数据治理等功能。其中,离线调度部分便是通过 DolphinScheduler 调度数据源到 Hive 数仓的 ETL 任务,以及支持 TiDB 实时监控,以实时数据报表等功能。

02

DolphinScheduler 嵌套到毓数

为了支持公司算法建模的需求,我们抽取了常用的一些节点,并嵌套了一层 UI,并调用 API。

算法部门多用 Python 脚本和 SQL 节点,用框表逻辑进行定时,再配置机器学习算法进行训练,组装数据后用 Python 调用模型生成模型分。我们封装了一些 Kafka 节点,通过 Spark 读取 Hive 数据并推送到 Kafka。

03

任务类型

DolphinScheduler 支持的任务类型有 Shell、SQL、Python 和 Jar。其中,Shell 支持 Sqoop DataX mr 同步任务和 Hive-SQL、Spark-SQL;SQL 节点主要是支持 TiDB SQL(处理上游分库分表的监控) 和 Hive SQL;Python 任务类型支持离线调用模型脚本等;Jar 包主要支持 Spark Jar 离线管理。

04

任务场景

DolphinScheduler 的任务场景主要是将各种数据源,如 MySQL、Hbase 等数据源调度同步至 Hive,再通过 ETL 工作流直接生成 DW。通过 Python 脚本组装或调用,生成模型和规则结果,再推送到 Kafka。Kafka 会给出风控系统调额、审批和分析,并将结果反馈给业务系统。这就是 DolphinScheduler 调度流程的一个完整工作流示例。

05

DolphinScheduler 的运维

目前 ,DolphinScheduler 日均处理工作流已达到 10000+ 的规模,很多离线报表依赖于 DolphinScheduler,因此运维非常重要。

在 360 数科,对 DolphinScheduler 的运维主要分为三部分:

  • DS 依赖组件运维

DolphinScheduler 依赖组件的运维主要是针对 MySQL 监控和 Zookeeper 监控。

因为工作流定义元信息、工作流实例和任务实例、Quartz 调度、Command 都依赖 MySQL,因此 MySQL 监控至关重要。曾经有一次机房网络中断,导致很多工作流实例出现漏调度,之后通过 MySQL 监控才得以排查。

Zookeeper 监控的重要性也不言而喻,Master worker 状态和 task 队列都依赖 Zookeeper,但运行至今,Zookeeper 都比较稳定,还未有问题发生。

  • Master 与 Worker 状态监控 

我们都知道,Master 负责的是任务切分,实际上对业务的影响并不是很大,因此我们采用邮件监控即可;但 Worker 挂掉会导致任务延迟,增加集群压力。另外,由于之前 Yarn 运行任务不一定被成功地 kill,任务容错还可能导致 Yarn 任务重复运行,因此我们对  Worker 状态采用电话告警。

06

Grafana 大盘监控工作流实例状态

此外,我们还为运维创建了 Grafana 监控看板,可以实时监控工作流实例的状态,包括工作流实例的数量,各项目工作流实例运行状态,以及超时预警设置等。

03

DolphinScheduler 改造

01

体验性改造

  1. 增加个人可以授权资源文件与项目,资源文件区分编辑与可读权限,方便授权;

  2. 扩展全局变量(流程定义id, 任务id等放到全局变量中),提交到yarn上任务可追踪到调度的任务,方便集群管理,统计工作流实例锁好资源,利于维护;

  3. 工作流复制、任务实例查询接口优化,提高查询速度,以及 UI 优化。

02

增加短信告警改造

因为原有的邮箱告警不足以保证重要任务的监控,为此我们在 UI 上增加了 SMS 告警方式,保存工作流定义。另外,我们还把告警 receivers 改造成用户名,通过 AlertType 扩展成短信、邮箱等告警方式关联到用户信息,如手机号等,保证重要性任务失败后可以及时收到告警。

03

Worker 增加维护模式改造

此外,当 worker 机器需要维护时,需要这台 worker 上不会有新的运行任务提交过来。为此,我们对 worker 增加了维护模式改造,主要包括 4 点:

  1. UI 设置 worker 进行维护模式,调用 API 写入worker 指定的 zk 路径;

  2. WorkerServer 进行定时调度轮询是否维护模式;

  3. WorkerServer 进行维护模式 ,FetchTaskThread 不获取新增任务;

  4. worker 任务运行结束,可进行重启。

经过以上改造,我们运维的压力大大减轻。

04

多机房改造

最后,我们还进行了多机房改造。因为我们之前有 2 套集群,分布在不同的机房,我们的改造目标是在调度中设置多机房,这样当某一个机房出现故障后,可一键切换到其他机房使用,实现多机房使用同一套调度框架。

改造的切入点就是在调度中设置多机房,以保证某一任务可以在多机房启动。改造流程如下:

  1. 在各机房分别部署 ZK,Master 与 Worker 注册到对应的机房,Master 负责任务切分,Worker 负责任务处理,各自处理各机房的任务;

  2. schedule 与 command 带上 datacenter 信息

  3. 为保证双机房任务切换,资源文件进行上机房任务上传,同时改动任务接口,任务依赖、Master容错都需要改造过滤对应机房。

参与开源

随着国内开源的迅猛崛起,Apache DolphinScheduler 社区迎来蓬勃发展,为了做更好用、易用的调度,真诚欢迎热爱开源的伙伴加入到开源社区中来,为中国开源崛起献上一份自己的力量,让本土开源走向全球。

参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括:

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表:https://github.com/apache/dolphinscheduler/issues/5689

非新手问题列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22

如何参与贡献链接:https://dolphinscheduler.apache.org/zh-cn/docs/development/contribute.html

来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。

参与开源可以近距离与各路高手切磋,迅速提升自己的技能,如果您想参与贡献,我们有个贡献者种子孵化群,可以添加社区小助手微信(Leonard-ds) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。

添加小助手微信时请说明想参与贡献。

来吧,开源社区非常期待您的参与。

社区官网
https://dolphinscheduler.apache.org/

代码仓地址https://github.com/apache/dolphinscheduler

您的 Star,是 Apache DolphinScheduler 为爱发电的动力❤️ 

投稿请添加社区小助手微信

(Leonard-ds)

☞Apache DolphinScheduler 2.0.5 发布,Worker 容错流程优化

☞Apache DolphinScheduler 版本控制核心原理揭

☞喜讯 | Apache DolphinScheduler PMC Chair 代立冬,PMC 郭强获邀成为 ASF Member

☞途家大数据平台基于 Apache DolphinScheduler 的探索与实践

☞Apache DolphinScheduler 2.0 时代 API 接口变化

☞海豚调度在 Kubernetes 体系中的技术实战

☞Apache 基金会中国项目活跃度分析 Top20 发布,DolphinScheduler 位列第四

☞数据迁移 | Apache Dolphinscheduler 调度 DataX 从 MySQL 全量导入 Hive

点击阅读原文,加入开源!

日均处理 10000+ 工作流实例,Apache DolphinScheduler 在 360 数科的实践相关推荐

  1. 万亿数据秒级响应,Apache Doris 在360 数科实时数仓中的应用

    作者|360数科中间件团队 编辑整理|SelectDB 作为以人工智能驱动的金融科技平台,360数科携手金融合作伙伴,为尚未享受到普惠金融服务的优质用户提供个性化的互联网消费金融产品,致力于成为连接用 ...

  2. 秒级加速质变,Apache Doris与360数科的“化学反应”

    随着信贷科技的不断发展,使大数据分析场景相应地增加了许多,对于金融科技平台而言,这些新场景对数据的安全性.准确性.实时性提出更严格的要求.与此同时,指数级增长的用户数,也向业务端施加了交付效率.稳定性 ...

  3. Apache Kafka 在 360 的深度实践

    本文根据严锁鹏老师在[2019 DAMS中国数据智能管理峰会]现场演讲内容整理而成. (点击文末"阅读原文"可获取完整PPT) 讲师介绍 严锁鹏,奇虎360大数据架构运维专家,具有 ...

  4. 讲师征集令 | Apache DolphinScheduler Meetup分享嘉宾,期待你的议题和声音!

    Apache DolphinScheduler 社区线上 Meetup 讲师&议题正式对外征集啦!在全球疫情的笼罩下,我们的线上技术沙龙活动一直在紧锣密鼓的筹备举办,在此我们诚心向社区广大用户 ...

  5. 名额已排到10月 | Apache DolphinScheduler Meetup分享嘉宾继续火热招募中~

    自从Apache DolphinScheduler 社区线上 Meetup 讲师&议题正式对外公开征集以来!后台有很多用户踊跃报名,目前已经排到了10月份,为了更好匹配每场Meetup的主题, ...

  6. 日均 6000+ 实例,TB 级数据流量,Apache DolphinScheduler 如何做联通医疗大数据平台的“顶梁柱”?...

    作者 | 胡泽康 鄞乐炜 Profile 作者简介 胡泽康 联通(广东)产业互联网公司  大数据工程师,专注于开源大数据领域,从事大数据平台研发工作 鄞乐炜 联通(广东)产业互联网公司 大数据工程师, ...

  7. 工作流任务调度系统:Apache DolphinScheduler

    1 概述 Apache DolphinScheduler(目前处在孵化阶段)是一个分布式.去中心化.易扩展的可视化DAG工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数 ...

  8. 工作流调度系统Apache DolphinScheduler介绍和设计原理

    1 概述 Apache DolphinScheduler(目前处在孵化阶段)是一个分布式.去中心化.易扩展的可视化DAG工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数 ...

  9. AI Multiple 力荐2022年十大开源工作流调度和 WLA工具,Apache DolphinScheduler 在列!...

    作者 | Alamira Jouman Hajjar 2021 年的一项调查显示,企业内部使用开源工具的首要目的,是想要实现 IT 基础设施的现代化和数字化转型.反之,作为 IT 部门数字化转型的推动 ...

最新文章

  1. MAML-Tracker: 目标跟踪分析:CVPR 2020(Oral)
  2. iOS 提交应用过程出现的错误及#解决方案#images can't contain alpha channels or transparencies...
  3. pom 导入mysql连接,maven项目中的jdbc连接步骤
  4. 北京理工大学珠海学院专业计算机类,北京理工大学珠海学院计算机学院网络工程专业...
  5. java研发工程师与java后端工程师有什么区别?
  6. nginx静态文件服务器_Linux分享文件?快速创建静态文件服务器
  7. createMap(Thread t, T firstValue)
  8. 孤读Paper——《ATSS:Adaptive Training Sample Selection》
  9. IntelliJ IDEA 2016
  10. 迪士尼收购福克斯,传媒巨头江山瓦解?
  11. 泰山游记:所为非风光,为历史尔
  12. 黑鲨官网装机大师工具如何制作u盘启动盘,u盘启动盘制作方法
  13. Windows安装和设置教程
  14. QQ消息自动发送器(自动发广告、聊天,支持群,支持最新的QQ2008II Beta1) C# 版...
  15. bandzip屏蔽广告
  16. 那些你可能不知道的百度产品
  17. Oracle查询成绩高于成绩,Oracle认证考试成绩查询方法
  18. 找出最长的有效括号内子括号的长度
  19. 安装perf后,执行perf命令报错。
  20. 集成学习——BAGGING和随机森林

热门文章

  1. 一篇文章带你快速入门 AdminLTE
  2. 时域特征偏度_时域分析——有量纲特征值含义一网打尽
  3. MySQL数据恢复助手,mysqlbinlog工具使用
  4. 一文带你读懂iOS应用如何使用TestFlight进行测试
  5. 小黑NLPbaseline成长日记1:Skip_Gram+NEG的pytorch练习
  6. 维修电工仪表照明实训考核装置
  7. RACH Procedure Log Analysis
  8. 弃繁就简,一行代码教你摆平Python 日志
  9. 敖夜肝了这份Scrapyd核心源码剖析及爬虫项目实战部署
  10. DIN EN ISO 4589-2塑料 用氧指数法测定燃烧行为 第2 部分:室温试验