写点什么

火山引擎 DataLeap 数据调度实例的 DAG 优化方案 (一):问题与需求分析

  • 2023-05-15
    北京
  • 本文字数:1219 字

    阅读完需:约 4 分钟

DAG:全称为 Directed Acyclic Graph,指有向无环图,具备严密的拓扑性质,有很强的流程表达能力。

DataLeap 是火山引擎自研的一站式大数据中台解决方案,集数据集成、开发、运维、治理、资产管理能力于一身的大数据研发治理套件。在平台中,一个核心的功能为任务的调度,会根据任务设置的调度频率(月级,日级,小时级等)运行任务,从而生成对应的实例。

在数仓研发中,不同的表之间会存在依赖关系,而产生表数据的任务实例,也会因此存在依赖关系。只有在上游实例运行成功、下游实例到达设定的运行时间且资源充足的情况下,下游实例才会开始执行。所以,在日常的任务运维中,常常需要分析实例上下游的运行情况,根据具体的情况对实例进行置成功、重跑等操作。

而如何清晰地展示实例之间的关系,帮助用户快速地分析整个链路的运行情况,并完成问题定位和运维操作,则是实例 DAG 需要解决的问题。下面对比下优化前后的效果。

优化前:


可以看到在复杂链路中,将所有节点的关系全部展示出来,导致连线混乱,需要通过不停的拖拽、缩放,才能找到没有执行的上游节点。

优化后:

通过采用了将节点聚合的形式,简洁地展示上下游关系。同时,采用了将实例状态进行分类的形式,提供快捷操作的按钮,让用户可以只关注特定状态的实例,减少了无用信息对用户运维操作的干扰。

这里会涉及如下概念:

  1. 任务:在 火山引擎 DataLeap 数据研发平台中,对数据执行一系列操作的定义。

  2. 实例:通过任务配置的执行频率(月级、天级等)而创建的一个任务的快照。

  3. DAG 布局:指根据有向无环图中边的方向,自动计算节点层级和位置的布局算法。


在当前的实例 DAG 图中,用户在实际使用中会碰到如下问题:

  1. 复杂的实例 DAG 图无法渲染。

在一些业务方向中,会出现 DAG 图中有几千节点。由于数据处理的复杂和采用了 svg 的渲染方案,常常 2 会导致前端浏览器的崩溃。

  1. 同层级节点过多,操作困难。

以下图为例,在分析上游实例中,是哪个实例没有运行,导致当前实例没有执行时,需要通过连续拖拽,才能定位到关注的上游实例。


  1. 查看节点依赖时,只能不断展开,在对不同的上游依赖进行展开时,会导致图展示混乱。


在通过用户调研及使用过程中发现,使用 DAG 进行分析时主要有以下场景:

  1. 当前实例已经到达指定运行时间,但是没有运行。

在这种情况下,用户关注的是上游没有运行的实例 / 运行失败的实例,联系上游实例的责任人进行问题定位。

  1. 当实例已经运行成功,但是完成时间比正常情况下有延迟。

在这种情况下,用户关注的是上游实例中,最晚完成的实例。从而判断是否对链路进行治理优化。

  1. 当实例运行失败,导致下游没有运行。

在这种情况下,用户关注的是依赖当前实例的所有下游实例,同时需要对下游实例进行聚合筛选,比如任务的优先级(代表任务的核心程度),以通知下游实例进行重跑等操作。


结合上面存在的问题可得到,主要原因是由于在复杂链路情况下,上述需求比较难满足。而在旧版的 DAG 中,针对简单链路和复杂链路的处理是一致的,为此,需要设计解决复杂链路场景下的方案

用户头像

小助手微信号:Bytedance-data 2021-12-29 加入

字节跳动数据平台团队,赋能字节跳动各业务线,对内支持字节绝大多数业务线,对外发布了火山引擎品牌下的数据智能产品,服务行业企业客户。关注微信公众号:字节跳动数据平台(ID:byte-dataplatform)了解更多

评论

发布
暂无评论
火山引擎DataLeap数据调度实例的 DAG 优化方案 (一):问题与需求分析_数据平台_字节跳动数据平台_InfoQ写作社区