编 者 按:好消息!Apache DolphinScheduler 2.0.1 版别正式发布!

本版别中,DolphinScheduler 经历了一场微内核+插件化的架构改善,70% 的代码被重构,一直以来备受期待的插件化功用也得到重要优化。此外,本次晋级还有不少亮点,如一键晋级至最新版别、注册中心“去 ZK 化”、新增使命参数传递功用等。

Apache DolphinScheduler 2.0.1 下载地址:

dolphinscheduler.apache.org/zh-cn/downl…

Apache DolphinScheduler 2.0.1 的作业流履行流程活动如下图所示:

Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级、插件化终于实现!

发动流程活动图

2.0.1 版别经过优化内核增强了体系处理才能,然后在性能上得到较大提高,全新的 UI 界面也极大地提高了用户体会。更重要的是,2.0.1 版别还有两个重大改变:插件化和重构。

01 插件化

此前,有不少用户反馈期望 Apache DolphinScheduler 能够优化插件化,为呼应用户需求,Apache DolphinScheduler 2.0.1在插件化上更进了一步,新增了告警插件、注册中心插件和使命插件办理功用。利用插件化,用户能够愈加灵活地完结自己的功用需求,愈加简单地根据接口自界说开发使命组件,也能够无缝搬迁用户的使命组件至 DolphinScheduler 更高版别中。

DolphinScheduler 正在处于微内核 + 插件化的架构改善之中,一切中心才能如使命、告警组件、数据源、资源存储、注册中心等都将被设计为扩展点,咱们期望经过 SPI 来进步 Apache DolphinScheduler 自身的灵活性和友好性。

相关代码能够参阅 dolphinscheduler-spi 模块,相关插件的扩展接口也皆在该模块下。用户需求完结相关功用插件化时,主张先阅览此模块代码。当然,也主张咱们阅览文档以节省时间。

咱们采用了一款优秀的前端组件 form-create,它支撑根据 json 生成前端 UI 组件,假如插件开发涉及到前端,咱们会经过 json 来生成相关前端 UI 组件。

org.apache.dolphinscheduler.spi.params 里对插件的参数做了封装,它会将相关参数全部转化为对应的 json。这意味着,你完全能够经过 Java 代码的办法完结前端组件的制作(这里首要是表单)。

1 告警插件

以告警插件为例,咱们完结了在 alert-server 发动时加载相关插件。alert 提供了多种插件装备办法,现在已经内置了 Email、DingTalk、EnterpriseWeChat、Script 等告警插件。当插件模块开发作业完结后,经过简单的装备即可启用。

2 多注册中心组件

在 Apache DolphinScheduler 1.X 中,Zookeeper 组件有着非常重要的含义,包括 master/worker 服务的监控发现、失联告警、告诉容错等功用。在 2.0.1 版别中,咱们在注册中心逐步“去 ZK 化”,弱化了 Zookeeper 的作用,新增了插件办理功用。

在插件办理中,用户能够增加 ETCD 等注册中心的支撑,使得 Apache Dolphinscheduler 的灵活性更高,能习惯更杂乱的用户需求。

3 使命组件插件

新版别还新增了使命插件功用,增强了不同的使命组件的阻隔功用。用户开发自界说插件时,只需求完结插件的接口即可。首要包括创立使命(使命初始化、使命运转等办法)和使命撤销。

假如是 Yarn 使命,则需求完结 AbstractYarnTask。现在,使命插件的前端需求开发者自己运用 Vue 开发布置,在后续版别中,咱们将完结由 Java 代码的办法完结前端组件的主动制作。

02 重构

迄今为止,Apache DolphinScheduler 已经重构了约 70%的代码,完结了全面的晋级。

1 Master 内核优化

2.0.1 版别晋级包括重构了 Master 的履行流程,将之前状况轮询监控改为事情告诉机制,大幅减轻了数据库的轮询压力;去掉全局锁,增加了 Master 的分片处理机制,将顺序读写指令改为并行处理,增强了 Master 横向扩展才能;优化作业流处理流程,削减了线程池的运用,大幅提高单个 Master 处理的作业流数量;增加缓存机制,优化数据库衔接办法,以及简化处理流程,削减处理进程中不必要的耗时操作等。

2 作业流和使命解耦

在 Apache DolphinScheduler 1.x 版别中,使命及使命联系保存是以大 json 的办法保存到作业流界说表中的,假如某个作业流很大,比方到达 100 至 1000 个使命规模,这个 json 字段会非常大,在运用时需求解析 json。这个进程比较耗费性能,且使命无法重用;另一方面,根据大 json,在作业流版别及使命版别上也没有很好的完结计划。

