历史版本5 :调度配置说明--零碎记录(让我自己删) 返回文檔
編輯時間: 內容長度:图片数:目录数: 修改原因:

下游依赖上游时:

  •  用的是相同周期的结果,

  • 还是上一周期的结果.

  • 其中跨周期依赖还可以依赖自己的上一个实例.

fdl目前没有周期的概念. 也没法实现自依赖.-----内置参数可以?

fdl目前只能依赖于上游任务在指定时间范围内的所有实例.

目前的增强依赖会把所有存在依赖关系的任务放到一个依赖图中. 但这样会因为有维度表的存在, 导致不同业务域的任务全都出现在一个依赖图中.

而DataWorks支持通过 依赖其他节点 的方式, 依赖工作空间/业务流程的输出表


目錄:

1. 几种调度模式编辑

1.1 定时调度

周期性调度,设置定时任务的执行频率。

功能简介:

可为定时任务设置执行频率,定期自动运行定时任务,以保证数据能够及时更新,一个定时任务可设置多个执行频率

应用场景:

任务本身按照频率执行

数据仓库周期性数据变化

每天交易数据的抽取加载(当天将前一天数据更新入库)

优势:

易于管理和维护、规则简单


定时任务调用接口

调用接口就能执行任务A

高度灵活,实时响应用户系统数据的变化

执行过程中需要基于外部事件或者触发器,比如数据库表中的变更数据,通过外部业务系统推送实时变更数据,实时响应的实时数据处理

接口:定时任务相关接口介绍

示例:FR模板调用定时任务接口示例




1.2 事件调度

可以不立即触发

应用场景:

多任务间的调度

用户设置好数仓任务后,设置上游任务在上午更新,希望下午资源空闲时分去定时触发下游大表更新。

用户希望 ods 层任务完全更新成功之后,更新后会一起触发一次下游 dw 层任务。

用户设置 A、B 任务触发 D 任务,A、B任务都失败,未触发下游任务 D,希望能够重跑任务,若两个任务均重跑成功则触发下游任务。


https://kms.fineres.com/pages/viewpage.action?pageId=1003881288

数仓场景:

  • 任务分层,但是每个层级里的任务调度频率不一致;

    • 主要问题:集群调度并发是400,一个ODS-MES层300个任务会配在一个批量调度计划中,但是仅需要调度计划内去配并发10个任务,一下子跑300任务会对同个数据库造成巨大压力。

    • 主要问题:简道云的大表8000w需要在下午空闲时间去触发执行,需要判断上游任务是否是最新数据,而不是上游跑完立即触发造成资源紧张。

    • ods层每个任务的频率是不一致的,一个任务一张表,有分钟/小时/天任务,小时级任务仅需触发一次天任务即可,调度都是配在单个任务里的,不会用批量调度计划,所以依赖也是单独配任务。(信息组)

    • 数仓分层,ods层是调度频率不一致的,基本也是一个任务一张表,维度表——>事实表,下游会根据任务去配,更期望使用拖拉拽可视化方式去配置,目前的易用性客人更愿意去用调度任务配置并且关系更清晰。

  • 任务分层,每个层级的调度频率相对一致;

    • ods 层是一个批量调度计划,dwd层的也是一个批量调度计划,dwm层里的任务会有依赖关系:维度表—>事实表,dws 层也是有先后依赖关系的。数仓层级大关系是客户一定要ods层跑完才会跑dwd层,并且每个任务一天就跑一次。(江苏固德威电源科技股份有限公司)

  • 任务分层,每个层级调度频率一致,但是需要错峰依赖。

    • ODS层的A/B任务先跑完就可以触发DW层的C任务了,不用等ODS层所有任务都执行完,节省整体的任务调度时间。(海尔金控)

调试场景:

  • 开发人员已经设置了依赖任务的配置,主场景①修改调试了上游任务中部分节点,触发了下游任务导致数据不准确的问题;次场景②中间任务存在紧急需求更改并需要执行时拉起部分下游任务,全部下游被拉起会造成资源浪费&耗时问题

运维场景:

  • 运维人员在任务失败后利用实例重试补数据,痛点是该任务下游任务不会延续上游任务指定的时间参数,而是当前时间的参数,导致了下游数据数据不准确的问题。





1.3 调用任务

立即触发,A任务运行完就立即触发B了

多任务间的调度

父任务A调用子任务B,父任务A可以设置执行频率,等A完成,再执行B

父任务可以给子任务传递参数

父任务和子任务都设置了调度,如果父任务执行时,子任务正在运行,此时父任务触发子任务,则会进入排队等待状态

父任务和子任务都设置了调度,多个父任务先后调用子任务时,子任务将排队执行,按照调用时间排队。

用户希望可以在当前定时任务中调用平台内其他定时任务,被调用的任务被放到当前任务里编排,「调用任务」节点可满足该需求。


应用场景:

https://kms.fineres.com/pages/viewpage.action?pageId=292063648

希望对任务能够设置执行依赖调用其他任务,完成跨任务的编排

配置被调用的任务,可以选择:

  1. 除当前任务以外的任务,当前任务置灰或不在选择列表中。

  2. 拥有管理权限的任务,无权限的任务不在选择列表中。若对被调用的任务无管理权限,则不可查看,执行父任务时可正常调用运行。

如果勾选了将当前任务的参数传递给子任务,那么定义的任务参数、参数赋值输出的参数都可以传递给子任务使用。

  • 任务定义的参数:子任务可以直接使用。

  • 参数赋值输出的参数:仅可被子任务的首个节点使用。

、当A任务调用了B任务,并勾选了参数传递,只有在A任务内运行调用B任务时,A任务的参数才可以传递给B任务,单独在B任务内运行,不会获取到A任务里的参数

、父子任务之间的运行没有强相关性,子任务单独运行时也不影响父任务的运行状态。如果子任务正在运行,父任务里也触发到子任务运行,则进入排队状态

父任务构建失败时,子任务也都构建失败,且子任务无运行结果