开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

DAG 2.0 具有哪些关键技术?

已解决

DAG 2.0 具有哪些关键技术?

展开
收起
游客lmkkns5ck6auu 2022-08-10 14:28:22 489 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    ·完善的错误处理能力:在分布式环境中由于机器数量巨大,单机发生故障的概率非常高,因此容错能力是调度系统的一个重要能力。为了更好的管理机器状态,提前发现故障机器并进行主动规避,DAG 2.0 通过完整的机器状态管理,完善了机器错误的处理能力DAG 2.0 将机器分为多个状态。并根据一系列不同的指标来触发在不 同状态之间的转换。对于不同状态的机器,根据其健康程度,进行主动规避,计算任务迁移,以及计算任务主动重跑等操作。将机器问题造成的作业运行时间拉长,甚至作业失败的可能性降到最低。

    另一方面,在一个 DAG 上,当下游读取数据失败时,需要触发上游的重跑,而在发生严重机器问题时,多个任务的链式重跑,会造成作业的长时间延迟,对于基线作业的及时产出造成严重影响。DAG 2.0 上实现了一套基于血缘回溯的主动容错策略,这样的智能血缘回溯,能够避免了层层试探,层层重跑,在集群压力较大时,能够有效的节约运行时间,避免资源浪费。
    ·灵活的动态逻辑图执行策略--Conditional join分布式 SQL 中,map join 是一个比较常见的优化,其实现原理对小表避免 shuffle,而是直接将其全量数据 broadcast 到每个处理大表的分布式计算节点上,通过在内存中直接建立 hash 表,完成 join 操作。map join 优化能大量减少额外 shuffle和排序开销并避免 shuffle 过程中可能出现的数据倾斜,提升作业运行性能。但是其局限性也同样显著:如果小表无法 fit 进单机内存,那么在试图建立内存中的hash表时就会因为 OOM 而导致整个分布式作业的失败。所以虽然 map join 在正确使用时,可以带来较大的性能提升,但实际上优化器在产生 map join 的 plan 时需要偏保守,导致错失了很多优化机会。而即便是如此,依然没有办法完全避免 map join OOM 的问题。

    基于DAG 2.0 的动态逻辑图执行能力,MaxCompute 支持了 conditional join 功能:在对于 join 使用的算法无法被事先确定时,允许优化器提供一个 conditional DAG,这样的 DAG 同时包括使用两种不同 join 的方式对应的不同执行计划支路。在实际执行时,AM 根据上游产出数据量,动态选择一条支路执行 (plan A or plan B)。这样子的动态逻辑图执行流程,能够保证每次作业运行时都能根据实际作业数据特性,选择最优的执行计划。

    以上内容摘自《“伏羲”神算》电子书,点击https://developer.aliyun.com/topic/download?id=873

    2022-08-11 10:59:08
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关电子书

更多
FLASH:大规模分布式图计算引擎及应用 立即下载
基于streaming构建统一的数据处理引擎的挑战与实践 立即下载
分布式流处理框架——功能对比和性能评估 立即下载