《Hadoop MapReduce性能优化》一1.1 MapReduce模型

简介:

本节书摘来异步社区《Hadoop MapReduce性能优化》一书中的第1章,第1.1节,作者: 【法】Khaled Tannir 译者: 范欢动 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.1 MapReduce模型

Hadoop MapReduce性能优化
MapReduce编程模型的设计目标是,使用普通硬件的大型集群处理非结构化数据并产生大规模数据集。它能够在数千个计算节点的集群上处理TB级的数据,进行故障处理,完成任务复制并聚合最终结果。

MapReduce模型简单易懂。它是由Google研究院的工程师在21世纪初设计的(http://research.google.com/archive/mapreduce.html)。这一模型包含两个可以在多台机器上并行执行的函数:一个map函数和一个reduce函数。

要使用MapReduce,程序员需要编写一个用户定义的map函数和一个(同样是用户定义的)reduce函数来表示期望的计算逻辑。map函数读取键值对,执行用户指定的代码,产生中间结果。然后,通过reduce函数的用户指定代码聚合中间结果并输出最终结果。

MapReduce应用程序的输入按照每个输入规约加入到记录中,每个输入规约产生多个键值对,每个键值对以<k1, v1>形式表述。

因此,MapReduce处理过程包含以下两个主要环节。

  • map():对所有输入记录逐条执行用户定义的map函数,每条记录产生零到多个中间键值对,也就是<k2,v2>记录。然后所有的<k2,v2>记录都放到<k2,list(v2)>记录中。
  • reduce():按照键的不同,对每个map输出的<k2, list(v2)>记录调用一次用户定义的reduce函数;对于每条记录,reduce函数输出零到多个<k2, v3>对。所有的<k2, v3>对最后合并为最终结果。

.tifmap和reduce的函数签名如下:

  • map(<k1, v1>) list(<k2, v2>)
  • reduce(<k2, list(v2)>) <k2, v3>

MapReduce编程模型的设计独立于存储系统。MapReduce通过reader从底层存储系统读取键值对。reader从存储系统读取所有记录,并封装成键值对供后续处理。用户可以通过实现相应的reader增加对新存储系统的支持。这种存储独立的设计使MapReduce能够分析保存在不同存储系统中的数据,为异构系统带来了极大便利。

为了理解MapReduce编程模型,我们假设你需要从给定的输入文件中获得每一个单词出现的次数。将其转化成为MapReduce作业,单词计数作业通过以下几个步骤定义。

  1. 输入数据拆分成记录。
  2. map函数处理上述记录,并对每个单词生成键值对。
  3. 合并map函数输出的所有键值对,并根据键分组、排序。
  4. 将中间结果发送给reduce函数,由reduce函数产生最终输出。

这个MapReduce应用的完整步骤如图1-1所示。


1

进行键值对的聚合操作时,会产生的大量I/O以及网络流量I/O。为了压缩map和reduce步骤间需要的I/O网络流量,程序员可以选择在map一侧进行预聚合,而预聚合通过提供Combiner函数完成。Combiner函数与reduce函数类似,其不同之处在于,前者并不传递给定键的所有值,而是把传递进来的输入值之和作为输出值传递出去。

相关文章
|
4月前
|
分布式计算 Hadoop
Hadoop系列 mapreduce 原理分析
Hadoop系列 mapreduce 原理分析
38 1
|
4月前
|
存储 分布式计算 负载均衡
【大数据技术Hadoop+Spark】MapReduce概要、思想、编程模型组件、工作原理详解(超详细)
【大数据技术Hadoop+Spark】MapReduce概要、思想、编程模型组件、工作原理详解(超详细)
59 0
|
6天前
|
机器学习/深度学习 分布式计算 监控
面经:MapReduce编程模型与优化策略详解
【4月更文挑战第10天】本文是关于MapReduce在大数据处理中的关键作用的博客摘要。作者分享了面试经验,强调了MapReduce的基本原理、Hadoop API、优化策略和应用场景。MapReduce包含Map和Reduce两个主要阶段,Map阶段处理输入数据生成中间键值对,Reduce阶段进行聚合计算。面试重点包括理解MapReduce工作流程、使用Hadoop API编写Map/Reduce函数、选择优化策略(如分区、Combiner和序列化)以及应用场景,如日志分析和机器学习。
18 2
|
3月前
|
存储 分布式计算 监控
Hadoop的JobTracker和TaskTracker在MapReduce中的作用是什么?
Hadoop的JobTracker和TaskTracker在MapReduce中的作用是什么?
49 0
|
4月前
|
存储 SQL 分布式计算
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
254 0
|
4月前
|
存储 分布式计算 资源调度
干翻Hadoop系列文章【03】:MapReduce概念详解
干翻Hadoop系列文章【03】:MapReduce概念详解
|
4月前
|
存储 分布式计算 搜索推荐
【大数据技术Hadoop+Spark】MapReduce之单词计数和倒排索引实战(附源码和数据集 超详细)
【大数据技术Hadoop+Spark】MapReduce之单词计数和倒排索引实战(附源码和数据集 超详细)
46 0
|
7月前
|
分布式计算 Hadoop 大数据
Hadoop学习:深入解析MapReduce的大数据魔力之数据压缩(四)
Hadoop学习:深入解析MapReduce的大数据魔力之数据压缩(四)
|
7月前
|
分布式计算 Hadoop 大数据
Hadoop学习:深入解析MapReduce的大数据魔力(三)
Hadoop学习:深入解析MapReduce的大数据魔力(三)
|
7月前
|
SQL 分布式计算 并行计算
Hadoop学习笔记(三)之MapReduce
Hadoop学习笔记(三)之MapReduce

热门文章

最新文章