MR-图解

1、不是所有的MR都适合combine

1.1、map端统计出了不同班级的每个学生的年龄

如:(class1, 14)表示class1班的一个学生的年龄是14岁。

第一个map任务:

java 复制代码
class1 14
class1 15
class1 16
class2 10

第二个map任务:

java 复制代码
class1 16
class2 10
class2 11

平均年龄:

java 复制代码
class1: ((14+15+16)+16)/4 = 61/4 = 15.25
class2: (10+10+11)/3 = 10.333
1.2、若强制使用combine的话。

第一个map任务:

java 复制代码
class1 14
class1 15
class1 16
class2 10
==>平均值:
class1: (14+15+16)/3 = 15
class2: 10/1 = 10

第二个map任务:

java 复制代码
class1 16
class2 10
class2 11
==>平均值:
class1: 16/1 = 16
class2: (10+11)/2  =10.5

平均年龄:

java 复制代码
==>汇总求平均值:
class1: (15+16)/2  =15.5
class2: (10+10.5) = 10.25

比对结果:

java 复制代码
class1: 15.25不等于15.5
class2: 10.333不等于10.25
1.3、结论:并非所有MR都适合combine操作

2、reduce端merge 排序 分组

第一个map输出

(hadoop,1)
(hadoop,1)
(hive,1)

第二个map输出

(hadoop,1)
(hive,1)

第三个map输出

(hadoop,1)
(hive,1)
(hive,1)
-->merge
(hadoop,1)
(hadoop,1)
(hive,1)
(hadoop,1)
(hive,1)
(hadoop,1)
(hive,1)
(hive,1)
-->排序
(hadoop,1)
(hadoop,1)
(hadoop,1)
(hadoop,1)

(hive,1)
(hive,1)
(hive,1)
(hive,1)
-->分组
一组
(hadoop,1)
(hadoop,1)
(hadoop,1)
(hadoop,1)
二组
(hive,1)
(hive,1)
(hive,1)
(hive,1)
-->每组调用一次reduce方法
(hadoop,1)
(hadoop,1)  -> hadoop, Iterable(1,1,1,1) -> reduce(hadoop, Iterable(1,1,1,1), context){...}
(hadoop,1)
(hadoop,1)

⭐️3、wordcount+combine过程

⭐️4、wordcount shuffle

5、grouping

6、自定义OutputFormat

相关推荐
渗透测试老鸟-九青4 小时前
基于Electron的应用程序安全测试基础 — 提取和分析.asar文件的案例研究
网络·数据仓库·hive·hadoop·安全·网络安全·漏洞
Zack_wzm12 小时前
基于Ubuntu系统的Hadoop和Spark集群搭建(保姆级教程)
linux·hadoop·ubuntu·spark
weixin_ZYKJ98512 小时前
基于大数据的气象信息可视化分析系统 毕业设计源码88818
java·大数据·hadoop·mysql·docker·信息可视化·pygame
九鼎科技-Leo13 小时前
WPF创建DeepSeek本地自己的客户端-进阶版
大数据·hadoop·wpf
信徒_13 小时前
hadoop
大数据·hadoop·分布式
跳跳的向阳花13 小时前
04、Hadoop3.x从入门到放弃,第四章:Hdfs基本概念与操作
大数据·hadoop·hdfs
一步一念13 小时前
ECS单机部署Hadoop
大数据·hadoop
心灵Haven1 天前
1_安装JDK和Hadoop
java·开发语言·hadoop
火龙谷1 天前
Hadoop第2课(伪分布式集群的搭建)
大数据·hadoop·分布式