MapReduce[博学谷IT技术支持]

MapReduce是什么

        1.MapReduce是分布式计算的鼻祖,通过它可以更容易去理解分布式计算的思想和架构。

        2.HiveSql的底层用的就是MapReduce

        3.很多分布式计算引擎都借鉴了MapReduce

大数据计算引擎的发展

第一代: MapReduce                        IO硬盘+网络
第二代: Tez                              IO硬盘+网络+DAG
第三代: Spark                            内存+网络+DAG
第四代: Flink                            内存

MapReduce的思想

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

        2.MapReduce分为两个阶段,一个map阶段负责任务拆分,一个reduce阶段负责任务汇总

        3.整个MapReduce的流程可以分为三个阶段,map/shuffle/reduce

MapReduce编程 

hadoop jar jar包.jar 主类

hadoop jar moudle03_mapreduce-1.0-SNAPSHOT.jar pack01_wordcount_base.WordCountDriver


#hadoop jar moudle03_mapreduce-1.0-SNAPSHOT.jar 

#hadoop jar moudle03_mapreduce-1.0-SNAPSHOT.jar /input  /output/wordcount

MapReduce的shuffle阶段

         分区 

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

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

排序

        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> {}

Combiner(规约)      

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

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

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

规约的实现步骤:
    1、自定义类继承Reducer类
    2、重写reduce方法,在该方法中实现规约
    3、在主类中设置规约类
          job.setCombinerClass(CustomCombiner.class)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值