点亮 ⭐️ Star · 照亮开源之路
https://github.com/apache/dolphinscheduler

任务插件扩展介绍
1
Apache DolphinScheduler

2
Dolphinscheduler 任务组件使用示例

3
SPI 服务发现

4
构建Task实现

5
任务插件开发流程(基于 SHELL 的任务)
基于 YARN 的计算(参见 MapReduceTask)
需要在 org.apache.dolphinscheduler.server.worker.task 下的 TaskManager 类中创建自定义任务(也需在TaskType注册对应的任务类型) 需要集成 org.apache.dolphinscheduler.server.worker.task 下的 AbstractYarnTask 构造方法调度 AbstractYarnTask 构造方法 集成 AbstractParameters 自定义任务参数实体 重写 AbstractTask 的 init 方法中解析自定义任务参数 重写 buildCommand 封装 command
基于非 YARN 的计算(参见 ShellTask)
需要在 org.apache.dolphinscheduler.server.worker.task 下的 TaskManager 中创建自定义任务 需要集成 org.apache.dolphinscheduler.server.worker.task 下的 AbstractTask 构造方法中实例化 ShellCommandExecutor
public ShellTask(TaskProps props, Logger logger) {super(props, logger);this.taskDir = props.getTaskDir();this.processTask = new ShellCommandExecutor(this::logHandle,props.getTaskDir(), props.getTaskAppId(),props.getTenantCode(), props.getEnvFile(), props.getTaskStartTime(),props.getTaskTimeout(), logger);this.processDao = DaoFactory.getDaoInstance(ProcessDao.class);}
传入自定义任务的 TaskProps和自定义Logger,TaskProps 封装了任务的信息,Logger分装了自定义日志信息 集成 AbstractParameters 自定义任务参数实体 重写 AbstractTask 的 init 方法中解析自定义任务参数实体 重写 handle 方法,调用 ShellCommandExecutor 的 run 方法,第一个参数传入自己的command,第二个参数传入 ProcessDao,设置相应的 exitStatusCode
基于非 SHELL 的任务(参见 SqlTask)
需要在 org.apache.dolphinscheduler.server.worker.task 下的 TaskManager 中创建自定义任务 需要集成org.apache.dolphinscheduler.server.worker.task 下的 AbstractTask 集成 AbstractParameters 自定义任务参数实体 构造方法或者重写 AbstractTask 的 init 方法中,解析自定义任务参数实体 重写 handle 方法实现业务逻辑并设置相应的exitStatusCode
Apache DolphinScheduler与Linkis 的集成
1
Linkis 架构概要

2
应用方式一(JAVA SDK)
private static JobExecuteResult toSubmit(String user, String code) {// 1. build params// set label map :EngineTypeLabel/UserCreatorLabel/EngineRunTypeLabel/TenantMap labels = new HashMap();labels.put(LabelKeyConstant.ENGINE_TYPE_KEY, "spark-2.4.3"); // required engineType Labellabels.put(LabelKeyConstant.USER_CREATOR_TYPE_KEY, user + "-APPName");// required execute user and creator eg:hadoop-IDElabels.put(LabelKeyConstant.CODE_TYPE_KEY, "py"); // required codeType// set start up map :engineConn start paramsMap startupMap = new HashMap(16);// Support setting engine native parameters,For example: parameters of engines such as spark/hivestartupMap.put("spark.executor.instances", 2);// setting linkis paramsstartupMap.put("wds.linkis.rm.yarnqueue", "dws");// 2. build jobSubmitActionJobSubmitAction jobSubmitAction = JobSubmitAction.builder().addExecuteCode(code).setStartupParams(startupMap).setUser(user) //submit user.addExecuteUser(user) // execute user.setLabels(labels).build();// 3. to executereturn client.submit(jobSubmitAction);}
org.apache.linkislinkis-computation-client${linkis.version}如:org.apache.linkislinkis-computation-client1.0.3
3
应用方式二(Linkis-Cli)
#linkis-mg-gateway服务地址wds.linkis.client.common.gatewayUrl=http://127.0.0.1:9001#认证鉴权策略 token/staticwds.linkis.client.common.authStrategy=token#static 模式下为用户名/密码,token模式下为linkis-mg-gateway_auth_token表中token_name 和logal_userswds.linkis.client.common.tokenKey=Validation-Codewds.linkis.client.common.tokenValue=BML-AUTH
sh ./bin/linkis-cli -engineType spark-2.4.3 -codeType sql -code "select count(*) from testdb.test;" -submitUser hadoop -proxyUser hadoop
/dolphinscheduler/conf/env/dolphinscheduler_env.sh


4
集成流程

LinkisParameters(参数) LinkisTask(任务执行) LinkisTaskChannel(创建、取消等实现类) LinkisTaskChannelFactory(TaskChannel的工厂实现类)



愿景
将遇到的问题通过 github 上 issue 的形式反馈出来 回答别人遇到的 issue 问题 帮助完善文档 帮助项目增加测试用例 为代码添加注释 提交修复 Bug 或者 Feature 的 PR 发表应用案例实践、调度流程分析或者与调度相关的技术文章 帮助推广 DolphinScheduler,参与技术大会或者 meetup 的分享等
参与贡献
随着国内开源的迅猛崛起,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/community/development/contribute.html
来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。
参与开源可以近距离与各路高手切磋,迅速提升自己的技能,如果您想参与贡献,我们有个贡献者种子孵化群,可以添加社区小助手微信(Leonard-ds) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。

添加社区小助手微信(Leonard-ds)
添加小助手微信时请说明想参与贡献。
来吧,开源社区非常期待您的参与。
☞DolphinScheduler 登陆 AWS AMI 应用市场!
☞DolphinScheduler 机器学习工作流预测今年 FIFA 世界杯冠军大概率是荷兰!
☞DolphinScheduler 快速构建 Hugging Face 文本分类工作流,基于工作流的机器学习训练部署太强了!





