【博学谷学习记录】超强总结,用心分享| MapReduce基础学习

1.MapReduce思想

1、MapReduce会将一个大的计算任务进行拆分,拆分成小任务,让这些小任务在不同的计算机中进行处理,最后再将这些小任务的结果记性整体汇总

2、MapReduce分为两个阶段,一个Map阶段负责任务的拆分,一个是Reduce阶段,负责任务的汇总

3、整个MapReduce工作流程可以分为3个阶段:map、shuffle、reduce。

2.MapReduce的shuffle阶段

2.1 分区

1、分区就是分文件,本质是将不同的键值对,最后输出的不同的文件中,理解为将数据进行拆分
2、实现的方式是;在Map阶段对k2打标记,标记相同的数据就会分到同一个分区,同一个分区的数据会被同一个redue拉取
if(id % 2 == 0){
   return 0;
}else{ 
  return 1;
}
3、如果设置了分区则会有多个文件输出,则需要有多个reduce,相同标记的K2数据会被同一个reduce
处理,多个reduce就会产生多个结果文件

4、partition原来就是map结束之后根据key值不同,自定义打个标签。然后再由不同的reducer拉一下。

2.2 排序

概述:

1、MapReduce中只能根据K2进行排序
2、如果想按照某个字段排序,则应该把这个字段包含在K2中

注意要点:

1、如果在MR中自定义Java类,则MR对该类有以下要求
  1) 要求该类必须能够被序列号 : 实现接口 Writable
  2) 如果该类作为K2,则要求该类必须指定排序规则,被排序: 实现WritableComparable接口
2、Writable和WritableComparable关系
  public interface WritableComparable<T> extends Writable, Comparable<T> {}

2.3 规约

1、规约(Combiner)是MapReduce中的优化手段,将每一个Map的数据进行提前的聚合,减少Map端和Reduce端网络传输的数据量
2、规约可以理解为Reduce的逻辑在每一个Map端先执行一遍

3、Reduce是对所有的Map的数据进行汇总,而规约是对每一个Map的结果进行汇总

4、Combiner只是一种优化手段,不能改变最终的执行结果

2.4 分组 

1、分组的作用就是去K2进行去重,然后相同K2的V2存入集合
hello 1
hello 1    -----分组--------> hello [1,1,1]  ----reduceTask----> hello 3
hello 1

2、MR默认的分组是根据K2来决定的,相同K2的数据会被分到同一组

3、当默认的分组,不满足我们的需求时,我们可以使用自定义分组

4、当我们没有指定分组规则时,系统默认调用K2类中的compareTo方法,如果我们自定义了分组规则,则就按照我们的方式来实现分组

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值