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方法,如果我们自定义了分组规则,则就按照我们的方式来实现分组

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

  1. [博学谷学习记录]超强总结,用心分享|第07节 常用的API-----笔记篇

    目录 1.API 1.1 API概述-帮助文档的使用 1.2 键盘录入字符串 2. String类 2.1 String概述 2.2 String类的构造方法 2.4 创建字符串对象的区别对比 2.5 ...

  2. {博学谷学习记录} 超强总结,用心分享|狂野架构师-前置互联网架构演变过程

    本章以系统架构,数据架构,两种维度来进行讲解 目录 1 系统架构 1,1 单体架构 1.2 中台战略 2 数据库架构 2,1 单体架构 2.2 主从读写 2.3 分库分表 3 总结 1 系统架构 1, ...

  3. [博学谷学习记录]超强总结,用心分享|架构 Nacos入门

    提示:学习笔记 欢迎指点 文章目录 前言 一.Nacos安装 二.Nacos服务注册与发现 1.服务提供者Provider 2.服务消费者Consumer 三.Nacos作为配置中心 前言 Nacos ...

  4. [博学谷学习记录]超强总结,用心分享|架构 敏捷 - 开发管理之道

    提示:学习笔记 欢迎指点 文章目录 1.敏捷开发思想之道 2.面向对象开发之道 3.敏捷学习之道 1.敏捷开发思想之道 一名敏捷开发者,敏捷思想的掌握自然首当其冲.在敏捷开发实施的过程中,我们虽然不是 ...

  5. [博学谷学习记录]超强总结,用心分享|第16节 集合续-----笔记篇

    目录 1.HashSet集合 1.1HashSet集合概述和特点[应用] 1.2HashSet集合的基本应用[应用] 1.3哈希值[理解] 1.4哈希表结构[理解] 1.5HashSet集合存储学生对 ...

  6. [转载] Python Web开发—进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程

    参考链接: 在Python中创建代理Web服务器 2 Python Web开发-进阶提升 490集超强Python视频教程 真正零基础学习Python视频教程 [课程简介] 这是一门Python We ...

  7. [博学谷学习记录] 超强总结,用心分享|陌陌综合案例

    注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flin ...

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

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.shell简介 二.shell的基础知识 字符型数据 数组型数据 运算 流程控制 判断语句 文件类型的判断 if 语句 ...

  9. [博学谷学习记录]超强总结,用心分享|Hive的压缩格式

    压缩格式 工具 算法 文件扩展名 是否可切分 DEFAULT 无 DEFAULT .deflate 否 Gzip gzip DEFAULT .gz 否 bzip2 bzip2 bzip2 .bz2 是 ...

最新文章

  1. Spring学习笔记:3(面向切面AOP)
  2. Hadoop集群搭建(五:Hadoop HA集群模式的安装)
  3. 根据API创建BOM(Itpub)
  4. python获取Pandas列名的几种方法
  5. 怎么查硬盘序列号_担心硬盘体质?不妨先给硬盘做一次体检
  6. Hello Las Vegas | 博云在微软Inspire大会的4个思考
  7. 后缀数组--(最长公共前缀)
  8. Mybatis plus 开启日志
  9. C#中的表达式与运算符
  10. PHP 中获取文件名及路径
  11. 免装版_一款好用的便签工具 桌面便签免安装版
  12. 【mysql优化 2】索引条件下推优化
  13. 微信小程序弹出框样式
  14. 为什么大部分人,会对南北经济“差距”产生误解?
  15. 试验一:网络扫描与网络侦查
  16. 你所想了解的方正快速开发平台
  17. 芯片制作 | 和我一起来卷芯片
  18. resultFul架构
  19. 置换 置换群 应用 +置换群对某些算法问题的解释
  20. 卸载wps后office图标丢失变白,系统卡顿

热门文章

  1. 2023最新资质证书系统网站源码/证书在线查询系统+支持WAP自适应
  2. python3.7 利用函数os pandas 利用 excel 对文件名进行归类
  3. 想要在PDF文档中提取签名和图像信息?有这篇Aspose.PDF for .NET干货教程就够了!
  4. EHCI主机控制器--主机控制器初始化
  5. Galera集群部署
  6. 索爱 W800c GPRS,彩信,电子邮件设置
  7. codeforces 1405B(思维)
  8. scrapy框架爬取京东前后一周商品信息
  9. 手机支付流程之华为补单
  10. C语言二叉查找树(图文详解)(超详细)