火山引擎DataLeap数据调度实例的 DAG 优化方案 :功能设计

Posted 字节跳动数据平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了火山引擎DataLeap数据调度实例的 DAG 优化方案 :功能设计相关的知识,希望对你有一定的参考价值。

针对上面存在的问题以及对需求的分析,我们可以进行如下的功能实现与设计:
首先是渲染方案的替换,将 svg 的渲染方案替换成 canvas 渲染,通过减少页面中 DOM 的数量,提高前端渲染性能。
其次是不同场景的功能设计,通过上面的需求分析,火山引擎DataLeap研发人员设计了不同的功能模式以满足不同的需求。
模式名称
功能
通用模式
分析上游阻塞下游运行的原因、查看上游最晚完成的实例
统计模式
对依赖当前实例的所有下游进行分组查看
链路模式
分析两个实例之间的链路关系
在通用模式中,用户关注的是节点上下游的关系,在复杂链路中快速找到阻塞节点,同时关注阻塞节点的信息
针对复杂链路,火山引擎DataLeap研发人员设计了多种优化形式:
首先,在同一层的节点超过一定的数量(可自定义)后,所有节点将聚合在一起,火山引擎DataLeap研发人员称之为聚合节点。这种优化下,可以解决上面提到的由于同一层级节点过多,查找特定状态节点不便的问题。也支持点击聚合详情,通过列表的形式,查看所有被聚合的节点。并支持筛选,快速查找到关注的节点并通过展开,恢复与当前节点的依赖关系。
其次,以用户最关注的实例状态,对被聚合的节点进行分类,同时新增快捷展开操作。以下图为例,当前实例处于等待上游依赖完成状态,在这种情况下,用户关注的,则是上游没有开始执行的节点。在聚合节点中,可以清晰地看到存在一个实例,是在等待执行的,点击数字1,即可快速展开实例。
在这个例子中,就将不需要关注的上游成功节点隐藏在列表中,突出图所需要关注的重点信息。
同时,为了降低节点展示过多导致图显示杂乱的情况,新增了收起功能及跳转功能。
收起功能是指在通过在聚合节点展开的节点的情况,或是在直接展开上 / 下游的情况下,都支持对某个上游 / 下游节点的整条链路收起,方便用户在浏览完一条链路后,恢复图之前的状态,继续浏览下一条链路,减少对后续分析的干扰。
跳转功能是在查看当前节点的上游的其他下游,或是下游的其他上游,此时,用户关注的节点已经转化为其他的上游 / 下游节点。所以,通过跳转新页面的形式,将需要关注的不同节点的上 / 下游信息区分开,减少在一张图中展示所有信息。
并且由于图中的节点承载信息的能力有限,在通过点击节点时,会在下方出现与选中实例相关信息,包括属性,日志等,协助用户运维任务。
 
  在统计模式中,用户关注的是依赖当前节点的下游节点,下游节点则可以分成直接下游和所有下游。所以火山引擎DataLeap研发人员设计了分层模式和合并模式,在这两种模式下,可以按照任务的属性(任务类型 / 实例状态 / 责任人等)作为分组维度。
  分层模式:
  合并模式:
 
 
  所谓链路模式即指定上游节点,一键展示指定节点与当前节点的链路信息,从而进行精准链路分析。

数据丢失不用怕,火山引擎 DataLeap 提供排查解决方案

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群

 当一家公司的日均处理的数据流量在 PB 级别时,巨大的任务量和数据量会对消息队列(MQ)dump 的稳定性和准确定带来极大的挑战。

针对这一问题,火山引擎数智平台推出的大数据研发治理套件 DataLeap,可以为企业提供完整解决方案,帮助解决 MQ dump 在极端场景中遇到的数据丢失问题。

例如,当 HDFS(一种分布式文件系统)集群某个元数据节点由于硬件故障而宕机。那么在该元数据节点终止半小时后,运维工程师虽然可以通过手动运维操作将 HDFS 切到主 backup 节点,使得 HDFS 恢复服务。但故障恢复后, MQ dump 在故障期间可能有数据丢失,产出的数据与 MQ 中的数据不一致的情况。

此时,技术人员可以在收到数据不一致的反馈后,立即借助火山引擎 DataLeap 进行故障排查。

目前,火山引擎 DataLeap 基于开源 Flink,已经实现了流批一体的数据集成服务。通过 Flink Checkpoint 的功能,Flink 在数据流中注入 barriers 将数据拆分为一段一段的数据,在不终止数据流处理的前提下,让每个节点可以独立创建 Checkpoint 保存自己的快照。

每个 barrier 都有一个快照 ID ,在该快照 ID 之前的数据都会进入这个快照,而之后的数据会进入下一个快照。

 

在排查过程中,火山引擎 DataLeap 基于对 Flink 日志查看以及 HDFS 元数据查看,可以率先定位症结所在:删除操作的重复执行造成数据丢失。进一步解释就是,在故障期间,写入数据前的删除操作在 HDFS NameNode 上重复执行,将写入的数据删除造成最终数据的丢失。

溯源后,用户可以通过火山引擎 DataLeap 选择使用文件 State(当前的 Checkpoint id 和 task id)解决该问题,使用文件 State 前后处理流程对比如下图所示:

 

 

使用文件 State 后,在 Notify 阶段与 HDFS 交互的 metrics(打点监控系统)的平均处理时间减少了一半。

目前,企业均可以通过火山引擎 DataLeap 体验到上述 Flink Checkpoint 实践与优化方案,提升数据价值交付中的效率和质量。

 

点击跳转 大数据研发治理DataLeap 了解更多

以上是关于火山引擎DataLeap数据调度实例的 DAG 优化方案 :功能设计的主要内容,如果未能解决你的问题,请参考以下文章

火山引擎DataLeap联合DataFun发布《数据治理知识地图》

火山引擎DataLeap:3个关键步骤,复制字节跳动一站式数据治理经验

数据丢失不用怕,火山引擎 DataLeap 提供排查解决方案

火山引擎 DataLeap 通过中国信通院测评,数据管理能力获官方认可!

直播预告 | 企业如何轻松完成数据治理?火山引擎 DataLeap 给你一份实战攻略!

火山引擎 DataLeap:在数据研发中,如何提升效率?