因而,在新版别中,咱们针对作业流和使命做了解耦,新增了使命和作业流的联系表,并新增了日志表,用来保存作业流界说和使命界说的历史版别,大幅进步作业流运转的效率。

下图为 API 模块下作业流和使命的操作流程图:

Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级、插件化终于实现!

03 版别主动晋级功用

2.0.1 增加了版别主动晋级功用,用户能够从 1.x 版别主动晋级到 2.0.1 版别。只需求运转一个运用脚本,即可无感知地运用新版别运转曾经的作业流:

sh./script/create-dolphinscheduler.sh

具体晋级文档请参阅: dolphinscheduler.apache.org/zh-cn/docs/…

另外,Apache DolphinScheduler 将来的版别均可完结主动晋级,省去手动晋级的费事。

04 新功用列表

Apache DolphinScheduler 2.0.1 新增功用概况如下:

1 新增 Standalone 服务

StandAloneServer 是为了让用户快速体会产品而创立的服务,其间内置了注册中心和数据库 H2-DataBase、Zk-TestServer,在修正后一键发动 StandAloneServer 即可进行调试。

假如想快速体会,在解压安装包后,用户只需求装备 jdk 环境等即可一键发动 Apache DolphinScheduler 体系,然后削减装备成本,进步研制效率。

详细的运用文档请参阅: dolphinscheduler.apache.org/zh-cn/docs/…

或许运用 Docker 一键布置一切的服务:dolphinscheduler.apache.org/zh-cn/docs/…

2 使命参数传递功用

现在支撑 shell 使命和 sql 使命之间的传递。

  • shell 使命之间的传参:

在前一个”create_parameter”使命中设置一个out的变量”trans“: echo ‘${setValue(trans=hello trans)}’

Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级、插件化终于实现!

当前置使命中的使命日志中检测到关键字:”${setValue(key=value)}“, 体系会主动解析变量传递值,在后置使命中,能够直接运用”trans“变量:

Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级、插件化终于实现!

  • SQL 使命的参数传递:

SQL 使命的自界说变量 prop 的名字需求和字段称号一致,变量会挑选 SQL 查询成果中的列名中与该变量称号相同的列对应的值。输出用户数量:

Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级、插件化终于实现!

在下游使命中运用变量”cnt“:

Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级、插件化终于实现!

新增 switch 使命和 pigeon 使命组件:

  • switch 使命

在 switch 使命中设置判别条件,能够完结根据不同的条件判别成果运转不同的条件分支的效果。例如:有三个使命,其依靠联系是 A -> B -> [C, D] ,其间 task_a是 shell 使命,task_b 是 switch 使命。

使命 A 中经过全局变量界说了名为 id 的全局变量,声明办法为`echo ‘${setValue(id=1)}’ `。

使命 B 增加条件,运用上游声明的全局变量完结条件判别(留意 Switch 运转时存在的全局变量就行,意味着能够是非直接上游发生的全局变量)。下面咱们想要完结当 id 为 1 时,运转使命 C,其他运转使命 D。

装备当全局变量 id=1 时,运转使命 C。则在使命 B 的条件中编辑 ${id} == 1,分支流通挑选 C。对于其他使命,在分支流通中挑选 D。

Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级、插件化终于实现!

  • pigeon 使命

pigeon 使命,是一个能够和第三方体系对接的一种使命组件,能够完结触发使命履行、撤销使命履行、获取使命状况,以及获取使命日志等功用。pigeon 使命需求在装备文件中装备上述使命操作的 API 地址,以及对应的接口参数。在使命组件里输入一个方针使命称号,即可对接第三方体系,完结在 Apache DolphinScheduler 中操作第三方体系的使命。

3 新增环境办理功用

默许环境装备为 dolphinscheduler_env.sh。

在线装备 Worker 运转环境,一个 Worker 能够指定多个环境,每个环境等价于 dolphinscheduler_env.sh 文件。

Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级、插件化终于实现!

在创立使命的时分,挑选 worker 分组和对应的环境变量,使命在履行时,worker 会在对应的履行环境中履行使命。

05 优化项

1 优化 RestApi

咱们更新了新的 RestApi 标准,并且按照标准,从头优化了 API 部分,使得用户在运用 API 时愈加简单。

2 优化作业流版别办理

优化了作业流版别办理功用,增加了作业流和使命的历史版别。

3 优化 worker 分组办理功用

