前言

GFS解决了Google的大数据存储问题
针对大数据进行计算并获得预期结果的技术就是MapReduce
Google的MapReduce不开源
后面可以通过使用Hadoop MapReduce深入理解

MapReduce

对于Google搜索,一次简单的搜索也就是一个请求,在云端需要大量的计算最终返回结果

  • 如何进行分布式计算?
  • 如何进行并行计算?
  • 如何处理分布式计算中的错误?

Google的分布式数据处理技术MapReduce给了答案

MapReduce模型

在这里插入图片描述

MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和 Reduce

所以编程简洁,只需要完成Map()、Reduce()函数就可以实现分布式技术

MapReduce处理数据的策略:一个存储在分布式文件系统中的大规模数据集,会被切分成 许多独立的分片(split),这些分片可以被多个Map任务并行处理,再通过Reduce操作输出预期的数据,也是分布式的

在这里插入图片描述

MapReduce实现机制

在这里插入图片描述
在这里插入图片描述
MapReduce体系结构主要由四个部分组成,分别是:Client、JobTracker、TaskTracker以及Task

  • Client:
    用户编写的MapReduce程序通过Client提交到JobTracker端,用户可通过Client提供的一些接口查看作业运行状态

  • JobTracker :
    负责资源监控和作业调度,JobTracker会监控所有TaskTracker与Job的健康状况,一旦发现失败,就将相应的任务转移到其他节点,JobTracker会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器(TaskScheduler),而调度器会在资源出现空闲时,选择合适的任务去使用这些资源

  • TaskTracker:
    TaskTracker 会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报JobTracker,同时接收JobTracker发送过来的命令并执行相应的操作(如启动新任务、杀死任务等),TaskTracker使用“slot”等量划分本节点上的资源量(CPU、内存等)。一个Task 获取到一个slot 后才有机会运行,而Hadoop调度器的作用就是将各个TaskTracker 上的空闲slot分配给Task使用。slot 分为Map slot 和Reduce slot 两种,分别供 MapTask 和Reduce Task 使用

  • Task:
    Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动

在这里插入图片描述

执行阶段

在这里插入图片描述

  1. Split(分片)
    HDFS(Hadoop File System,GFS的开源实现)以block数据块作为基础存储单元,HDFS组装成file,对于MapReduce的处理单元是Split,Split 是一个逻辑概念,它只包含一些元数据信息,比如数据起始位置、数据长度、数据所在节点等,split的划分方法完全由用户自己决定
    在这里插入图片描述
  2. Map任务的数量
    Hadoop为每个split创建一个Map任务(Map Task),split 的多少决定了Map任务的数目。 大多数情况下,理想的分片大小是一个HDFS块
  3. Reduce任务的数量
    最优的Reduce任务个数取决于集群中可用的reduce任务槽(slot)的数目,通常设置比reduce任务槽数目稍微小一些的Reduce任务个数(这样可以预留 一些系统资源处理可能发生的错误)
  4. Shuffle
    当所有的map task完成后,每个map task会形成一个最终文件,并且该文件按区划分。reduce任务启动之前,一个map task完成后, 就会启动线程来拉取map结果数据到相应的reduce task,不断地合并数据,为reduce的数据输入做准备,当所有的map tesk完成后, 数据也拉取合并完毕后,reduce task 启动
    Shuffle的过程:描述数据从map task输出到reduce task输入的这段过程
Shuffle过程

shuffle过程,是指对Map输出结果进行分区、排序、合并等处理并交给Reduce的过程,因此Shuffle过程可以分为Map端的操作和Reduce端的操作

  1. Map端操作
    在这里插入图片描述Map端操作就是将Map Task分配缓存,溢写归并Map数据

  2. Reduce端操作
    在这里插入图片描述Reduce端操作领取Map数据放入缓存归并合并,输出给Reduce

大数据学习笔记之分布式并行处理MapReduce

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