下面小编举一个有趣的例子,帮助大家快速理解MapReduce编程模式: 怎样找出一摞牌中有多少红桃? 一般情况下我们是一张一张数出红桃的数量。 但是使用MapReduce的编程方法是:给在座所有的人分配这些牌,让每个人自己数自己手中有几张是红桃,然后把数目汇报给我,这样我把所有玩家的数字结合起来,我就知道到底有多少张红桃。 就就对应了MapReduce的编程里面的两个核心函数:映射和化简。 MapReduce与Google的关系: MapReduce是Google提出的一个软件架构,是一种处理海量数据的并行编程模式,用于大规模数据集(通常大于1TB)的并行运算。“Map(映射)"、“Reduce(化简)”的概念和主要思想,都是从函数式编程语言和矢量编程语言借鉴来的。帝通科技为你解答正是由于MapReduce有函数式和矢量编程语言的共性,使得这种编程模式特别适合于非结构化和结构化的海量数据的搜索、挖掘、分析与机器智能学习等。 产生背景: MapReduce这种并行编程模式思想最早是在1995年提出的,首次提出了“map”和“fold”的概念,和Google现在所使用的“Map"和“Reduce”思想相吻合。 与传统的分布式程序设计相比,MapReduce封装了并行处理、容错处理、本地化计算、负载均衡等细节,还提供了一个简单而强大的接口。通过这个接口,可以把大尺度的计算自动地并发和分布执行,使编程变得非常容易。另外,MapReduce也具有较好的通用性,大量不同的问题都可以简单地通过MapReduce来解决。 据相关统计,每使用一次Google搜索引擎,Google的后台服务器就要进行1011次运算。这么庞大的运算量,如果没有好的负载均衡机制,有些服务器的利用率会很低,有些则会负荷太重,有些甚至可能死机,这些都会影响系统对用户的服务质量。而使用MapReduce这种编程模式,就保持了服务器之间的均衡,提高了整体效率。 小编简单介绍MapReduce的概念,希望也能够帮助你们的理解,最后小编总结一下。其实MapReduce就是一种编程的模式,我们可以用很多语言实现,比如java,C++。他的两大核心函数:map(映射)作用是过滤一些原始的数据,而Reduce(化简)作用是处理这些数据,比如我们如何数出纸牌的数量。 以上内容由帝通科技原创,转载请注明出处:www.ddv.cn
|