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

分布式并行编程

适用于数据密集型应用:
在这里插入图片描述

MapRduce模型简介

两个函数模型:

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

分而治之原则:

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

计算向数据靠拢:

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

在这里插入图片描述

master/slave架构

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

在这里插入图片描述

Map核心函数

任务:将一个键值对经过map后化为新的键值对格式,不论是输入还是输出的键值对内容,用户设定。
在这里插入图片描述
1、输入是键值对。
2、比如对文本进行解析时可按照如图所示行号加字幕的逻辑,输出了另一个键值对,一个字母以及出现次数
3、输出是对输入键值对的一个map的结果。

Reduce核心函数

在这里插入图片描述
与map大同小异
1、输入是一个键和一堆值的列表。
2、输出是对输入键值的一个reduce的结果。
3、是输出的键值内容是用户设定算法输出的。

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

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

在这里插入图片描述

client(客户端)

在这里插入图片描述
1、提供用户编写的程序到JobTracker
2、查看作业的运行状态:一个应用程序分发到小分片之前表现为job的形式,分发后且包含多个task。

JobTracker(作业跟踪器,管家)

在这里插入图片描述

Task Scheduler(任务调度器)

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

TaskTracker(任务跟踪器)

MapRduce工作流程

大致流程

在这里插入图片描述
1、多个map任务的结果分区(采用shuffle方法,区数与reduce数相同)给reduce完成数学处理,之后再给hdfs
2、MR分片的来源是HDFS,其输出也是给HDFS
3、不同的map任务之间不会进行通信,用户不能显式的在机器之间发送信息

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

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

Shuffle过程原理

例子:

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

MapRduce应用执行过程

在这里插入图片描述
步骤一:程序部署,在master-worker框架下
步骤二:

实例分析WordCount

MapRduce具体应用

MapRduce编程实践

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值