分布式框架的知识点整理

MapReduce简介

1.MapReduce是Hadoop生态中的一款分布式运算框架,它提供了非常完善的分布式架构,可以让不熟悉分布式计算的人员也能编写出优秀的分布式系统,因此可以让开发人员将精力专注到业务逻辑本身。
2.MapReduce采用“分而治之”的核心思想,可以先将一个大型任务拆分成若干个简单的子任务,然后将每个子任务交给一个独立的节点去处理。当所有节点的子任务都处理完毕后,再汇总所有子任务的处理结果,从而形成最终的结果。
3.MapReduce在发展史上经过一次重大改变,旧版MapReduce(MapReduce 1.0)采用的是典型的Master/Slave结构,Master表现为JobTracker进程,而Slave表现为TaskTracker。但是这种结果过于简单,例如Master的任务过于集中,并且存在单点故障等问题。因此,MapReduce进行了一次重要的升级,舍弃JobTracker和TaskTracker,而改用了ResourceManager进程负责处理资源,并且使用ApplicationMaster进程管理各个具体的应用,用NodeManager进程对各个节点的工作情况进行监听。升级后的MapReduce称为MapReduce 2.0,但也许由于“MapReduce”这个词已使用太久,有些参考资料中经常使用“MapReduce”来代指YARN。YARN的具体组成结构和各部分的作用,会在第5章中进行详细介绍。
4.如果要统计一个拥有海量单词的词库,就可以先将整个词库拆分成若干个小词库,然后将各个小词库发送给不同的节点去计算,当所有节点将分配给自己的小词库中的单词统计完毕后,再将各个节点的统计结果进行汇总,形成最终的统计结果。

MapReduce计算模型

1.MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce。
2.MapReduce框架会为每个Map任务输入一个数据子集(split),Map任务生成的结果会继续作为Reduce任务的输入,最终由Reduce任务输出最后结果,并写入分布式文件系统。
3.编程容易,不需要掌握分布式并行编程细节,也可以很容易把自己的程序运行在分布式系统上,完成海量数据的计算。

Map和Reduce函数

键值对:<key,value>
第一步:将数据抽象为键值对形式,接着map函数会以键值对作为输入,经过map函数的处理,产生一系列新的键值对作为中间结果输出到本地。
第二步:MapReduce框架自动将这些中间结果数据按照键做聚合处理,并将键相同的数据分发给reduce函数处理。
第三步:reduce函数以键和对应的值的集合作为输入,经过reduce函数处理后,产生另外一系列键值对作为最终输出。
{key1,value1}→{key2,List< value2>}→{key3,value3}

函数输入输出说明
Map<k1,v1>如:<行号,”a b c”>List(<k2,v2>) 如:<“a”,1><“b”,1> <“c”,1>1.将小数据集进一步解析成一批<key,value>对,输入Map函数中进行处理 2.每一个输入的<k1,v1>会输出一批<k2,v2>是计算的中间结果。
Reduce<k2,List(v2)>如:<“a”,<1,1,1>><k3,v3> <“a”,3>输入的中间结果<k2,List(v2)>中的List(v2)表示是一批属于同一个k2的value

Shuffle机制

1.Map阶段的产物会经过一个名为Shuffle的阶段。
在这里插入图片描述

2.在Shuffle阶段中进行排序、分区、合并操作,Shuffle阶段的产物是以“key=单词,value=出现次数的数组”形式输出。
在这里插入图片描述3.首先,Shuffle会持续接收Map阶段发来的数据,并将数据写入到一个“环形缓冲区”中,当缓冲区被填满时就会将覆盖掉的部分数据溢出存放到“溢出文件”中。
在这里插入图片描述4.其次,Shuffle会对溢出文件中的数据进行排序(Sort),然后再将排序后的数据进行分(Partition),例如,将字母A-字母K开头的放在0个分区,将字母L-字母Q开头的放在第1个分区……

5.同样Shuffle会生成很多个排序且分区后的溢出文件,最后,会将所有溢出文件中相同分区号的内容进行合并(Combine),形成本Map阶段最终的第0区内容、第1区……内容。

6.与此同时,其他Map阶段也会生成当前Map最终的第0区内容、第1区内容……最后Shuffle会对所有Map阶段相同分区号的内容再次进行合并,从而形成最终的第0区内容、第1区内容……最后不同区号中的内容就会发送到不同的Reduce中进行处理。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值