哪些指标可以衡量 MapReduce 应用程序的效率?
Which metrics to measure the efficiency of a MapReduce application?
我写了一个 MapReduce 应用程序,它 运行 在 6 个计算机节点上。
我确信我的 MapReduce 算法(运行 在计算机集群上)优于顺序算法(运行 在单台计算机上),但我认为这并不意味着我的 MapReduce 算法足够高效,对吗?
我四处搜索并发现:加速、放大和尺寸 指标。在衡量 MapReduce 应用程序的效率时,我们通常会考虑这些指标吗?有没有我们需要考虑的指标?
非常感谢。
在具体解决您的问题之前,让我们重新审视 map-reduce 模型,看看它试图解决的真正问题是什么。你可以参考这个 answer (我的/当然你可以参考其他相同问题的好答案),以了解 map-reduce 模型。
那么它真正试图解决的问题是什么?它推导出一个 通用 模型,该模型可用于解决需要处理大量数据(通常以 GB 甚至 Peta 字节为单位)的大量问题。这个模型的真正意义在于,它可以轻松并行化,甚至可以轻松分布执行节点。这个article(我的)对整个模型有一些详细的解释。
所以让我们回到你的问题,你问的是基于速度、内存效率和可伸缩性 来衡量映射缩减程序的效率。
说到重点,map-reduce 程序的效率 总是取决于它享受并行度 的程度基础计算能力。这直接表明一个集群上的 map-reduce 程序 运行s 可能不是另一个集群中 运行 的理想程序。因此,如果我们希望将我们的程序构建到精确微调的水平,我们需要对我们的集群有一个很好的了解。但实际上很少有人需要将其调整到那么高的水平。
让我们一一道来:
加速:
这取决于您如何将输入分成不同的部分。这直接推断出并行度(在人为控制下)的数量。因此,正如我上面提到的,加速直接取决于您的拆分逻辑将如何利用您的集群。
内存效率:
这主要取决于您的映射器逻辑和缩减器逻辑的内存效率。
可扩展性:
这主要是出于担忧。您可以看到 map-reduce 模型已经具有高度可扩展性,以至于人们很少会想到多走一英里。
所以总体而言,map reduce 程序的效率 很少被关注(甚至是速度和内存)。实际上,最有价值的指标是其输出的质量。即您的分析数据有多好。 (代替营销、研究等)
我写了一个 MapReduce 应用程序,它 运行 在 6 个计算机节点上。 我确信我的 MapReduce 算法(运行 在计算机集群上)优于顺序算法(运行 在单台计算机上),但我认为这并不意味着我的 MapReduce 算法足够高效,对吗?
我四处搜索并发现:加速、放大和尺寸 指标。在衡量 MapReduce 应用程序的效率时,我们通常会考虑这些指标吗?有没有我们需要考虑的指标?
非常感谢。
在具体解决您的问题之前,让我们重新审视 map-reduce 模型,看看它试图解决的真正问题是什么。你可以参考这个 answer (我的/当然你可以参考其他相同问题的好答案),以了解 map-reduce 模型。
那么它真正试图解决的问题是什么?它推导出一个 通用 模型,该模型可用于解决需要处理大量数据(通常以 GB 甚至 Peta 字节为单位)的大量问题。这个模型的真正意义在于,它可以轻松并行化,甚至可以轻松分布执行节点。这个article(我的)对整个模型有一些详细的解释。
所以让我们回到你的问题,你问的是基于速度、内存效率和可伸缩性 来衡量映射缩减程序的效率。
说到重点,map-reduce 程序的效率 总是取决于它享受并行度 的程度基础计算能力。这直接表明一个集群上的 map-reduce 程序 运行s 可能不是另一个集群中 运行 的理想程序。因此,如果我们希望将我们的程序构建到精确微调的水平,我们需要对我们的集群有一个很好的了解。但实际上很少有人需要将其调整到那么高的水平。
让我们一一道来:
加速: 这取决于您如何将输入分成不同的部分。这直接推断出并行度(在人为控制下)的数量。因此,正如我上面提到的,加速直接取决于您的拆分逻辑将如何利用您的集群。
内存效率: 这主要取决于您的映射器逻辑和缩减器逻辑的内存效率。
可扩展性: 这主要是出于担忧。您可以看到 map-reduce 模型已经具有高度可扩展性,以至于人们很少会想到多走一英里。
所以总体而言,map reduce 程序的效率 很少被关注(甚至是速度和内存)。实际上,最有价值的指标是其输出的质量。即您的分析数据有多好。 (代替营销、研究等)