Skip to main content

周期实例

任务的每次运行,成为一个实例,任务的周期性运行产生的实例,记为周期实例。周期实例的查看入口在「运维中心→离线任务→周期实例」,周期实例是日常运维的主要操作入口,常见的操作包括排查报错任务、查看依赖视图、重跑、杀任务等操作

实例列表

实例列表包括任务名称、状态、任务类型、开始/结束时间等信息,主要功能模块包含:

  • 实例数量统计:统计当前列表中的实例数量,当执行搜索、筛选等操作后,仅统计上述操作结束后,结果列表中的实例数量。当包含工作流时,仅统计工作流内部节点数量,不将工作流本身计入统计
  • 列表操作:
    • 任务名称搜索:与任务管理类似
    • 基本过滤:包含任务责任人、业务日期、计划时间等,其中计划时间支持时分秒粒度的过滤
    • 表头过滤:支持按照任务类型、调度周期等条件过滤
    • 表头排序:支持按照业务日期、计划时间、开始时间等条件排序
    • 刷新:点击列表右上角的「刷新」icon,可刷新列表内容
  • 依赖视图浏览:点击任务名称,右侧展开任务间的依赖视图
  • 工作流的处理:
    • 工作流本身占一行,点击「展开」后,列出内部节点
    • 工作流本身不纳入实例数量统计
    • 工作流本身在依赖视图中表示为1个节点,点击「展开」icon后,将在弹窗中展开工作流内部节点实例,如下图所示:
tip

实例列表与任务列表的主要区别在2点:

  • 实例是含状态的,例如成功、失败、任务运行日志等信息
  • 任务每次运行将产生一个实例,除天任务之外,其他任务可能多天产生一个实例,或者一天产生多个实例

依赖视图

若需要查看某个实例的详细信息,在实例列表中点击任务名,右侧将会弹出依赖视图面板

shiliyilai

  • 绘图区域:面板支持拖动、大小缩放等基本操作与任务管理→依赖视图类似
  • 右键菜单:在依赖视图中,在某个任务上点击鼠标右键,弹出右键菜单,支持多种操作:
    • 基本操作
      • 展开上/下游(6层):以当前节点为基准,展开当前节点的上下游6层任务,与当前节点平行的任务将不会展现
      • 查看任务日志:打开日志查看弹窗,包含提交日志、运行日志、任务代码等
      • 查看任务属性:打开任务属性弹窗,包含任务名称、状态等信息
      • 转到前一/下一周期实例:以当前实例原点,列出当前实例的前6个、后6个实例的计划时间及状态。当任务由于前序实例失败,造成当前实例进入上游失败状态时,便于快速跳转到引发失败的初始实例。典型场景是:分钟任务、小时任务,或自依赖模式的天任务,例如:5分钟周期的分钟任务,下午14:00有实例失败,可通过此功能快速定位
      • 修改任务:进入数据开发模块,并打开此任务进入编辑状态
    • 状态操作:以下的操作将会触发依赖视图整体刷新,之前设置的缩放状态、实例信息将会被重置
      • 终止:手动杀任务
      • 刷新任务实例:刷新所有实例的状态信息
      • 置成功并恢复调度:强制将此设置为成功执行(状态为:手动设置成功),并恢复任务调度
      • 重跑下游并恢复调度:弹窗中逐层列出当前及下游任务,可勾选重跑范围。勾选「全部」表示重跑当前及其全部下游任务,无论当前任务有没有在弹窗中列出,均会全部重跑

chongpaoxiayou

上文列出的状态操作,不同的实例状态可进行不同的操作(Y表示支持,空表示不支持):

任务状态刷新任务实例终止重跑当前及下游任务置成功并恢复调度重跑并恢复调度
等待提交YYYYY
提交中YYYYY
等待运行YYYYY
运行中YYY
成功YYYY
取消YYYY
提交失败YYYY
运行失败YYYY
上游失败YYYY
冻结YYYYY
已删除Y
  • 工作流的处理

与任务管理的依赖视图类似,周期实例中工作流的依赖视图也是分为2层展现,点击工作流的「展开」icon,在弹出窗中展现工作流的内部节点。内部节点的操作方式与外部基本相同

批量操作

在周期实例列表的左下角,支持批量进行杀任务、批量重跑任务

  • 批量杀任务
    • 多选杀任务:在列表中多选实例,点击「批量杀任务」,系统会将符合状态条件的任务批量执行杀死,本操作不支持跨分页操作
    • 按业务日期杀:可选择指定的业务日期、实例调度周期执行批量杀死,可批量将业务日期为2020-05-06的所有分钟任务全部杀死

anyewuriqi

  • 重跑当前任务
    • 多选重跑:在列表中多选实例,点击「重跑当前任务」,系统会将符合状态条件的任务批量执行杀死,本操作不支持跨分页操作
    • 重跑当前及全部下游任务:在列表中多选实例,点击「重跑当前及全部下游任务」,会在选中实例及其下游全部实例中,对符合状态条件的实例执行重跑

