IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MapReduce并行计算构架流程 -> 正文阅读

[大数据]MapReduce并行计算构架流程

? ?

MapReduce 概述

  1. MapReduce 是面向大数据并行处理的计算模型、框架和平台。
  2. MapReduce 是一种编程模型
  3. 为解决大数据并行处理问题提供模板
  4. MapReduce 是一个编程框架
  5. 降低编写大数据并行处理程序的难度
  6. MapReduce 是一个高性能的并行计算平台
  7. 为大数据并行处理程序提供运行环境

MapReduce 原理

  1. 分治法:
  2. 把规模较大的复杂问题拆分为若干规模较小子问题
  3. 并逐个解决子问题
  4. 最后再将各个子问题的解决结果合并,得到原始问题的结果

MapReduce 角色

  1. Map:拆分后的小任务
  2. 统计每页中单词出现的次数
  3. 文件数据以 key-value 的形式输入 Map 程序进行分析
  4. Map 程序分析的结果也以 key-value 的形式输出
  5. Reduce:汇总每个 Map 的分析结果
  6. 汇总每页中单词出现的次数
  7. 数据以 key-value 的形式输入 Reduce 程序进行汇总
  8. Reduce 程序汇总的结果也以 key-value 的形式输出
  9. Job/Driver:组装 Map 和 Reduce
  10. 管理和指挥另外两种员工

?

WordCount 执行流程

? ? ? ? Map 阶段:

  1. ?文件数据被拆分后交给不同的 map 程序进行分析
  2. ?数据以行为单位转换为 kv 格式交给 map 程序进行分析
  3. ?key 是行首字母的索引
  4. value 是这一行的内容
  5. ?kv 经过 map 程序分析后也以 kv 的形式进行输出
  6. key 是数据中的每个单词
  7. value 是数字 1,表示这个单词出现了 1 次??

WordCount 执行流程

  1. Reduce 阶段:
  2. map 输出的结果聚合成新的 kv ,聚合就是把 key 相同的 value 合并到一起? , hello [1, 1, 1]
  3. ?新的 kv 输入 reduce 进行汇总把 value 中所有的 1 相加就是该单词出现的次数?,?hello 1 + 1 + 1 = 3 = 出现了 3 次
  4. reduce 输出汇总结果

MapReduce 运行流程

  1. Map 阶段:
  2. Map:分析数据;
  3. Spill:保存 map 分析结果;
  4. Reduce 阶段:
  5. Copy:下载 map 的分析结果;
  6. Sort:按照 key 进行排序和聚合;
  7. Reduce:汇总分析结果;
  8. Shuffle 阶段(横跨 Map 和 Reduce 两个阶段):
  9. Spill:保存 map 分析结果;
  10. Copy:下载 map 的分析结果;

Sort:按照 key 进行排序和聚合;

MapReduce 运行流程

  1. Split(切片/分片/划分)
  2. 大数据拆分为小数据,然后交给不同的 map 进行分析
  3. 拆分属于逻辑上的操作,不会对真实数据产生影响
  4. 切片通常和 block 一样大,一个切片对应一个 map 程序
  5. 切片中的数据会以行为单位转换为 key-value 格式,key 是行首字母的索引,value 是这一行内容
  6. 然后依次输入 map 程序进行分析

    MapReduce 运行流程

  7. Map 阶段
  8. Map:
  9. 分析输入的 key-value 数据,输出分析结果
  10. 分析结果也是 key-value 格式
  11. Spill(溢写):map 输出的结果经过溢写操作高效的保存到磁盘上

MapReduce 运行流程

  1. Map 中的 Spill 阶段:
  2. Collect(收集):
  3. Map 输出的数据先进入内存环形缓冲区
  4. 缓冲区大小默认 100M
  5. Partition(分区)&& Sort(排序)
  6. 缓存区中的数据会进行分区和排序操作
  7. 分区:决定该组 key-value 交给哪个 reduce 进行汇总

排序:分区后放在一起的数据按照 key 进行升序排列

MapReduce 运行流程

Map 中的 Spill 阶段:

Spill(溢写):

  1. 当内存环形缓冲区的数据大小达到阈值(80%)的时候
  2. 这部分数据会一次性的写入磁盘
  3. 写入操作完成后清空所占的缓冲区空间

Merge(合并):

  1. 合并多次溢写操作生成的小文件为一个大文件
  2. 在合并的过程中仍然会进行分区和排序操作
  3. 保证最终大文件内的数据分区且有序

MapReduce 运行流程

  1. Map 中的 Spill 阶段:Combiner(Map 阶段的汇总):
  2. 对每个 Map 输出的数据进行汇总
  3. 可选步骤,不是必须的

即使设置了,是否执行也由集群根据当时状况决定是否执行

?

?

?

MapReduce 运行流程

Reduce 阶段:

  1. Copy(下载):
  1. reduce 程序各个 Map 程序下载需要自己进行汇总的数据
  2. Merge && Sort && Grouping(聚合)

  1. Merge :
  2. reduce 下载的多个小文件需要合并成一个大文件

  1. Sort:
  2. 数据按照 key 升序排列

  1. Grouping:
  2. 把 key 相同的 value 合并到集合中,形成新的 key-value

  1. Reduce(汇总):
  2. 聚合后的 key-value 依次输入 reduce 程序进行汇总
  3. 并把汇总结果保存到指定位置。、

MR运行流程

1. 对数据进行切片,决定启动多少个 map 程序;

2. 切片中的数据转换为 key-value 格式输入 map 程序;

3. map 程序处理输入的数据,并输出分析结果;

4. map 的分析结果会先写入内存缓存区,在内存缓冲区中进行分区和排序;

5. 每当缓冲区数据达量达到阈值(80%)的时候,就进行一次性溢写操作,把数据写入磁盘;

6. 合并多次溢写产生的小文件,并保持数据分区且有序;

7. reduce 从各个 map 下载需要自己汇总的数据;

8.reduce 合并下载的所有文件,并进行排序和聚合操作,形成新的 key-value 数据;

9. 聚合后的 key-value 依次输入 reduce 程序进行汇总;

10. 把汇总结果保存到指定位置;

Shuffle

  1. Shuffle(混洗):
  1. 整理 Map 程序输出的数据,并分发给 Reduce 程序
  1. 由以下步骤组成:
  1. 分区:决定 map 输出的 kv 交给哪个 reduce 进行处理;
  2. 排序:按照 key 进行升序排列;
  3. 聚合:把 key 相同的 value 合并到一起,形成新的 kv;

  1. 对大数据进行排序是最常见也是最核心的大数据分析需求
  2. MapReduce 中自带的排序都在 Shuffle 阶段,共 3 次
  1. 第一次:map 输出的数据在内存缓冲区按照 key 升序排列
  2. 第二次:溢写的小文件合并为大文件时候按照 key 升序排列
  3. 第三次:reduce 执行聚合操作时按照 key 升序排列

MapReduce 调优

  1. 由于数据规模的庞大,MapReduce 会执行很长时间
  2. 任何一个小小的优化,都可以节省很多时间
  3. 优化思路:1. 分配更多的硬件资源,提高程序执行效率2. 减少需要计算的数据量
  4. .优化相关的配置都在 mapred-site.xml 文件中
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:22:42  更:2022-09-13 11:23:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:08:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码