DAG 全称 Directed Acyclic Graph,简称 DAG。工作流中的Task任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。
Apache DolphinScheduler (目前处在孵化阶段) 是一个分布式、去中心化、易扩展的可视化 DAG 工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
DolphinScheduler 是 2019 年开源的一个调度系统,在去年美国时间 2019 年 8 月29 号,分布式任务调度引擎 DolphinScheduler (原EasyScheduler) 正式通过顶级开源组织 Apache 基金会的投票决议,以全票通过的优秀表现正式成为了Apache 孵化器项目!
在 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月完成第一个内部使用版本,后来又迭代了几个内部版本后,系统逐渐稳定下来。
万丈高楼平地起,从项目启动的那一刻,我们就确定了开源的目标,从那一刻,开源的种子就种在了每一位项目成员的心中,它是一个使命, 也是所有人的共识和承诺。
要采用模块化的设计,这样才能便于开源后的协同开发;要选用开源的技术组件,这样才能便于开源后让更多的开发者参与进来;大道至简,一定要做到开箱即用,我们调度的名字就叫 EasyScheduler。… 就这样,伴随着每一位的手舞足蹈,热情澎湃和唇枪舌剑,2017 年 12 月在北京市朝阳区恒通商务园B12栋3层办公室里,拉开了 EasyScheduler 的序幕。
使命必达、分秒必争,每一位伙伴都自动自发、随时待命。
2018 年 5 月,EasyScheduler 在易观千帆(一款APP对标分析产品)成功上线使用。
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 社区, 我们一起披荆斩棘、一起高歌猛进!一起经历风雨、一起见证中国开源崛起!