乐趣区

关于大数据:Apache-DolphinScheduler-诞生记

Apache DolphinScheduler 诞生记

DolphinScheduler,简称”DS”, 中文名“小海豚调度”(海豚聪慧、人性化,又左右脑可相互换班,终生不必睡觉)。心愿 DolphinScheduler 就像它的名字一样,成为一个“开箱即用”的灵便易用的调度零碎。

1 概述

DAG 全称 Directed Acyclic Graph,简称 DAG。工作流中的 Task 工作以有向无环图的模式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。

Apache DolphinScheduler(目前处在孵化阶段)是一个分布式、去中心化、易扩大的可视化 DAG 工作流任务调度零碎,其致力于解决数据处理流程中盘根错节的依赖关系,使调度零碎在数据处理流程中开箱即用。

DolphinScheduler 是 2019 年开源的一个调度零碎,在去年美国工夫 2019 年 8 月 29 号,分布式任务调度引擎 DolphinScheduler(原 EasyScheduler)正式通过顶级开源组织 Apache 基金会的投票决定,以全票通过的优良体现正式成为了 Apache 孵化器我的项目!

2 背景

在 2017 年,易观在经营本人 6.8Pb 大小、6.02 亿月活、每天近万个调度工作的大数据平台时,受到 ETL 简单的依赖关系、平台易用性、可维护性及二次开发等方面掣肘,易观的技术团队渴望找到一个具备以下性能的数据调度工具:

易于应用,开发人员能够通过非常简单的拖拽操作构建 ETL 过程。不仅对于 ETL 开发人员,无奈编写代码的人也能够应用此工具进行 ETL 操作,例如系统管理员和分析师;
解决“简单工作依赖”问题,并且能够实时监督 ETL 运行状态;
反对多租户;
反对许多工作类型:Shell,MR,Spark,Flink,SQL(mysql,postgresql,hive,sparksql,clickhouse 等),DataX,Sqoop,Python,Sub_Process,Procedure 等;
反对 HA 和线性可扩展性。
易观技术团队意识到现有开源我的项目没有可能达到他们要求的,因而决定自行开发这个工具。他们在 2017 年底设计了 DolphinScheduler 的次要架构;2018 年 5 月实现第一个外部应用版本,起初又迭代了几个外部版本后,零碎逐步稳定下来。

3 特点

DolphinScheduler 提供了许多易于应用的性能,可放慢数据 ETL 工作开发流程的效率。其次要特点如下:

  • 通过拖拽以 DAG 图的形式将 Task 依照工作的依赖关系关联起来,可实时可视化监控工作的运行状态;
  • 反对丰盛的工作类型;
  • 反对工作流定时调度、依赖调度、手动调度、手动暂停 / 进行 / 复原,同时反对失败重试 / 告警、从指定节点复原失败、Kill 工作等操作;
  • 反对工作流全局参数及节点自定义参数设置;
  • 反对集群 HA,通过 Zookeeper 实现 Master 集群和 Worker 集群去中心化;
  • 反对工作流运行历史树形 / 甘特图展现、反对工作状态统计、流程状态统计;
  • 反对补数,并行或串行回填数据。

4 零碎架构

DolphinScheduler 是从数据处理的痛点登程,其解决的问题以及优化的方向次要有以下 5 点:

  • 可视化流程设计加重了开发者配置工作流的复杂度,从繁琐的根底配置中解放出来,不必再靠编程来配置流程,晋升开发效率;
  • 扩展性强,在当下这样一个业务变动快、技术迭代频繁的当初,丰盛的工作类型、跨语言和自定义插件机制良好的可扩展性,无疑使这款框架具备了更长的寿命和更宽泛的落地场景;
  • 反对工作流定时调度、依赖调度、手动调度、手动暂停 / 进行 / 复原,同时反对失败重试 / 告警、从指定节点复原失败、Kill 工作等操作
  • 反对集群 HA,通过 Zookeeper 实现 Master 集群和 Worker 集群的人造去中心化架构设计,使得零碎的高可用性失去保障;
  • 通过拖拽以 DAG 图的形式将 Task 依照工作的依赖关系关联起来,可实时可视化监控工作的运行状态,欠缺的服务监控零碎,不便运维人员疾速进行问题定位。

