课程提要 口分布式并行编程 □ Mapreduce模型概述 口Map和 Reduce函数 口 Mapreduce工作流程 口并行计算的实现 口实例分析: Word Count 《大数据技术基础》
《大数据技术基础》 课程提要 分布式并行编程 MapReduce模型概述 Map和Reduce函数 MapReduce工作流程 并行计算的实现 实例分析:WordCount
MapReduce工作流程概述 下图说明了用 MapReduce来处理大数据集的过程,就是将大数据集 分解为成百上千的小数据集,每个(或若干个)数据集分别由集群中的 个结点(一般就是一台普通的计算机)进行处理并生成中间结果,然 后这些中间结果又由大量的结点进行合并,形成最终结果。 输入 Map任务 Reduce任务 输出 分片0 mapo 分片1 map 00 reduce ) 输出0 分片2 m reduce o 输出1 分片3 mapo reduce 输出2 分片4 mapo 《大数据技术基础》
《大数据技术基础》 MapReduce工作流程概述 • 下图说明了用MapReduce来处理大数据集的过程,就是将大数据集 分解为成百上千的小数据集,每个(或若干个)数据集分别由集群中的 一个结点(一般就是一台普通的计算机)进行处理并生成中间结果,然 后这些中间结果又由大量的结点进行合并,形成最终结果
MapReduce工作流程概述 Mapreduce的输入一般来自HDFS中的文件,这些文件分布存储在集 群内的节点上。运行一个 MapReduce程序会在集群的许多节点甚至 所有节点上运行 mapping任务,任意的 mapper都可以处理任意的输入 文件。 ·当 mapping阶段完成后,这阶段所生成的中间键值对数据必须在节点 间进行交换,把具有相同键的数值发送到同一个 reducer。 Reduce任 务在集群内的分布节点同 mappers的一样。这是 Mapreduce中唯一的 任务节点间的通信过程 所有数据传送都是由 Hadoop Mapreduce平台自身去做的,是通过关 联到数值上的不同键来隐式引导的。这是 Hadoop Mapreduce的可靠 性的基础元素。如果集群中的节点失效了,任务必须可以被重新启动 《大数据技术基础》
《大数据技术基础》 MapReduce工作流程概述 • MapReduce的输入一般来自HDFS中的文件,这些文件分布存储在集 群内的节点上。运行一个MapReduce程序会在集群的许多节点甚至 所有节点上运行mapping任务,任意的mapper都可以处理任意的输入 文件。 • 当mapping阶段完成后,这阶段所生成的中间键值对数据必须在节点 间进行交换,把具有相同键的数值发送到同一个reducer。Reduce任 务在集群内的分布节点同mappers的一样。这是MapReduce中唯一的 任务节点间的通信过程。 • 所有数据传送都是由Hadoop MapReduce平台自身去做的,是通过关 联到数值上的不同键来隐式引导的。这是Hadoop MapReduce的可靠 性的基础元素。如果集群中的节点失效了,任务必须可以被重新启动
Mapreduce各个执行阶段 般而言, Hadoop的一个简单的 MapReduce任务执行流程如下 l) Job tracker负责分布式环境中实现客户端创建任务并提交。 2) InputFormat模块负责做Map前的预处理。 3)将 RecordReader处理后的结果作为Map的输入,然后Map执行定义 的Map逻辑,输出处理后的( key, value)对到临时中间文件 4) Shuffled& Partitioner:在 Mapreduce流程中,为了让 reduce可以并行 处理map结果,必须对map的输出进行一定的排序和分割,然后再 交给对应的 reduce。这个将map输出进行进一步整理并交给 reduce 的过程,就称为 shuffle. partitioner是选择配置,主要作用是在多个 Reduce的情况下,指定Map的结果由某一个 Reduce处理,每一个 Reduce都会有单独的输出文件, 5) Reduce执行具体的业务逻辑,即处理数据以得到结果的业务,并且 将处理结果输出给 OutputFormat 6) OutputFormat的作用是,验证输出目录是否已经存在和输出结果类 型是否符合 Config中配置类型,若成立则输出 Reduce汇总后的结果 《大数据技术基础》
《大数据技术基础》 MapReduce各个执行阶段 • 1) 2) 3) 一般而言,Hadoop的一个简单的MapReduce任务执行流程如下: JobTracker负责分布式环境中实现客户端创建任务并提交。 InputFormat模块负责做Map前的预处理。 将RecordReader处理后的结果作为Map的输入,然后Map执行定义 的Map逻辑,输出处理后的(key,value)对到临时中间文件。 4) Shuffle&Partitioner:在MapReduce流程中,为了让reduce可以并行 处理map结果,必须对map的输出进行一定的排序和分割,然后再 交给对应的reduce。这个将map输出进行进一步整理并交给reduce 的过程,就称为shuffle。Partitioner是选择配置,主要作用是在多个 Reduce的情况下,指定Map的结果由某一个Reduce处理,每一个 Reduce都会有单独的输出文件。 5) Reduce执行具体的业务逻辑,即处理数据以得到结果的业务,并且 将处理结果输出给OutputFormat。 6) OutputFormat的作用是,验证输出目录是否已经存在和输出结果类 型是否符合Config中配置类型,若成立则输出Reduce汇总后的结果
mapReduce执行阶段 节点 节点2 从分布式文件系统中加载文件 从分布式文件系统中加载文件 InputFormat 文件 文件 输入CRF RR RR RR RR」输入 MapMapMap 中间结果 中间结果 ckey value> Shuffle <key, value-list> Reduce 最终结果 最终结果 <key, value> 1写入到分布 Output Format OutputFormat式文件系统 (如 JHDES) -<如HDFS----
《大数据技术基础》 MapReduce执行阶段