DAG:全称为 Directed Acyclic Graph,指有向无环图,具备紧密的拓扑性质,有很强的流程表达能力。
DataLeap 是火山引擎自研的一站式大数据中台解决方案,集数据集成、开发、运维、治理、资产治理能力于一身的大数据研发治理套件。在平台中,一个外围的性能为工作的调度,会依据工作设置的调度频率(月级,日级,小时级等)运行工作,从而生成对应的实例。
在数仓研发中,不同的表之间会存在依赖关系,而产生表数据的工作实例,也会因而存在依赖关系。只有在上游实例运行胜利、上游实例达到设定的运行工夫且资源短缺的状况下,上游实例才会开始执行。所以,在日常的工作运维中,经常须要剖析实例上下游的运行状况,依据具体的状况对实例进行置胜利、重跑等操作。
而如何清晰地展现实例之间的关系,帮忙用户疾速地剖析整个链路的运行状况,并实现问题定位和运维操作,则是实例 DAG 须要解决的问题。上面比照下优化前后的成果。
优化前:
能够看到在简单链路中,将所有节点的关系全副展现进去,导致连线凌乱,须要通过不停的拖拽、缩放,能力找到没有执行的上游节点。
优化后:
通过采纳了将节点聚合的模式,简洁地展现上下游关系。同时,采纳了将实例状态进行分类的模式,提供快捷操作的按钮,让用户能够只关注特定状态的实例,缩小了无用信息对用户运维操作的烦扰。
这里会波及如下概念:
1. 工作:在 火山引擎 DataLeap 数据研发平台中,对数据执行一系列操作的定义。
2. 实例:通过工作配置的执行频率(月级、天级等)而创立的一个工作的快照。
3.DAG 布局:指依据有向无环图中边的方向,主动计算节点层级和地位的布局算法。
在以后的实例 DAG 图中,用户在理论应用中会碰到如下问题:
1. 简单的实例 DAG 图无奈渲染。
在一些业务方向中,会呈现 DAG 图中有几千节点。因为数据处理的简单和采纳了 svg 的渲染计划,经常会导致前端浏览器的解体。
2. 同层级节点过多,操作艰难。
以下图为例,在剖析上游实例中,是哪个实例没有运行,导致以后实例没有执行时,须要通过间断拖拽,能力定位到关注的上游实例。
3. 查看节点依赖时,只能一直开展,在对不同的上游依赖进行开展时,会导致图展现凌乱。
在通过用户调研及应用过程中发现,应用 DAG 进行剖析时次要有以下场景:1. 以后实例曾经达到指定运行工夫,然而没有运行。
在这种状况下,用户关注的是上游没有运行的实例 / 运行失败的实例,分割上游实例的责任人进行问题定位。
2. 当实例曾经运行胜利,然而实现工夫比失常状况下有提早。
在这种状况下,用户关注的是上游实例中,最晚实现的实例。从而判断是否对链路进行治理优化。
3. 当实例运行失败,导致上游没有运行。
在这种状况下,用户关注的是依赖以后实例的所有上游实例,同时须要对上游实例进行聚合筛选,比方工作的优先级(代表工作的外围水平),以告诉上游实例进行重跑等操作。
联合下面存在的问题可失去,次要起因是因为在简单链路状况下,上述需要比拟难满足。而在旧版的 DAG 中,针对简略链路和简单链路的解决是统一的,为此,须要设计解决简单链路场景下的计划。