【大数据】计算引擎MapReduce

风雨同行  金牌会员 | 2024-6-19 06:08:21 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 889|帖子 889|积分 2667


目录
1.概述
1.1.媒介
1.2.大数据要怎么计算?
1.3.什么是MapReduce?
2.架构
3.工作流程
4.shuffle
4.1.map过程
4.2.reduce过程


1.概述

1.1.媒介

本文是作者大数据系列专栏的此中一篇,专栏地址:
https://blog.csdn.net/joker_zjn/category_12631789.html?spm=1001.2014.3001.5482
本文将会聊一下计算引擎MapRedduce,深入浅出快速过一遍MapReduce的焦点概念和原理,不涉及具体利用,具体利用将会在下文聊。
1.2.大数据要怎么计算?

大数据集的数据是海量的,动辄几十上百TB,为了能将其存下来都是采用的分布式存储,将整个数据集分散到多个节点上去。要对其做统计之类的计算时,肯定不能数据向计算靠拢,将数据全部读到一个跑计算使命的节点上来举行计算,只能计算向数据靠拢,将计算使命放到存储数据的各个节点上去。并行的对整个大数据集举行计算,最后汇总成一个结果。
1.3.什么是MapReduce?

上面形貌的过程要做的工作照旧很多的,管理并行的计算使命,将使命分发到各个节点上去,最后还要汇总结果,手动编码实现整个管理过程的话照旧很复杂的。mapreduce作为一个并行编程框架,帮我们屏蔽掉了这一系列实现细节,让开发人员可以借助API专注的举行计算逻辑的编写。
mapreduce分为两阶段:map、reduce。
map阶段会将计算使命分发到各个数据存储节点上去跑使命,实现对大数据集的并发处理。
reduce阶段会汇总map阶段各节点上计算使命算出来的结果,聚合成终极的结果。
上述过程不难发现,mapreduce就是个主从架构的:
master节点负责总的调度、slave节点负责具体跑使命。


  • master:集群内有一个master服务器、也是作业追踪器JobTracker、负责整个作业的调度和处理。
  • slave:集群内有多个slave服务器,也是实验具体使命的TaskTracker、负责完成具体的使命。
以一个分词统计的mapreduce为例:

2.架构


Client端将使命发给JobTracker,JobTracker负责监控Job的康健状况,控制TaskTracker。JobTracker通过心跳的方式和各个TaskTracker保持联结,TaskTracker将自身的资源利用情况、使命实验进度等信息告知JobTracker。Task Scheduler负责使命的分发规则,决定终极将使命分发给谁。
TaskTracker如何衡量自身的资源利用情况?
tasktracker会将自身所在的呆板的内存、CPU等资源视为一个团体,然后将其分别为一份份的slot,根据实验job必要的资源的不同,分为两种slot,map的slot和reduce的slot。taskTracker上报的资源利用情况就是自身两类slot的利用情况。
task分为两种:map task、reduce task,对应着各自实验的是map函数、reduce函数。
3.工作流程

以下是大致过程:

由于大数据集在存储的时间是分片开来,分布式存储的,所以对于map而言,输入就是数据分片。
留意1:
mapreduce处理的并不一定是单个数据,很大概处理的是整个大数据集,所以mapreduce面临的文件的分片数是不固定的,毕竟每一份文件的大小都不一样,分片数肯定不一样。所以map和分片之间不是一一对应的关系,不是说当前处理的文件有多少个分片就有多少个map,上面只是一个逻辑过程,后面会说map和分片的关系。
留意2:
map和reduce不一定是在一台呆板上完成的。如果数据分片所在的服务器是台tasktracker并且有map solt可用,那么map肯定是在那台呆板上完成的。如果那台呆板不是台tasktracker大概没有map solt可用,那么会选择离那台呆板近来的满足可做map使命的呆板来处理map使命。也就是说一般map是和数据集呆在一起的(隔得近我们也可理解为趋近于本地),但是reduce大概是被分配到其它呆板上完成的,由于reduce阶段必要传输的数据量已经不大了,输入只是个中间结果而已,这时间间隔不是标题,服从是焦点,谁算的快(reduce slot多)谁来。
以下是详细过程:



  • 将文件读出来
  • 将文件切割一下(split)
  • map运算(该有几个map使命?)
  • 算出中间结果(shuffle)
  • reduce运算
  • 算出终极结果
该有几个map使命?map和分片的数目是一致的吗?map和分片之间是一一对应的吗?
答案是:不是。
开多少map是不固定的,取决于有多少资源(map solt),所以才有了split这一步,split这一步会将数据举行切分,切出来的再交给各个map。每个map只专注于处理自己的要负责的split,这也避免了并发带来的数据安全标题。
4.shuffle

有没有发现mapreduce,map其实很简单,reduce也很简单,但是这个算出中间结果(shuffle)这一步有点绕。接下来我们详细拆解map和reduce和过程看看它是如何完成shuffle的。
4.1.map过程

以下展示的仅仅是一个map过程:

HDFS中的数据集输入,为了加速,对输入数据split,分为多个map来并发处理,一个map一个split。处理结果存在缓存中,溢写到磁盘上。溢写的时间举行分区、排序、合并,此中合并很重要:
合并:

4.2.reduce过程


一个reduce接收的输入是来自多个map的,所以首先是将多个map传过来的结果归并起,再交给reduce来利用。下面是完备过程:
假设来自多个map的数据合起来的数据集是:

先举行排序:

举行归并:



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

风雨同行

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表