论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
大数据
›
数据仓库与分析
›
【大数据】计算引擎MapReduce
【大数据】计算引擎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 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
风雨同行
金牌会员
这个人很懒什么都没写!
楼主热帖
深入Python网络编程:从基础到实践 ...
MySQL锁(乐观锁、悲观锁、多粒度锁) ...
中职网络安全技能大赛SSH弱口令渗透测 ...
阿里云体验有奖:如何将 PolarDB-X 与 ...
HTML+CSS+JS——动漫风二次元论坛(2页) ...
转载自ChatGPT:Python关键字 asynico ...
损失函数-pytorch
四、MySQL之数据查询语言(二) ...
docker-compose一键部署java开源项目 ...
互联网技术大佬独立博客推荐 ...
标签云
存储
服务器
浏览过的版块
Java
快速回复
返回顶部
返回列表