大数据知识MapReduce运行流程

Posted 大数据观察

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据知识MapReduce运行流程相关的知识,希望对你有一定的参考价值。

大数据观察

了解大数据,关注大数据观察吧!





每个想了解最新大数据资讯的人,都关注了我

文 / 数据君



MapReduce运行流程

以wordcount为例,运行的详细流程图如下


【大数据知识】MapReduce运行流程


1.split阶段

首先mapreduce会根据要运行的大文件来进行split,每个输入分片(input split)针对一个map任务,输入分片(input split)存储的并非数据本身,而是一个分片长度和一个记录数据位置的数组。输入分片(input split)往往和HDFS的block(块)关系很密切,假如我们设定HDFS的块的大小是64MB,我们运行的大文件是64x10M,mapreduce会分为10个map任务,每个map任务都存在于它所要计算的block(块)的DataNode上。


2.map阶段

map阶段就是程序员编写的map函数了,因此map函数效率相对好控制,而且一般map操作都是本地化操作也就是在数据存储节点上进行。本例的map函数如下:

 
  
  1. publicclassWCMapperextendsMapperLongWritable,Text,Text,IntWritable{@Override 

  2. protectedvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException,InterruptedException{ 

  3. Stringstr=value.toString(); 

  4. String[]strs=StringUtils.split(str,'');for(Strings:strs){ 

  5. context.write(newText(s),newIntWritable(1)); 

根据空格切分单词,计数为1,生成key为单词,value为出现1次的map供后续计算。


3.shuffle阶段

shuffle阶段主要负责将map端生成的数据传递给reduce端,因此shuffle分为在map端的过程和在reduce端的执行过程。


先看map端:


【大数据知识】MapReduce运行流程


  1. map首先进行数据结果数据属于哪个partition的判断,其中一个partition对应一个reduce,一般通过key.hash()%reduce个数来实现。

  2. 把map数据写入到Memory Buffer(内存缓冲区),到达80%阀值,开启溢写进磁盘过程,同时进行key排序,如果有combiner步骤,则会对相同的key做归并处理,最终多个溢写文件合并为一个文件。

reduce端:


【大数据知识】MapReduce运行流程


reduce节点从各个map节点拉取存在磁盘上的数据放到Memory Buffer(内存缓冲区),同理将各个map的数据进行合并并存到磁盘,最终磁盘的数据和缓冲区剩下的20%合并传给reduce阶段。


4.reduce阶段

reduce对shuffle阶段传来的数据进行最后的整理合并

 
  
  1. publicclassWCReducerextendsReducerText,IntWritable,Text,IntWritable{@Override 

  2. protectedvoidreduce(Textkey,IterableIntWritablevalues,Contextcontext)throwsIOException,InterruptedException{intsum=0;for(IntWritablei:values){ 

  3. sum+=i.get(); 

  4. context.write(key,newIntWritable(sum)); 

MapReduce的优缺点

优点:

  1. 易于编程;

  2. 良好的扩展性;

  3. 高容错性;

4.适合PB级别以上的大数据的分布式离线批处理。

缺点:

  1. 难以实时计算(MapReduce处理的是存储在本地磁盘上的离线数据)

  2. 不能流式计算(MapReduce设计处理的数据源是静态的)

  3. 难以DAG计算MapReduce这些并行计算大都是基于非循环的数据流模型,也就是说,一次计算过程中,不同计算节点之间保持高度并行,这样的数据流模型使得那些需要反复使用一个特定数据集的迭代算法无法高效地运行。




主题 |大数据技术知识

插图 | 网络来源




作 者 介 绍

数据君:)

了解大数据,关注大数据观察

部分图文来自网络,侵权则删


“嘿,长按二维码,跟我一起有趣”

我想给你一个理由 继续面对这操蛋的生活

以上是关于大数据知识MapReduce运行流程的主要内容,如果未能解决你的问题,请参考以下文章

大数据学习2(MapReduce)

大数据之Hadoop(MapReduce):MapReduce核心思想

Hadoop MapReduce介绍官方示例及执行流程Apache Hadoop概述

2021年大数据Hadoop(二十三):MapReduce的运行机制详解

2021年大数据Hadoop(二十四):MapReduce高阶训练

大数据之Hadoop(MapReduce): MapReduce框架原理