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 过程

相关推荐
WTT001110 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
云云32115 小时前
怎么通过亚矩阵云手机实现营销?
大数据·服务器·安全·智能手机·矩阵
新加坡内哥谈技术15 小时前
苏黎世联邦理工学院与加州大学伯克利分校推出MaxInfoRL:平衡内在与外在探索的全新强化学习框架
大数据·人工智能·语言模型
Data-Miner15 小时前
经典案例PPT | 大型水果连锁集团新零售数字化建设方案
大数据·big data
lovelin+v1750304096615 小时前
安全性升级:API接口在零信任架构下的安全防护策略
大数据·数据库·人工智能·爬虫·数据分析
道一云黑板报16 小时前
Flink集群批作业实践:七析BI批作业执行
大数据·分布式·数据分析·flink·kubernetes
节点。csn16 小时前
flink集群搭建 详细教程
大数据·服务器·flink
数据爬坡ing17 小时前
小白考研历程:跌跌撞撞,起起伏伏,五个月备战历程!!!
大数据·笔记·考研·数据分析
云云32117 小时前
云手机方案全解析
大数据·服务器·安全·智能手机·矩阵