MapReduce 简单介绍

MapReduce

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

相关推荐
牛马程序员‍36 分钟前
云岚到家项目100问 v1.0
大数据·apache
撸码到无法自拔2 小时前
MATLAB中处理大数据的技巧与方法
大数据·开发语言·matlab
三月七(爱看动漫的程序员)2 小时前
Genetic Prompt Search via Exploiting Language Model Probabilities
大数据·人工智能·算法·语言模型·自然语言处理·prompt
forestsea4 小时前
【Elasticsearch】聚合分析:管道聚合
大数据·elasticsearch·搜索引擎
铭毅天下4 小时前
Elasticsearch 性能测试工具 Loadgen 之 001——部署及应用详解
大数据·测试工具·elasticsearch·搜索引擎·全文检索
喝醉酒的小白4 小时前
批量创建ES索引
大数据·elasticsearch·jenkins
一ge科研小菜鸡5 小时前
大数据治理实战指南:数据质量、合规与治理架构
大数据
金融OG8 小时前
99.16 金融难点通俗解释:营业总收入
大数据·数据库·python·机器学习·金融
Elastic 中国社区官方博客14 小时前
使用 Confluent Cloud 的 Elasticsearch Connector 部署 Elastic Agent
大数据·数据库·elasticsearch·搜索引擎·全文检索·confluent
快乐就好ya14 小时前
Elasticsearch+kibana安装(简单易上手)
大数据·elasticsearch·搜索引擎·全文检索