在 2.0 版别中,咱们新增了 worker 分组办理功用,用户能够经过页面装备来修正 worker 所属的分组信息,无需到服务器上修正装备文件并重启 worker,运用愈加快捷。

优化 worker 分组办理功用后,每个 worker 节点都会归属于自己的 Worker 分组,默许分组为 default。在使命履行时,能够将使命分配给指定 worker 分组,最终由该组中的 worker 节点履行该使命。

修正 worker 分组有两种办法:

  1. 打开要设置分组的 worker 节点上的”conf/worker.properties”装备文件,修正 worker.groups 参数。

  2. 能够在运转中修正 worker 所属的 worker 分组,假如修正成功,worker 就会运用这个新建的分组,疏忽 worker.properties 中的装备。修正过程为”安全中心 -> worker 分组办理 -> 点击 ‘新建 worker 分组’ -> 输入’组称号’ -> 挑选已有 worker -> 点击’提交'”

其他优化事项:

  1. 增加了发动作业流的时分,能够修正发动参数;

  2. 新增了保存作业流时,主动上线作业流状况;

  3. 优化了 API 回来成果,加快了创立作业流时页面的加载速度;

  4. 加快作业流实例页面的加载速度;

  5. 优化作业流联系页面的显现信息;

  6. 优化了导入导出功用,支撑跨体系导入导出作业流;

  7. 优化了一些 API 的操作,如增加了若干接口办法,增加使命删去查看等。

06 变更日志

另外Apache DolphinScheduler 2.0.1 也修正了一些 bug,首要包括:

  1. 修正了 netty 客户端会创立多个管道的问题;

  2. 修正了导入作业流界说过错的问题;

  3. 修正了使命编码会重复获取的问题;

  4. 修正运用 Kerberos 时,Hive 数据源衔接失利的问题;

  5. 修正 Standalone 服务发动失利问题;

  6. 修正告警组显现故障的问题;

  7. 修正文件上传反常的问题;

  8. 修正 Switch 使命运转失利的问题;

  9. 修正作业流超时策略失效的问题;

  10. 修正 sql 使命不能发送邮件的问题。

07 致谢

感谢 289 位参加 2.0.1 版别优化和改善的社区奉献者(排名不分先后)!

Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级、插件化终于实现!

Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级、插件化终于实现!

08 参加社区

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

参加 DolphinScheduler 社区有非常多的参加奉献的办法,包括:奉献第一个PR(文档、代码)咱们也期望是简单的,第一个PR用于了解提交的流程和社区协作以及感受社区的友好度。社区汇总了以下

  • 适合新手的问题列表:github.com/apache/dolp…
  • 进阶问题列表:github.com/apache/dolp…
  • 如何参加奉献链接:dolphinscheduler.apache.org/zh-cn/docs/…

开源社区需求您的参加,为我国开源兴起添砖加瓦吧,哪怕仅仅小小的一块瓦,汇聚起来的力气也是巨大的。参加开源能够近距离与各路高手商讨,敏捷提高自己的技能,假如您想参加奉献,咱们有个奉献者种子孵化群,能够增加社区小帮手微信(Leonard-ds)手把手教会您( 奉献者不分水平高低,有问必答,关键是有一颗乐意奉献的心 )。

增加小帮手微信时请说明想参加奉献。

社区官网dolphinscheduler.apache.org/

代码仓地址github.com/apache/dolp…

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

增加小帮手微信 (Leonard-ds) 参加社区

Apache DolphinScheduler

Apache DolphinScheduler 是 Apache 基金会孵化的尖端项目。作为新一代大数据使命调度体系,致力于“处理大数据使命之间错综杂乱的依靠联系,使整个数据处理流程直观可见”。DolphinScheduler 以 DAG(有向无环图)的办法将 Task 拼装起来,可实时监控使命的运转状况,同时支撑重试、从指定节点恢复失利、暂停及 Kill 使命等操作,并专注于可视化 DAG、调用高可用、丰厚的使命类型依靠、使命日志/告警机制和补数 6 大才能。

迄今为止,Apache DolphinScheduler 社区已经有 280+ 位代码奉献者,70+ 位非代码奉献者,其间也不乏其他 Apache 尖端项目的PMC 或许 Committer。开源社区也在不断发展壮大,微信用户群近 6000 人。截止 2021 年 9 月,已经有 600+家公司及组织在出产环境中采用 DolphinScheduler。

欢迎更多同伴也能参加到开源社区建设中来,让未来 DolphinScheduler 的规划中也有你的一份奉献!

Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级、插件化终于实现!