-
目前内部MaxCompute集群上有200多万个任务,每天存储资源、计算资源消耗都很大。如何降低资源的消耗,提高任务执行的性能,提升任务产出时间,是计算平台和ETL开发工程师孜孜追求的目标;
一、系统优化
-
Hadoop等分布式计算系统评估资源的方式,一般是根据输入数据量静态评估,Map任务用于处理输入,对于普通的Map任务,评估一般符合预期;
-
而对于Reduce任务,其输入来自于Map的输出,到那时一般只能根据Map任务的输入进行评估,经常和实际需要的资源数相差很大,所以在任务稳定的情况下,可以考虑给予任务的历史执行情况进行资源评估,即采用HBO(History-Based Optimizer,基于历史的优化器);
-
提到CBO(Cost-Based Optimizer,基于代价的优化器),首先会想到Oracle的CBO。Oracle会收到的表、分区、索引等统计信息来计算每种执行方式的代价(Cost),进而选择其中最优的执行方式;
-
HBO
-
-
HBO是根据任务历史执行情况为任务分配更合理的资源,包括内存、CPU以及Instance个数。
-
HBO是对集群资源分配的一种优化,概括起来就是:任务执行历史 + 集群状态信息 + 优化规则 -> 更优的执行配置;
-
1.背景
-
-
MaxCompute原资源分配策略
-
-
在默认的实例算法下,小任务存在浪费资源,而大任务却资源不足;
-
-
HBO的提出
-
-
通过数据分析,发现在系统中存在大量的周期性调度的脚本(物理计划稳定),且这些脚本的输入
-
-
-