火山引擎DataLeap数据调度实例的 DAG 优化方案
更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群
实例 DAG 介绍
概念
- 任务:在 DataLeap 数据研发平台中,对数据执行一系列操作的定义。
- 实例:通过任务配置的执行频率(月级、天级等)而创建的一个任务的快照。
- DAG:全称为 Directed Acyclic Graph,指有向无环图,具备严密的拓扑性质,有很强的流程表达能力。
- DAG 布局:指根据有向无环图中边的方向,自动计算节点层级和位置的布局算法。
业务场景
问题
- 复杂的实例 DAG 图无法渲染。在一些业务方向中,会出现 DAG 图中有几千节点。由于数据处理的复杂和采用了 svg 的渲染方案,常常会导致前端浏览器的崩溃。
- 同层级节点过多,操作困难。以下图为例,在分析上游实例中,是哪个实例没有运行,导致当前实例没有执行时,需要通过连续拖拽,才能定位到关注的上游实例。
- 查看节点依赖时,只能不断展开,在对不同的上游依赖进行展开时,会导致图展示混乱。
需求分析
- 当前实例已经到达指定运行时间,但是没有运行。在这种情况下,用户关注的是上游没有运行的实例 / 运行失败的实例,联系上游实例的责任人进行问题定位。
- 当实例已经运行成功,但是完成时间比正常情况下有延迟。在这种情况下,用户关注的是上游实例中,最晚完成的实例。从而判断是否对链路进行治理优化。
- 当实例运行失败,导致下游没有运行。在这种情况下,用户关注的是依赖当前实例的所有下游实例,同时需要对下游实例进行聚合筛选,比如任务的优先级(代表任务的核心程度),以通知下游实例进行重跑等操作。
功能设计
渲染方案替换
不同场景的功能设计
|
模式名称
|
功能
|
|
通用模式
|
分析上游阻塞下游运行的原因、查看上游最晚完成的实例
|
|
统计模式
|
对依赖当前实例的所有下游进行分组查看
|
|
链路模式
|
分析两个实例之间的链路关系
|
通用模式
统计模式
链路模式
技术实现
数据处理
自定义节点注册
图预处理
DAG 图布局
- 去环:包括自环和非自环,为节点分层做准备。
- 节点分层:给所有节点安排合适的层级。
- 节点排序:同层级内节点排序,减少相邻层级中节点连续的交叉点数量。
- 节点坐标分配:根据分层和同层节点的排序计算节点位置。
- 节点所在层级固定:DAG 布局既能支持自动计算层级,也能接受直接指定节点分层。
- 可能产生同层级连线:将同一层级里有连线的节点进行分组,进行内部排序后,视为整体再参与当前层级的排序,以减少交叉点的数量。
总结
参考
- Dag 布局流程参考:Sugiyama, Tagawa, Toda, et al., "Methods for Visual Understanding of Hierarchical System Structures"
- DAG 算法主体: Gansner, et al., "A Technique for Drawing Directed Graphs"
关于我们
欢迎加入字节跳动数据平台官方群,进行数据技术交流、获取更多内容干货
火山引擎DataLeap数据调度实例的 DAG 优化方案的更多相关文章
- 大数据量数据库设计与优化方案(SQL优化)
转自:http://blog.sina.com.cn/s/blog_6c0541d50102wxen.html 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的 ...
- 8月Meetup | “数据调度+分析引擎”解锁企业数字化转型之路
编辑切换为居中 添加图片注释,不超过 140 字(可选) 大数据是一种规模大到在获取.存储.管理.分析方面大大超出了传统数据库软件工具能力范围的数据集合,而大数据作为企业运转的基础,只有经过提 ...
- 联童科技基于incubator-dolphinscheduler从0到1构建大数据调度平台之路
联童科技是一家智能化母婴童产业平台,从事母婴童行业以及互联网技术多年,拥有丰富的母婴门店运营和系统开发经验,在会员经营和商品经营方面,能够围绕会员需求,深入场景,更贴近合作伙伴和消费者,提供最优服务产 ...
- 重新学习MySQL数据库3:Mysql存储引擎与数据存储原理
重新学习Mysql数据库3:Mysql存储引擎与数据存储原理 数据库的定义 很多开发者在最开始时其实都对数据库有一个比较模糊的认识,觉得数据库就是一堆数据的集合,但是实际却比这复杂的多,数据库领域中有 ...
- [转帖]时序数据库技术体系 – InfluxDB TSM存储引擎之数据读取
时序数据库技术体系 – InfluxDB TSM存储引擎之数据读取 http://hbasefly.com/2018/05/02/timeseries-database-7/ 2018年5月2日 ...
- 火山引擎MARS-APM Plus x 飞书 |降低线上OOM,提高App性能稳定性
通过使用火山引擎MARS-APM Plus的memory graph功能,飞书研发团队有效分析定位问题线上case多达30例,线上OOM率降低到了0.8‰,降幅达到60%.大幅提升了用户体验,为飞书的 ...
- MongoDB 存储引擎和数据模型设计
标签: MongoDB NoSQL MongoDB 存储引擎和数据模型设计 1. 存储引擎 1.1 存储引擎是什么 1.2 MongoDB中的默认存储引擎 2. 数据模型设计 2.1 内嵌和引用 2. ...
- 各种JS模板引擎对比数据(高性能JavaScript模板引擎)
最近做了JS模板引擎测试,拿各个JS模板引擎在不同浏览器上去运行同一程序,下面是模板引擎测试数据:通过测试artTemplate.juicer与doT引擎模板整体性能要有绝对优势: js模板引擎 Ja ...
- seo之google rich-snippets丰富网页摘要结构化数据(微数据)实例代码
seo之google rich-snippets丰富网页摘要结构化数据(微数据)实例代码 网页摘要是搜索引擎搜索结果下的几行字,用户能通过网页摘要迅速了解到网页的大概内容,传统的摘要是纯文字摘要,而结 ...
- C#中使用SendMessage在进程间传递数据的实例
原文:C#中使用SendMessage在进程间传递数据的实例 1 新建解决方案SendMessageExample 在解决方案下面新建三个项目:CopyDataStruct,Receiver和Send ...
随机推荐
- MYSQL-->InnoDB引擎底层原理
逻辑存储结构 逻辑存储结构图 表空间 表空间文件在Linux下存放在 /var/lib/mysql文件中的 xxx.ibd 文件就是表空间文件 表空间文件用来存储,记录,索引等数据. 段 段分为,数据 ...
- 10.MongoDB系列之副本集组成
1. 同步 复制是指多台服务器保持相同的数据副本.MongoDB通过保存操作日志(oplog)实现复制功能. oplog存在于主节点local数据库中的一个固定集合,包含了主节点执行的每一次写操作. ...
- 提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件
Chrome插件,官方名称extensions(扩展程序):为了方便理解,以下都称为插件. 我们开发的插件需要在浏览器里面运行,打开浏览器,通过右上角的三个点(自定义及控制)-更多工具-拓展程序-打开 ...
- 设计一个网上书店,该系统中所有的计算机类图书(ComputerBook)每本都有10%的折扣,所有的语言类图书(LanguageBook)每本都有2元的折扣,小说类图书(NovelBook)每100元
现使用策略模式来设计该系统,绘制类图并编程实现 UML类图 书籍 package com.zheng; public class Book { private double price;// 价格 p ...
- 1.Django-Rest-Framework入门规范
一.WEB应用模式 1.前后端不分离 前后端混合开发(前后端不分离),返回的是html的内容,需要渲染页面,写模版 2.前后端分离 专注于后端接口,返回json.xml格式的数据 二.AP ...
- Nacos基本学习
一.注册中心 1.启动 1.下载nacos 在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码: GitHub主页:https://github.com/ali ...
- 图文详解丨iOS App上架全流程及审核避坑指南
App Store作为苹果官方的应用商店,审核严格周期长一直让用户头疼不已,很多app都"死"在了审核这一关,那我们就要放弃iOS用户了吗?当然不是!本期我们从iOS app上架流 ...
- 来啦来啦|开源 * 安全 * 赋能 - .NET Conf China 2022
大会介绍 .NET Conf China 2022 是面向开发人员的社区峰会,延续 .NET Conf 2022 的活动,庆祝 .NET 7 的发布和回顾过去一年来 .NET 在中国的发展成果,它是由 ...
- 微信支付v3接口的 官方 Java SDK
啰嗦几句:微信支付v3版接口麻烦吗?在对接微信支付v3接口时,本来是一件很简单的事情,其实微信支付v3接口并不是很复杂,但是微信团队的管理很混乱,给我们开发者带来了巨大的麻烦. 微信支付v3版接口对接 ...
- EasyExcel对大数据量表格操作导入导出
前言 最近有个项目里面中有大量的Excel文档导入导出需求,数据量最多的文档有上百万条数据,之前的导入导出都是用apache的POI,于是这次也决定使用POI,结果导入一个四十多万的文档就GG了,内存 ...