当前位置: 首页 > news >正文

MapReduce 简单介绍

MapReduce

  • 一、MapReduce概述
  • 二、MapReduce 基本设计思想
    • 分而治之
    • 2.2 抽象成模型
    • 2.3 上升到框架
  • 三、MapReduce 优缺点
    • 3.1 MapReduce 的优点
    • 3.1 MapReduce 的缺点
  • 四、MapReduce 编程模型
    • 4.1 MapReduce 分布式计算原理
    • 4.2 MapReduce 编程模型
    • 4.3 剖析 MapReduce 编程模型
      • 4.3.1 问题思路分析
      • 4.3.2 数据分割
      • 4.3.3 数据处理
      • 4.3.4 数据局部合并
      • 4.3.5 数据聚合
    • 4.4 MapReduce 运行机制
  • 五、MapReduce 容错
  • 六、 suffle 过程

一、MapReduce概述

MapReduce 是一个使用简单的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错式并行处理TB级别的数据集。

  • MapReduce是一个并行程序的计算模型与方法
  • MapReduce是一个并行程序运行的软件框架
  • MapReduce是一个基于集群的高性能并行计算平台

二、MapReduce 基本设计思想

分而治之

在这里插入图片描述

2.2 抽象成模型

在这里插入图片描述

2.3 上升到框架

MapReduce 提供统一计算框架的主要目标是实现自动并行化计算,为程序员隐藏系统层面的细节。

  • 计算任务的自动划分和调度。
  • 数据的自动化分布存储和划分。
  • 处理数据与计算任务的同步。
  • 结果数据的收集整理,如排序,合并,分区等。
  • 系统通信、负载均衡、计算性能优化。
  • 处理系统节点出错检测和失效恢复。

三、MapReduce 优缺点

3.1 MapReduce 的优点

  • MapReduce易于编程
  • 良好的扩展性
  • 高容错性
  • 适合PB级以上数据集的离线处理

3.1 MapReduce 的缺点

  • 不适合实时计算
  • 不适合流式计算
  • 不适合DAG计算

四、MapReduce 编程模型

4.1 MapReduce 分布式计算原理

在这里插入图片描述

4.2 MapReduce 编程模型

在这里插入图片描述

4.3 剖析 MapReduce 编程模型

在这里插入图片描述

4.3.1 问题思路分析

  • 业务场景
    有大量的文件,每个文件里面存储的都是单词。
  • 我们的任务
    统计所有文件中每个单词出现的次数。
  • 解决思路
    先分别统计出每个文件中各个单词出现的次数,然后再累加不同文件中同一个单词出现次数。

4.3.2 数据分割

在这里插入图片描述

4.3.3 数据处理

在这里插入图片描述

4.3.4 数据局部合并

在这里插入图片描述

4.3.5 数据聚合

在这里插入图片描述

4.4 MapReduce 运行机制

在这里插入图片描述

五、MapReduce 容错

  • 任务容错

    当application master被告知一个任务尝试失败后,它将重新调度该任务的执行。application "master会试图避免在之前失败过的NodeManager上重新调度该任务。此外,如果一个任务失败数超过4次,该任务将不会再尝试执行。

  • application master 容错
    application master向ResourceManager发送周期性的心跳,当application master失败时ResourceManager将检测到该失败,并在一个新的容器中重新启动一个application master实例。对于新的application master来说,它将使用作业历史记录来恢复失败的应用程序所运行任务的状态,所以这些任务不需要重新运行。

  • NodeManager 容错
    如果一个NodeManager节点因中断或运行缓慢而失败,那么它就会停止向ResourceManager发送心跳信息(或者发送频率很低)。默认情况下,如果ResourceManager在10分钟内没有收到一个心跳信息,它将会通知停止发送心跳信息的NodeManager,并且将其从自己的节点池中移除。

    在出现故障的NodeManager节点上运行的任何任务或application master,将会按前面描述的机制进行恢复。另外,对于出现故障的NodeManager节点,那么曾经在其上运行且成功完成的map任务,如果属于未完成的作业,那么application master会安排它们重新运行。这是因为它们的中间输出结果是存放在故障NodeManager节点所在的本地文件系统中,reduce任务可能无法访问。

  • ResourceManager 容错
    ResourceManager 出现故障是比较严重的,因为没有 ResourceManager,作业和任务容器将无法启动。在默认的配置中,ResorrceManager 是一个单点故障,因为在机器出现故障时,所有的作业都会失败并且不能被恢复。

    为了实现高可用(HA),有必要以一种 active-standby 配置模式运行一对 ResourceManager 如果 active ResourceManager出现故障,则 standby ResourceManager 可以很快的接管,并且对客户端来说没有明显的中断现象。

六、 suffle 过程

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Vue3的多种组件通信方式
  • 解决C++读写中文乱码问题, UTF-8与GBK字符的转换 —基于Windows.h
  • RAR文件密码忘记怎么办?三大RAR密码找回工具推荐
  • 苹果macOS 15 Sequoia投屏功能 实现Mac上iPhone桌面管理
  • Windows下curl报错:curl: (3) unmatched close brace/bracket in URL position x
  • 【现代通信技术】走进现代通信系统架构
  • 海康相机二次开发学习笔记1-环境配置
  • 【2024】k8s集群 图文详细 部署安装使用(两万字)
  • Oracle笔记
  • 二叉树详解(1)
  • 【hexo博客问题】
  • 跨境电商测评网络:美国住宅IP的获取与使用
  • Golang 与 Java:编程语言比较及如何选择
  • 2024.8.15(python管理mysql、Mycat实现读写分离)
  • 【SpringCloud】RabbitMQ——五种方式实现发送和接收消息
  • [译]CSS 居中(Center)方法大合集
  • IOS评论框不贴底(ios12新bug)
  • js面向对象
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • OSS Web直传 (文件图片)
  • Transformer-XL: Unleashing the Potential of Attention Models
  • Vue.js 移动端适配之 vw 解决方案
  • vue脚手架vue-cli
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 从tcpdump抓包看TCP/IP协议
  • 分类模型——Logistics Regression
  • 记录:CentOS7.2配置LNMP环境记录
  • 利用jquery编写加法运算验证码
  • 码农张的Bug人生 - 见面之礼
  • 爬虫模拟登陆 SegmentFault
  • 前端
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 手写双向链表LinkedList的几个常用功能
  • 小程序01:wepy框架整合iview webapp UI
  • 责任链模式的两种实现
  • 说说我为什么看好Spring Cloud Alibaba
  • #传输# #传输数据判断#
  • (1)Jupyter Notebook 下载及安装
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (26)4.7 字符函数和字符串函数
  • (4)(4.6) Triducer
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)ABI是什么
  • .mysql secret在哪_MySQL如何使用索引
  • .NET Core 2.1路线图
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET6 命令行启动及发布单个Exe文件
  • .NetCore部署微服务(二)
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点
  • .pyc文件是什么?
  • @PreAuthorize与@Secured注解的区别是什么?
  • @Transactional 竟也能解决分布式事务?