MapReduce是什么

这篇文章主要介绍“MapReduce是什么”,在日常操作中,相信很多人在MapReduce是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MapReduce是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

10年积累的做网站、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先制作网站后付款的网站建设流程,更有播州免费网站建设让你可以放心的选择与我们合作。

1 map函数的输出先由MapReduce框架处理,然后再被发送到reduce函数。这一处过程根据键来对键/值对进行排序和分组。

2 整个数据流的例子如图2-1所示。在图的底部是Unix的管道,模拟整个MapReduce的流程。

MapReduce是什么

                         MapReduce是什么 

图2-2 MapReduce中单一reduce任务的数据流图

10 reduce任务的数目并不是由输入的大小来决定,而是单独具体指定的。 如果有多个reducer,map任务会对其输出进行分区,为每个reduce任务创建一个分区(partition)。每个分区包含许多键(及其关联的值),但每个键的记录都在同一个分区中。分区可以通过用户定义的partitioner来控制,但通常是用默认的分区工具,它使用的是hash函数来形成"木桶"键/值,这种方法效率很高。 

      一般情况下,多个reduce任务的数据流如图2-3所示。此图清楚地表明了map和reduce任务之间的数据流为什么要称为"shuffle"(洗牌),因为每个reduce任务的输入都由许多map任务来提供。shuffle其实比此图所显示的更复杂,并且调整它可能会对作业的执行时间产生很大的影响。

MapReduce是什么

图 2-3 多个reduce任务的MapReduce数据流

11 有可能不存在reduce任务,不需要shuffle的时候,这样的情况是可能的,因为处理可以并行进行。在这种情况下,唯一的非本地节点数据传输是当map任务写入到HDFS中(见图2-4)。

MapReduce是什么

图 2-4 MapReduce中没有reduce任务的数据流

12 在集群上MapReduce作业的数量被可用带宽限制,因此要保证map和reduce任务之间传输的代价是最小的。Hadoop允许用户声明一个combiner,运行在map的输出上-- 该函数的输出作为reduce函数的输入。由于combiner是一个优化方法,所以Hadoop不保证对于某个map的输出记录是否调用该方法,调用该方法多少次。换言之,不调用该方法或者调用该方法多次,reducer的输出结果都一样。

       combiner的规则限制着可用的函数类型。Hadoop权威指南中举了一个求最高气温和平均气温的例子,很好的说明了这点。求最高气温就可以使用,求平均气温使用可能出错。因此combiner并不能取代reduce函数。虽然它可以帮助减少map和reduce之间的数据传输量,但是是否在MapReduce作业中使用combiner是需要慎重考虑的。

13 Hadoop提供了一个API来运行MapReduce,并允许你用除java以外的语言来编写自己的map和reduce函数。Hadoop流使用Unix标准流作为Hadoop和程序之间的接口,所以可以使用任何语言,只要编写的MapReduce程序能够读取标准输入,并写入到标准输出。 流适用于文字处理,在文本模式下使用时,它有一个面向行的数据视图。

到此,关于“MapReduce是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


文章题目:MapReduce是什么
文章URL:http://ybzwz.com/article/piceoe.html