我编写了一个MapReduce应用程序,该应用程序可以在6个计算机节点上运行。 我确定我的MapReduce算法(在计算机集群上运行)优于顺序算法(在单台计算机上运行),但是我认为这并不意味着我的MapReduce算法足够有效,对吧?
我四处搜索并发现:速度,规模和规模指标。在衡量MapReduce应用程序的效率时,我们通常会考虑这些指标吗?我们需要考虑任何指标吗?
非常感谢您。
答案 0 :(得分:0)
在专门解决您的问题之前,让我们重新审视map-reduce模型,看看它试图解决的真正问题是什么。您可以参考这个answer(我/当然,对于相同的问题,您可以参考其他好的答案),以了解map-reduce模型的想法。
那么它真正试图解决的是什么?它推导了一个通用模型,该模型可用于解决需要处理大量数据(通常以GB甚至Peta Bytes为单位)的大量问题。这个模型真正的优点是,它可以轻松并行化,甚至可以轻松分布执行节点数。 article(由我本人)对整个模型进行了详细的解释。
因此,让我们开始您的问题,您要问的是基于速度,内存效率和可伸缩性来衡量
说到这一点,
让我们一一阐述您的观点:
加速: 这取决于您如何将输入分成不同的部分。这直接推导了并行度(在人为控制下)。因此,如上所述,提速直接取决于拆分逻辑将如何利用群集。
内存效率: 这主要取决于映射器逻辑和化简器逻辑的内存效率。
可扩展性: 这主要是出于关注。您会看到map-reduce模型已经可以高度扩展到一个人们很少会想到的额外里程。
因此,总的来说,地图缩减程序的效率是很少要关注的(甚至速度和内存)。实际上,最有价值的指标是其输出的质量。即您的分析数据有多好。 (代替市场营销,研究等)