目前,IBM、中国安全、美团、360、招商银行、科大讯飞、联通、多点、芒果 tv、雪球等多家企业都曾经将 Apache DolphinScheduler 利用到了理论场景中。

                                                                              1.2.x 架构

5 开源推动路线

万丈高楼平地起,从我的项目启动的那一刻,咱们就确定了开源的指标,从那一刻,开源的种子就种在了每一位我的项目成员的心中,它是一个使命,
也是所有人的共识和承诺。

要采纳模块化的设计,这样能力便于开源后的协同开发;
要选用开源的技术组件,这样能力便于开源后让更多的开发者参加进来;
大道至简,肯定要做到开箱即用,咱们调度的名字就叫 EasyScheduler。

就这样,随同着每一位的载歌载舞,激情磅礴和唇枪舌剑,2017 年 12 月在北京市朝阳区恒通商务园 B12 栋 3 层办公室里,拉开了 EasyScheduler 的尾声。

使命必达、争分夺秒,每一位搭档都自动自发、随时待命。

2018 年 5 月,EasyScheduler 在易观千帆胜利上线应用。

2019 年 3 月,凋谢给内部种子用户应用,正式公布第一个开源版本 1.0.0。

2019 年 5 月,相继推出了 1.0.1、1.0.2 和 1.0.3 版本。

开源的种子早已种下,只有破土而出,能力扎根于大地。
ASF 作为寰球最大的开源基金会,始终致力于开源软件生态的营造,让软件技术可能在寰球共享,这是 ASF 无比夺目的魅力所在。

咱们要扎根 ASF,咱们要进入到寰球最大的开源组织,让咱们的我的项目在寰球共享,于是咱们决定正式摸索 Apache 开源孵化之路。

这是一个 0 到 1 的问题,这是一个须要拿到入场券资格的问题,那么如何才可能进入 Apache 呢?

一个我的项目如果心愿进入到 Apache 孵化器,至多须要 1 名 Champion 和 2 名 mentor。所以咱们的第一个难题就是如何找到 champion 和 mentor.

ASF 孵化器领有导师 200 多位,然而沉闷的中国导师不超过 5 位,ALC Beijing 也没有成立,咱们只能到处询问,八方求援,经验了无数次的尝试,甚至呈现了一丝丝的波动,
然而咱们马上就想到团队每一个人的付出和致力、想到那些默默反对咱们前行的用户、想到一开始就种在咱们心中的开源之梦,
咱们深信有信念就肯定有远方,有幻想就肯定有心愿,咱们深信彩虹肯定会呈现,最终咱们幸运地迎来了咱们的 champion 和 mentor。

至今仍清晰记得初见吴晟老师的场景:吴晟老师用了将近一下午的工夫给咱们遍及了 Apache 孵化器的一些规范和 Apache Way,咱们也从最开始的喜悦兴奋变为了默默深思。
第二个迎头重击就是 Apache 的 license 协定听从,咱们须要查看所有的依赖是否合乎 license 许可,否则就须要批改,于是又通过了几个月的重构和降级。
这里还有一个小插曲,咱们在申请进入 Apache 孵化器过程当中,发现 Easy Scheduler 不是寰球惟一的名字,于是又进行了投票最终选中了
DolphinScheduler.

所幸咱们始终动摇着信念,天道酬勤,当美国工夫 2019 年 8 月 29 号 DolphinScheduler 全票通过正式成为 Apache 孵化器我的项目的时候,
每个人都洋溢着开心的笑容,然而咱们又很快的冷静下来,真正的 Apache Way 兴许才刚刚开始。

第一次的 Apache release,是孵化过程中很重要的一个里程碑。DS 用了 4 个月的工夫收回了第一个 Apache release,一个很大的起因
就是起初代码层面上关注较多,而 Apache 对于 license 和商标有着近乎严苛的要求,在 release 的时候会进行十分认真地查看,
字体的版权或者某个前端组件应用的 license 不合标准都会完结一周左右的发版流程。

