MapReduce学习笔记(包含实践部分)

文章目录

  • 分布式并行编程
  • MapRduce模型简介
    • 两个函数模型:
    • 分而治之原则:
    • 计算向数据靠拢:
    • master/slave架构
    • Map核心函数
    • Reduce核心函数
  • MapRduce体系结构(学有余力,了解即可)
    • client(客户端)
    • JobTracker(作业跟踪器,管家)
    • Task Scheduler(任务调度器)
    • TaskTracker(任务跟踪器)
  • MapRduce工作流程
    • 大致流程
    • 以两个节点的集群为例的执行过程
  • Shuffle过程原理
    • 例子:
  • MapRduce应用执行过程
  • 实例分析WordCount
  • MapRduce具体应用
  • MapRduce编程实践

分布式并行编程

适用于数据密集型应用:
MapReduce学习笔记(包含实践部分)_第1张图片

MapRduce模型简介

两个函数模型:

将复杂的集群计算,高度融合在map函数模型以及reduce函数模型。

分而治之原则:

MapRduce对大规模数据处理时,将数据集切分成独立的小分片,对每个小分片单独启动map任务,同时在多态机器上并行处理,同时遵循计算向数据靠拢的原则。

计算向数据靠拢:

数据不发生迁移,高速且高效。
在集群中选取map机器,和reduce机器,当进行小分片计算的时候将应用程序发到数据所在的机器(原因:HDFS以块为物理单位进行存取,在若干数据节点(机器)上储存一个数据集),

MapReduce学习笔记(包含实践部分)_第2张图片

master/slave架构

包含一个master和若干slave(worker)服务器:

MapReduce学习笔记(包含实践部分)_第3张图片

Map核心函数

任务:将一个键值对经过map后化为新的键值对格式,不论是输入还是输出的键值对内容,用户设定。
MapReduce学习笔记(包含实践部分)_第4张图片
1、输入是键值对。
2、比如对文本进行解析时可按照如图所示行号加字幕的逻辑,输出了另一个键值对,一个字母以及出现次数
3、输出是对输入键值对的一个map的结果。

Reduce核心函数

MapReduce学习笔记(包含实践部分)_第5张图片
与map大同小异
1、输入是一个键和一堆值的列表。
2、输出是对输入键值的一个reduce的结果。
3、是输出的键值内容是用户设定算法输出的。

MapRduce体系结构(学有余力,了解即可)

主要包含四个部分:client(客户端);JobTracker(作业跟踪器);Task Scheduler(任务调度器);TaskTracker(任务跟踪器);

MapReduce学习笔记(包含实践部分)_第6张图片

client(客户端)

MapReduce学习笔记(包含实践部分)_第7张图片
1、提供用户编写的程序到JobTracker
2、查看作业的运行状态:一个应用程序分发到小分片之前表现为job的形式,分发后且包含多个task。

JobTracker(作业跟踪器,管家)

MapReduce学习笔记(包含实践部分)_第8张图片

Task Scheduler(任务调度器)

可插拔模块,允许客户自己编写,可以采用用户自己的任务调度模块

MapReduce学习笔记(包含实践部分)_第9张图片

TaskTracker(任务跟踪器)

MapRduce工作流程

大致流程

MapReduce学习笔记(包含实践部分)_第10张图片
1、多个map任务的结果分区(采用shuffle方法,区数与reduce数相同)给reduce完成数学处理,之后再给hdfs
2、MR分片的来源是HDFS,其输出也是给HDFS
3、不同的map任务之间不会进行通信,用户不能显式的在机器之间发送信息

以两个节点的集群为例的执行过程

MapReduce学习笔记(包含实践部分)_第11张图片
1、从HDFS中获取文件,使用InputFomat进行分片,(逻辑分片,不是真的物理分片,这里指记录开始和结束位置,用户定义
2、RR读取分片,以键值对的格式输出,分片数和map数相同,之后在map中按照用户自定义的处理逻辑进行处理生成中间结果键值对
3、通过Shuffle处理键值对,分发给Reduce(这里发生了分发到不同reduce机器的过程,图中显示为两个节点之间的x状连线
4、通过Reduce中按照用户自定义的处理逻辑进行处理之后通过OutputFomat对数据格式进行检查,以及输出模块是否存在等进行检查,最后放入HDFS。
5、分片长和块相同64或128mb,map数和分片数相同,reduce任务个数取决于reduce slot的个数。

Shuffle过程原理

例子:

MapReduce学习笔记(包含实践部分)_第12张图片
1、从HDFS分布式文件系统中输入,并且分片一一对应分片
2、map中包含了用户的处理逻辑,处理后的键值对放入缓存(并不会直接写入磁盘,也不会直接发到reduce)。
3、当缓存达到溢写比例的时候,经过数据分区,排序,合并后进行溢写,将数据放入磁盘,生成磁盘文件,
4、通知reduce任务,reduce机会将其所需要的数据从不同的map生成的磁盘文件中取走并进行归并之后进行使用。
合并(,变为),归并(,生成>的

MapRduce应用执行过程

MapReduce学习笔记(包含实践部分)_第13张图片
步骤一:程序部署,在master-worker框架下
步骤二:

实例分析WordCount

MapRduce具体应用

MapRduce编程实践

你可能感兴趣的:(MapReduce学习笔记(包含实践部分))