日志打印

实时打印

On Yarn的部分任务,支持在实例中实时打印日志,包含以下几种任务类型:Spark SQL、Hive SQL、数据同步任务、HadoopMR、Spark、Flink。方便用户在实例的执行过程中及时干预。

内容组成

日志分为如下几部分:提交日志、运行日志、任务代码

  • 提交日志:任务提交至引擎是否成功,若成功,则可能不会打印此日志,若提交失败,可通过此日志排查提交失败原因
  • 运行日志:任务在计算引擎上执行的日志信息,是最主要的错误排查方式
  • 任务代码:SQL任务会打印提交至计算引擎的任务代码,主要是进行了系统参数替换

日志下载

基于Hadoop体系执行的任务,例如SparkSQL、HiveSQL、Shell等任务,由于YARN可能产生很大的日志文件,浏览器无法完整展示,需要用户点击「下载」按钮,将日志下载到本地查看

重试日志

当实例进行了多次重试后,每次重试会打印对应的日志内容,支持切换查看每次重试的日志信息

image-20221227165232620

数据同步性能图形化展示

对于同步任务(包括工作流里的数据同步子节点),在任务运行结束时(成功/失败)增加显示同步概览信息。具体信息有数据来源、数据目标、同步速率、同步工具等信息。如下图所示

image-20230131192450490

Hive SQL实例资源占用监控与告警

控制台hiveserver的hive.monitor.resources.enable值为true时,所有Hive SQL中将会展示资源使用模块,如下图所示

分别展示CPU和内存的使用变化情况

image-20230131192607631

紧急去依赖

应用场景

若任务A被下游任务B依赖,A的某个实例出现运行失败等异常情况一直未成功,且B不强依赖A的结果,而B又因业务原因需要按时产出,此时可以对B的A依赖进行紧急去除。

image-20220617180059916

操作入口

「运维中心-离线任务-周期实例/补数据实例」中,右键实例菜单,可以选择「紧急去依赖」。

去依赖一

紧急去依赖使用前

紧急去依赖使用条件:当前实例状态为“等待提交”且存在上游实例依赖。

紧急去依赖使用中

点击“紧急去依赖”后弹窗中可选择需要紧急去除依赖的上游实例,范围包括当前实例的上游依赖实例和跨周期自依赖实例)

去依赖二

紧急去依赖使用后

实例通过紧急去依赖去除某个上游依赖关系后,依赖关系的实线变为虚线展示,其运行条件不再依赖该上游实例的成功,且依赖去除后不可恢复。任务第二天及以后生成的实例/补数据实例保留原依赖配置不受影响。

数栈停机时实例情况

1、数栈停机升级期间,如果在20点-24点正在停机部署,按计划22点生成的周期实例,是否会影响生成?

答案: 不会。

原因: dagschedulex生成周期实例的逻辑并不是到达设置的时候后,开始生成实例。而是启动一个定时器,不停的尝试去生成今天的周期实例,生成实例时,回去检查schedule_job_graph表中是否有生成记录,如果有,说明已经生成,直接return返回。如果没有,开始生生成周期实例。所以实际得逻辑是22点之前是尝试生成今天的周期实例,22点以后是尝试生成明天的周期实例。

2、如果有实例正在执行中,在这期间数栈停机升级了,对于正在执行中的实例,有什么影响?

答案:停机期间实例不会提交,已提交的实例,会运行完成

原因:如果已经提交到yarn,那么就在yarn执行完成,如果没有提交到yarn,那么会存储在schedule_engine_job_cache表中。升级完成重启后,会重新加载schedule_engine_job_cache尝试提交。

3、如果在数栈停机升级期间,计划时间应该执行的实例过错了,这部分实例有什么影响,是否会在启动后再次触发执行?

答案: (1)计划时间距离启动数栈时间超过两天,不会提交。 (2) 计划时间距离启动数栈时间不超过两天,会提交。

4、在数栈停机期间,错过执行的周期实例,在运维中心-周期实例页面,显示的是什么状态?

答案: 不存在这种情况,数栈停机后,运维中心是无法打开的。

5、针对停机升级期间,受到影响的周期实例,数栈是否支持监控告警?

答案: 不会,数栈都停机了,不会对实例监控告警。

任务诊断

info

该功能仅专业版、旗舰版支持

在日常数据开发过程中,常常会遇到以下两个问题:

  • 任务一直处于等待提交或者等待运行状态,看不到原因,也不知道如何让任务尽快跑起来。
  • 任务运行了很久没有出结果,不知道是什么原因导致,不能有针对性地进行改善。

可以通过任务诊断功能对任务进行全链路分析,当任务运行不符合预期时,可以使用该功能快速定位问题。

概述

任务诊断功能可以基于以下维度对任务进行诊断分析:

  • 全链路分析

起调时间检查->实例状态检查->上游依赖检查->资源限制检查->实例提交->资源匹配->实例运行->质量校验

任务诊断链路的展示与任务涉及的具体流程有关,例如有些任务不存在上游依赖,则“上游依赖检查”将会隐藏。

  • 基本信息

