MapReduce模式、算法和用例

openkk 12年前
     <div id="news_body">     <p> 随着 Hadoop 和大数据应用的爆发式增长,很多人正在寻找将他们已有的实现转为 MapReduce 方式的方法。不幸的是,除了<a href="/misc/goto?guid=4958329476412732483">《应用 MapReduce 进行数据密集的文本处理》</a>和<a href="http://www.amazon.com/Mahout-Action-Sean-Owen/dp/1935182684/ref=sr_1_1?s=books&ie=UTF8&qid=1327246973&sr=1-1">《Mahout in Action》</a>几本有名书籍之外,很少有关设计 MapReduce 实现的出版物。在新文章<a href="http://www.open-open.com/lib/view/open1330094286171.html">“MapReduce 模式、算法和用例”</a>中,Ilya Katsov 提供了一个系统化的综述,阐述了能够应用 MapReduce 框架解决的问题。</p>     <p> 文章开始描述了一个非常简单的、作为通用的并行计算框架的 MapReduce 应用,这个框架适用于很多要求大量节点进行的计算和数据密集型计算,包括物理和工程仿真,数值分析,性能测试等等。接下来是一组算法,通常用于日志分析、 ETL 和数据查询,包括计数及求和,数据整理(基于特定函数),过滤,解析,验证和排序。</p>     <p> 第二大部分是关于 MapReduce 模式,Katsov 讨论了包括多关系形 MapReduce 模式,通常用于数据仓库应用程序。这些模式在 Hive 和 Pig 实现中广泛使用,并包括基于推断/函数的数据选择,数据预测、数据联合、差分、交集和分组等聚集计算。另一个讨论是关于实现数据关联和包含等算法,例如 repartition join 和重复联合。</p>     <p> 更进一步,这篇文章讨论了更为复杂的 MapReduce 处理算法,包括图处理、搜索算法(广度优先搜索)、page rank 数据集合算法,这些算法应用于图分析、web 索引和通用搜索应用。文章也涵盖了常见的、需要互相关计算的文本分析和市场分析的用例。这部分包含了”pairs“和”stripes”设计模式和它们的相对优劣。</p>     <p> 最后,Katsov 给出了一个在机器学习领域实现更复杂 MapReduce 的很好的参考书目。</p>     <p> 文中描述的大多数算法都有伪代码描述及它们的适用性,优势、劣势和一些真实的用例。</p>     <p> 如今很多人仍面临应用 Hadoop 和 MapReduce 解决业务问题的困扰。有些人仍然认为 MapReduce 是“搜索业务问题领域的技术手段”。这篇文章是填补 MapReduce 算法、用例和设计模式空缺的重要一步。它展示了 MapReduce 强大的力量,而不仅仅是用那个声名狼藉的“词语计数”例子,并显示了 MapReduce 可以解决众多实际问题的方式。</p>     <div id="come_from">      来自:      <a id="link_source2" href="/misc/goto?guid=4958329478027683811" target="_blank">InfoQ</a>     </div>    </div>