浅析大数据分析中对MapReduce的理解

说起MapReduce,可以从思想、模型和运算及应用过程等几个方面来进行理解。首先,来简单说说它的思想。MapReduce可以说是凝结了人类对数据处理工作的基本思想,即分类与汇总。我们都知道,MapReduce其实分为两个阶段,即map阶段和reduce阶段。map阶段即映射阶段,该阶段主要负责对数据进行切分处理,reduce阶段即归约阶段,也就是在map阶段的处理结果上进行汇总。我们可以把它定位成一种用于大规模数据集并行运算的编程(算法)模型。
在实际应用中,MapReduce是Hadoop框架集群的核心之一,在HDFS的基础上对海量数据进行运算。先来分别看一下map和reduce的详细运算过程。

Map过程:

 

@Override  
   public void map(KEYIN key,VALUEIN value,Context context)    
           throws IOException,InterruptedException{      
      System.out.println("进入Map");  
      context.write(KEYOUT, VALUEOUT);  
   }   


这里KEYIN,VALUEIN就是在RecordReader中生成的Key和Value;这里KEYOUT,VALUEOUT就是map的输出。之后,Map的输出到Reduce的输入中间经过了一个复杂的过程:map的每个输出都会先写入缓存(buffer in memory,默认100MB,可以在job提交前通过io.sort.mb修改),该100MB的缓存有个阈值80MB(默认0.8)。注意,这里引入了第三个类Partition。

Reduce过程:
在map过程中强调数据在本地计算,即优先数据在哪就把map任务分配到哪。而reducer是需要从所有map的输出文件中把属于自己的copy过来,所以会占用网络带宽。从不同task tracker拿到的文件也是先写入buffer(原理同map的写入buffer),当buffer中的数据达到阈值,就写入磁盘。存数据的过程叫merge,merge过程可以发生在:
(1)内存到内存的merge。默认关闭,如果开启表示最后如果内存有数据,不会先全部写入磁盘再回头跟磁盘上的其它数据一起merge,而是直接在内存中merge,再与磁盘中的其它数据merge。
(2)内存到磁盘的merge。与map端的spill类似。
(3)磁盘到磁盘的merge。最后将所有(2)之后的文件进行最终merge,注意(1)的情况。
之后开始reduce的过程,即merge的最终输出是reduce的输入,reduce的输出默认是输出到HDFS上。输出格式由OutputFormat类确定。

在这里需要提及的是Yarn并不是MapReduce的替代者,它只是作为一种计算框架的资源管理系统而存在,所以在理解MapReduce的过程中,也应该了解其与Yarn的关系。尚学堂陈老师指出Yarn的存在有时会对MapReduce存在的问题进行一些补充:
1. Job Tracker存在单点故障;
2. Job Tracker完成太多任务,当MR任务非常多时,造成很大的内存开销;
3.Task Tracker端,如果两个大内存消耗的任务一起调度,容易出现OOM,如果只有Map任务或Reduce任务时会造成资源浪费。
那么Yarn的机制与MapReduce相比有哪些优势呢? 首先旧的MapReduce主要包括Job Tracker和Task Tracker,Yarn中主要是三个组件:Resource Manager、Node Manager和Application Master。Resource Manager负责全局资源分配,Application Master每个节点一个,负责当前节点的调度和协调。Node Manager是每台机器的代理,监控应用程序的资源使用情况,并汇报给Resource Manager。因此与MapReduce相比,Yarn把资源管理与任务调度的工作分离开来,减少了MapReduce中Job Tracker的压力。
从上面的讲述中不难看出,相对于MapReduce,Yarn也有其自身的优势: 
1.Yarn大大减少了Job Tracker的资源消耗,并且让监测每个Job子任务状态的程序分布式化了;
2.YARN中Application Master是一个可变更部分,用户可以对不同编程模型编写自己的AppMst,让更多类型的编程模型能跑在Hadoop集群中;
3.在旧的框架里,Job Tracker一个很大的负担就是监控Job下任务的运行状况,现在由Application Master去做,而Resource Manager是监测Application Master的运行状况,如果出问题,会将其在其他机器上重启。
 

转载于:https://my.oschina.net/u/3628059/blog/1632281

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值