一丶Cube的构建算法
逐层构建算法:
说明:我们知道,在逐层算法中,按维度层数减少来计算,每一层级的计算,是基于他上一层级的结果来计算的,每一轮的计算都是一个 MapReduce 任务,且串行执行;一个 N 维的Cube,至少需要 N 次 MapReduce Job。
图解:
优点:
- 此算法充分利用了 MapReduce 的优点,处理了中间复杂的排序和 shuffle 工作,故 而算法代码清晰简单,易于维护;
- 受益于 Hadoop 的日趋成熟,此算法非常稳定,即便是集群资源紧张时,也能保证 最终能够完成
缺点:
- MapReduce 任务过多,耗费集群的资源
- Map中,没有进行聚合操作,shuffle压力过大,效率会降低
快速构建算法:
图解:
与逐层构建算法来比:
- Mapper 会
利用内存做预聚合,算出所有组合
;Mapper 输出的每个 Key 都是不同的, 这样会减少输出到 Hadoop MapReduce