哪些指标可以衡量 MapReduce 应用程序的效率?
Posted
技术标签:
【中文标题】哪些指标可以衡量 MapReduce 应用程序的效率?【英文标题】:Which metrics to measure the efficiency of a MapReduce application? 【发布时间】:2018-09-25 03:15:57 【问题描述】:我编写了一个在 6 个计算机节点上运行的 MapReduce 应用程序。 我确信我的 MapReduce 算法(在计算机集群上运行)优于顺序算法(在单台计算机上运行),但我认为这并不意味着我的 MapReduce 算法足够高效,对吧?
我四处搜索发现:speedup、scaleup 和 sizeup 指标。我们在衡量 MapReduce 应用程序的效率时,是否通常会考虑这些指标?有没有我们需要考虑的指标?
非常感谢。
【问题讨论】:
你想要一个测量工具吗? 不,我想确认这些指标是否通常用于衡量应用程序的效率? 【参考方案1】:在具体解决您的问题之前,让我们重新审视 map-reduce 模型,看看它试图解决的真正问题是什么。你可以参考这个answer(我/当然你可以参考同样问题的其他好的答案),以了解 map-reduce 模型。
那么它真正试图解决的问题是什么?它推导出了一个通用模型,该模型可用于解决需要处理大量数据(通常以 GB 甚至 Peta 字节为单位)的大量问题。而这个模型的真正意义在于,它可以容易并行化,甚至可以容易分布执行在多个节点之间。这个article(我的)对整个模型有一些详细的解释。
那么让我们来回答您的问题,您是在询问基于速度、内存效率和可扩展性来衡量map reduce 程序的效率。
说到重点,map-reduce 程序的效率始终取决于它在多大程度上享有由底层计算提供的并行性 > 力量。这直接表明在一个集群上运行的 map-reduce 程序可能不是在不同集群中运行的理想程序。因此,如果我们希望将程序构建到精确微调的水平,我们需要对我们的集群有一个很好的了解。但实际上很少有人需要把它调到这么高的水平。
让我们一一记下你的观点:
加速: 这取决于您如何将输入拆分为不同的部分。这直接推断出并行度(在人工控制下)。因此,正如我上面提到的,加速直接取决于您的拆分逻辑将如何利用您的集群。
内存效率: 这主要取决于您的映射器逻辑和缩减器逻辑的内存效率。
可扩展性: 这主要是出于担心。您可以看到,map-reduce 模型的可扩展性已经达到了人们很少会考虑多走一英里的程度。
所以总的来说,map reduce 程序的效率很少关注(甚至速度和内存)。实际上,最有价值的指标是其输出的质量。即您的分析数据有多好。 (代替营销、研究等)
【讨论】:
以上是关于哪些指标可以衡量 MapReduce 应用程序的效率?的主要内容,如果未能解决你的问题,请参考以下文章