一个NotionNext搭建的博客
数据库系统概论
大数据原理与应用
javaWeb应用开发基础教程
python
毕业设计
大数据技术综合应用
实训-航空数据系统
java面向对象程序设计
数据结构
算法分析与设计
SPARK
Python爬虫大数据采集与挖掘
云计算
概率论与数理统计
数字逻辑
计算机网络
计算机组成原理
linux
操作系统
人工智能导论
数据仓库与数据挖掘
数据可视化
大数据安全与隐私保护
c语言
C++
[第七章]MapReduce
概述
如果运算需要用到前轮的运算结果,有相关性。则不适用MapReduce
分布式并行编程
并行编程框架
- 传统框架MPL、OpenCL、CUDA
- MapReduce
- 优点
模型简介
计算过程抽象成Map和Reduce函数
- 主要思想
- 分而治之
- 计算向数据靠拢
- 采用mater/,一个mater多个
Map和Reduce函数
Map
- 输入:键值对
- 输出:一堆小键值对
Reduce
- 输入:一个键和对应的多个值的列表
- 输出:键值对
体系结构
Client/JobTracker/TaskTracker/Task
- JobTracker(核心)
- 失败会造成单点故障
- Zookper可
监控、作业调度
- TaskTracker
“心跳”传送资源使用情况和任务运行进度给JobTracker
- Task
- 分为Map Task和ReduceTask
工作流程
概述
分片、执行Map任务,Shuffle,Reduce任务、输出
- Map之间没有通信,Reduce之间也是
各个阶段的执行
流程
InputFomat→split→RR→Map→Shuffle→Reduce→OutFomat
Split
- 块是物理单位
- Split是逻辑概念划分方法完全由用户决定
- Map数量取决于Split
- Reduce数量取决于Reduce任务槽(slot)(比它稍小)
Shuffle
简介
分为多个分区,并排序、合并,每满一次磁盘文件归并,数据被Reduce取走前再归并
Map端
- 每个Map分配一个缓存
- 分区默认哈希函数
- 溢写比0.8
- 排序
- 可以合并,不能改变结果
- Map任务结束前归并,如果归并后溢写值过大,可以再次启用合并
- 合并:<a,1><a,1>→<a,2>
- 归并:<a,1><a,1>→<a,<1,1>>
⭐
- Map
- n句Map输出n个缓存,每个缓存中放每句的每个单词
- Map不排序
- Suffle
- 排序
- 不使用Combiner函数,同一个缓存中归并
- 使用,合并
- reduce
- 排序
- 输出结果


Reduce端
若所有Map端完成,执行Reduce
- 放入缓存→归并→合并→写入磁盘(数据量少不用)
- 多个溢写文件合并成一个或多个文件,键值对会排序
实例分析:WordCount
词频统计并按字母顺序排序
⭐
核心代码需要记住
WordCount:
具体应用
- 计算问题
- 关系代数
- 分组与聚合
- 矩阵向量
- 矩阵乘法
编程应用
WordCount
编写Map
java和MapReduce数据类型不同
编写Reduce
main
执行方式
java
python
pig
shell
hive
hadoop jar
Prev
[第六章]云数据库
Next
[第八章]Hadoop再探讨
Loading...