支持查看当前实例运行的关键时间点和导致当前状态的原因。

使用任务诊断

目前周期任务实例、补数据实例、手动任务实例均支持使用任务诊断功能。

tip

Spark SQL 实例可展示执行过程消耗的内存、io、网络等指标。

在「离线开发->运维中心->周期实例/补数据实例/手动任务实例」中,查看实例详情,切换至「实例诊断」tab页面,即可查看当前实例的诊断流程视图,并展示任务当前状态和处理建议,如下图。

单击实例调度流程任一流程,可以查看流程说明。

image-20230413095924828

全链路诊断

根据任务运行的必要条件,将依次检查起调时间、实例状态、上游依赖、资源限制、实例提交情况、资源匹配情况、实例运行情况、质量校验。

起调时间检查:起调时间检查分为两个流程状态「检查中」->「检查完成」。

  • 当流程状态为「检查中」时,实例诊断中会打印“【当前状态】未达起调时间: HH:MM”;
  • 当流程状态为「检查完成」时,如果实例到达起调时间,实例诊断中会打印“【当前状态】到达起调时间:04:00”。如果实例起调有问题,实例诊断中会打印“【当前状态】失败原因”

起调时间检查日志的打印,便于用户查看任务实例是否到达了起调时间,或是因为那些原因导致实例无法起调。

实例状态检查:实例状态检查区分为四个流程状态「未到此流程」->「实例状态检查」->「实例状态检查正常」or「实例状态检查异常」。当状态为「未到此流程」「实例状态检查」「实例状态检查正常」三种状态时,正常打印状态信息。当实例状态为「实例状态检查异常」时,会根据不同的状态细节,给出不同的处理意见。

  • “实例等待提交超时”的处理建议为:重跑实例
  • “任务已冻结”的处理建议为:解冻实例
  • “实例非提交状态”的处理建议为:重跑实例
  • “任务已删除”不会打印处理意见。

实例状态导致失败的情况多种多样,通过实例状态检查日志打印,可以第一时间判断出实例的异常状态,并根据建议及时处理。

上游依赖检查:上游依赖检查存在四个流程状态「未到此流程」->「上游依赖检查中」->「上游依赖全部成功」or「上游依赖中存在异常」。当状态为「未到此流程」「上游依赖检查中」「上游依赖全部成功」三种状态时,正常打印状态信息。当实例状态为「实例状态检查异常」时,会打印所有影响当前实例运行的根源实例和影响当前实例运行的原因(运行失败、实例未生成、等待提交、自动取消、手动取消、冻结),并给出处理意见(检查并重跑异常上游实例)

tip

跨周期实例的上游实例状态,也会在日志中打印

资源限制检查:当任务对应的计算引擎在控制台配置了资源限制,那在任务诊断中会进行资源限制检查。分为四个流程状态「未到此流程」->「资源限制检查中」->「资源限制检查通过」or「资源限制检查失败」。当状态为「未到此流程」「资源限制检查中」「资源限制检查通过」三种状态时,正常打印状态信息。当实例状态为「资源限制失败」时,一般是实例在环境参数配置的资源超过租户资源上限,在任务诊断中会打印租户资源限制和当前实例的资源配置情况,并给出处理建议:将实例对应任务在环境参数中的资源配置调小,或将租户对任务资源限制调大。

实例提交:对当前实例的提交状态进行打印,分为四个流程:「未到此流程」->「实例提交中」->「实例提交成功」or「实例提交异常」

资源匹配:当前实例非虚节点实例时,会进行资源匹配。分为三个流程状态:「未达次流程」->「资源等待中」->「成功」。「未达次流程」和「成功」状态,正常打印状态信息。当实例状态为「资源等待中」时,根据不同的任务类型打印不同的资源等待情况和处理建议。

  • on yarn的hadoop任务(hive sql、spark sql等):打印资源组中「等待中实例数」、「队列中实例数」和「资源组已使用容量」,并给出处理建议“可杀死部分低优先级任务保障高优先级任务尽快运行”
  • RDB类任务(mysql、oracle等):打印「等待中实例数」、「当前队列最大实例数」,并给出处理建议“可杀死部分低优先级任务保障高优先级任务尽快运行”
  • on k8s的hadoop任务:打印资源组中「等待中实例数」、「队列中实例数」和「资源组已使用容量」,并给出处理建议“可杀死部分低优先级任务保障高优先级任务尽快运行”
  • 工作流任务:打印资源情况“资源不足”

实例运行:对当前实例的运行状态进行打印,分为四个流程:「未到此流程」->「运行中」->「运行成功」or「运行失败」。「运行中」会打印运行耗时。「运行失败」会给出处理建议“检查实例日志并重跑”。

质量校验:当任务绑定了质量校验任务,在任务诊断中会进行质量校验,分为四个流程「未到此流程」->「质量校验中」->「成功」or「异常」。当质量校验异常时,会给出处理建议“检查实例代码或相关表数据并重跑”。