DolphinScheduler任务类型梳理

一.状态

  • processInstance 和taskInstace状态取值。

       SUBMITTED_SUCCESS(0, "submit success"),
        RUNNING_EXEUTION(1, "running"),
        READY_PAUSE(2, "ready pause"),
        PAUSE(3, "pause"),
        READY_STOP(4, "ready stop"),
        STOP(5, "stop"),
        FAILURE(6, "failure"),
        SUCCESS(7, "success"),
        NEED_FAULT_TOLERANCE(8, "need fault tolerance"),
        KILL(9, "kill"),
        WAITTING_THREAD(10, "waiting thread"),
        WAITTING_DEPEND(11, "waiting depend node complete");
    

二.类型:

  • commandType的取值

        START_PROCESS(0, "start a new process"),
        START_CURRENT_TASK_PROCESS(1, "start a new process from current nodes"),
        RECOVER_TOLERANCE_FAULT_PROCESS(2, "recover tolerance fault process"),
        RECOVER_SUSPENDED_PROCESS(3, "recover suspended process"),
        START_FAILURE_TASK_PROCESS(4, "start process from failure task nodes"),
        COMPLEMENT_DATA(5, "complement data"),
        SCHEDULER(6, "start a new process from scheduler"),
        REPEAT_RUNNING(7, "repeat running a process"),
        PAUSE(8, "pause a process"),
        STOP(9, "stop a process"),
        RECOVER_WAITTING_THREAD(10, "recover waiting thread");
    
  • commandId 会变的情况统计

    • 【1】重新运行(会产生新的commandId)

      REPEAT_RUNNING(7, "repeat running a process")
      
    • 【2】master节点容错(会产生新的commandId

      • 查询processInstance(t_ds_process_instance)

      • 如果master+worker或者单单worker节点挂掉,会运行一个新的任务

      • 如果单单master节点挂掉,(由于woker节点还活着,任务并没有挂掉),即使有master 容错产生了command,但是并没有重新生成新的任务。

      • RECOVER_TOLERANCE_FAULT_PROCESS(2, “recover tolerance fault process”)

    • 【3】woker节点容错(不会产生新的commandId

      • 查询processInstance(t_ds_task_instance)
      • 修改其状态为“need fault tolerance”
    • 【4】多个实例运行的时候(会产生新的commandId

      • 没有问题,正常,每此触发【多个实例嘛】,都会返回一个新的commandId,会变是正常
    • 【5】定时任务(会产生新的commandId,新的processInstanceId

      • 每次触发定时任务都会产生一个新的processInstance记录和taskInstance记录。
      • SCHEDULER(6, “start a new process from scheduler”),
    • 【6】MaxRetryTimes,失败重试(commandId不会变,ProcessInstanceId不变
      在整个重试的过程中是运行的(process Instance)状态也就是值是running(1),当达到上限的时候,如果没有成功的话,状态是failure(6)。只是将任务重新放入队列中,所以并不会生成command。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Java生成DolphinScheduler任务,你需要使用DolphinScheduler提供的Java API。这个API提供了丰富的接口,可以让你通过Java代码来创建、修改、删除DolphinScheduler中的任务。以下是一个简单的Java代码示例,演示了如何利用DolphinScheduler Java API创建一个DolphinScheduler任务: ``` // 导入相关包 import org.apache.dolphinscheduler.api.service.ProcessDefinitionService; import org.apache.dolphinscheduler.api.service.impl.ProcessDefinitionServiceImpl; import org.apache.dolphinscheduler.dao.entity.ProcessDefinition; import org.apache.dolphinscheduler.dao.entity.ProcessDefinitionVersion; // 创建ProcessDefinitionService对象 ProcessDefinitionService processDefinitionService = new ProcessDefinitionServiceImpl(); // 创建ProcessDefinition对象 ProcessDefinition processDefinition = new ProcessDefinition(); processDefinition.setName("MyTask"); processDefinition.setDescription("This is a test task."); processDefinition.setProjectId(1); processDefinition.setProcessDefinitionJson("{\"tasks\":[{\"type\":\"SHELL\",\"id\":\"tasks-1\",\"name\":\"test\",\"params\":{\"rawScript\":\"echo hello world\"}}],\"startNodeId\":\"tasks-1\",\"globalParams\":[],\"tenantId\":-1}"); // 创建ProcessDefinitionVersion对象 ProcessDefinitionVersion processDefinitionVersion = new ProcessDefinitionVersion(); processDefinitionVersion.setProcessDefinitionJson(processDefinition.getProcessDefinitionJson()); processDefinitionVersion.setProcessDefinitionId(processDefinition.getId()); processDefinitionVersion.setVersion(1); // 调用ProcessDefinitionService的createProcessDefinition接口来创建任务 processDefinitionService.createProcessDefinition(processDefinition, processDefinitionVersion); ``` 请注意,以上代码只是一个示例,实际上创建DolphinScheduler任务需要更多的配置和参数。你需要根据自己的实际需求和DolphinScheduler的API文档来完善代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值