经验过第一次 Apache release 发版后,会对 Apache Community Over Code 的名言有着更切身的领会,胜利的开源我的项目最重要的因素就是:
社区、社区还是社区。工夫好像回到了吴晟老师给咱们首次讲述 Apache Way 的那个下午:
“Apache 是一个通明、凋谢的社区,须要让工作的人来决定;如果一件事件没有呈现在邮件列表中,那它就没有产生;
Apache 社区是一个公开、平等、精英治理的社区;Apache 更多的是给一个思路,很多时候没有一个固定的规定和流程。。。”

感激吴晟老师、史少峰老师、陈亮老师、Furkan Kamaci 老师和 Kevin Ratnasekera 老师。
感激每一位应用过 DS 的用户、每一位参加过 DS 社区奉献的搭档,感激你们违心就义本人贵重的工夫与咱们一起前行,一个 star,一个 issue,
一篇文章、一行代码、一封邮件列表,加入一场 meetup 的举办,这都是咱们一起同在的见证!也期待更多的搭档退出到 DS 社区,
咱们一起乘风破浪、一起高歌猛进!一起经验风雨、一起见证胜利!

欢送退出 Apache dolphinscheduler 社区

  • https://github.com/apache/inc… (请记得 fork 和 star)

订阅邮件列表

  • 用本人的邮箱向 dev-subscribe@dolphinscheduler.apache.org 发送一封邮件,主题和内容任意。
  • 接管确认邮件并回复。实现步骤 1 后,将收到一封来自 dev-help@dolphinscheduler.apache.org 的确认邮件(如未收到,请确认邮件是否被主动纳入垃圾邮件、推广邮件、订阅邮件等文件夹)。而后间接回复该邮件,或点击邮件里的链接快捷回复即可,主题和内容任意。
  • 接管欢送邮件。实现以上步骤后,会收到一封主题为 WELCOME to dev@dolphinscheduler.apache.org 的欢送邮件,至此已胜利订阅 Apache DolphinScheduler(Incubating)的邮件列表。

在线试用

如果您不想部署,而是想先体验一下,那么咱们也提供了在线 Demo (1.2.0 版本),Demo 能够疾速体验一下 Shell、Python 等工作类型,受制于服务器单机硬件条件,有些性能比方不能定时调度,各种数据源不能体验外,无其余限度,大家能够分割龙飞微信开明 Demo

咱们激励任何模式的参加社区,最终成为 Committer 或 PPMC,如:

  • 将遇到的问题通过 github 上 issue 的模式反馈进去
  • 答复他人遇到的 issue 问题
  • 帮忙欠缺文档
  • 帮忙我的项目减少测试用例
  • 为代码增加正文
  • 提交修复 Bug 或者 Feature 的 PR
  • 发表利用案例实际、调度流程剖析或者与调度相干的技术文章
  • 帮忙推广 DolphinScheduler,参加技术大会或者 meetup 的分享等

欢送退出奉献的队伍,退出开源从提交第一个 PR 开始

  • 比方增加代码正文或找到带有”easy to fix”标记或一些非常简单的 issue(拼写错误等) 等等,先通过第一个简略的 PR 相熟提交流程

注:奉献不仅仅限于 PR 哈,对促成我的项目倒退的都是奉献

置信参加 DolphinScheduler,肯定会让您从开源中受害!

如何成为 ALC Beijing 的成员

ALC Beijing 欢送任何人的参加!不设置任何门槛,只有有志愿流传 Apache 以及开源之道的小伙伴都能够参加进来!具体的形式如下:

  • 退出咱们的流动。大家能够通过关注 ALC Beijing 公众号获取最新的流动信息,并加入咱们的线上或者线下的流动。
  • 成为 ALC Beijing 会员。ALC Beijing 作为一个公益组织,须要大量的志愿者的来帮忙协调和组织流动。志愿者成为会员的准则和 Apache 软件基金的其余我的项目倒退 Committer 以及 PMC 成员的形式一样, 基于志愿者在社区中的奉献,采纳投票邀请形式成为 ALC Beijing 会员。

欢送关注 ”ALC Beijing” 公众号

参考链接

[1] https://dolphinscheduler.apac…

[2] https://www.infoq.cn/article/…

感激花工夫浏览,谢谢!

退出移动版