大数据技术原理与应用学习笔记(七)

本系列历史文章

大数据技术原理与应用学习笔记(一)
大数据技术原理与应用学习笔记(二)
大数据技术原理与应用学习笔记(三)
大数据技术原理与应用学习笔记(四)
大数据技术原理与应用学习笔记(五)
大数据技术原理与应用学习笔记(六)

MapReduce

MapReduce概述

数据处理能力提升路线有两条:

  • 单核→双核→四核……
  • 分布式并行处理

模型简介

MapReduce的两大核心就是Map和Reduce,所以MapReduce才用的策略是分而治之的思想,通过切分操作,由每个分片单独启动一个Map任务。由于要处理的数据量一般规模较大,所以MapReduce为了更好地提升性能,采用“计算向数据靠拢”的设计理念。

M/S架构

MapReduce框架采用了Master/Slave架构,包括一个Master和若干个Slave。Master上运行JobTracker,Slave上运行TaskTracker。JobTracker负责整个作业调度处理及失败恢复,TaskTracker接受JobTracker的指令并完成。

MapReduce体系结构

MapReduce主要有以下4个部分组成:

Client

  • 将用户编写的应用程序通过Client交到JobTracker;
  • 通过Client,用户可用接口查看提交作业的运行状态;

JobTracker

  • 负责资源监控、作业调度、监控底层TaskTracker及运行的Job的健康情况;
  • 一旦失败,把任务转移至其他节点继续跟踪;

TaskTracker

  • 执行JobTracker发送的命令
  • 把自己的情况通过HeartBeat发送给JobTracker

Task任务

Task的任务包含两个:Map任务和Reduce任务。
可以将资源分为两部分,并用Slot作为资源调度单位,分为MapSlot和ReduceSlot。

MapReduce的工作流程

MapReduce的工作流程可简略如下:
从HDFS来的数据→分片处理→启动对应的Map任务→分成不同区执行Shuffle操作→执行Reduce→输出(至HDFS)
注: 不同的Map(Reduce)间不会通信

执行阶段

数据输入→InputFormat→切分(逻辑分片)→RR(从文件读入)→转入Map(自定义操作)→将获得的中国结果进行Shuffle操作(分区、排序、合并等)→进行Reduce(自定义操作)→输出(OutputFormat)
注:

  • 分片数决定Map数(一个块默认分一个片)
  • Reduce数取决于Reduce slot数(Reduce数 ≤ Reduce slot数)

Shuffle原理(MapReduce核心)

在Map任务完成后,结果写入缓存中,当缓存数据溢出时,进行分区、排序、合并,并写入磁盘。若磁盘文件较多,则可再合并成大文件。随后通知各Reduce取走(拉回本地进行处理)。
Shuffle又分为两种Shuffle操作:

  • Map端Shuffle
  • Reduce端Shuffle

Map端Shuffle

  • 输入数据和执行Map任务;
  • 写入缓存;
  • 溢写(分区、排序、合并(可选));
  • 文件归并(若磁盘中的溢写文件高于某参数(默认为3),则再次对数据进行合并减少数据量)。

JobTracker检测到一个Map完成后,通知对应Reduce取走。

Reduce端Shuffle过程

  • 得到JobTracker通知后,Reduce去各个Map把自己的数据取走,同时每个Reduce通过RPC向JobTracker询问Map是否完成;
  • 归并数据,领取到的数据放入缓存,若占满可以溢写,同时还可以归并;
  • 数据输入到Reduce。

应用程序

  • 用户程序执行,分配到多台机器(1 Master + N Worker),一部分Worker执行Map,一部分Worker执行Reduce;
  • 输入文件切分为M个分片,分给N个空闲Worker;
  • 执行Map,生成<key,value>形式的中间结果,写至内存缓冲区;
  • 写入本地磁盘,划分为R个分区(分配给R个Reduce),并排序;
  • Reduce Worker将数据拉回本地进行相关处理;
  • 执行Reduce;
  • 输出。

MapReduce编程实践

关于MapReduce编程实践可参考厦大数据库博客:MapReduce编程实践(Hadoop3.1.3)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值