大数据处理批处理计算框架MapReduce简述【大数据存储与处理】

批处理计算框架MapReduce
什么是MapReduce?
谷歌公司最先提出了分布式并行编程模型MapReduce,Hadoop MapReduce是它的开源实现,后者比前者使用门槛低很多从2005年开始摩尔定律逐渐失效,需要处理的数据量快速增加,数据处理能力提升的两条路线:单核CPU到双核、四核、八核;借助于分布式并行编程来提高程序性能,分布式程序运行在大规模计算机集群上,借助一个集群通过多台机器同时并行处理,可并行执行大规模数据处理任务,从而获得海量的计算能力
那么为什么google还需要MapReduce呢?
MapReduce(后称M)相较传统的并行计算框架有什么优势?
其一,传统的并行计算框架是共享的,容错性比较差,但是M是非共享方式的,设计了容错、冗余机制。

其二,M相较传统并行框架能用普通的PC,更便宜,而且可以随意加减计算节点,扩展性好。

其三,在学习难度上,传统的分布式并行计算框架需要编程实现任务的同步和通信,比较麻烦,而MapReduce屏蔽了分布式程序运行底层的所有细节,自动实现了分布式存储,比较简单。

其四,传统的并行框架是实时的,是计算密集型的,而M是批处理,是非实时的,是数据密集型的。
MapReduce模型具体是怎么实现的呢?
这个模型的计算过程抽象到了两个函数,一个是Map,一个是Reduce,编程比较简单,先分片(split),为每一个片单独启动一个Map任务,多个Map任务,多个机器并行处理,而由于设计理念是“给数据以计算”,而不是“给计算以数据”,所以移动数需要巨大的网络传输开销。而M采用Master/Slave架构,包括一个M和多个S,M上运行JobTracker,S上运行TaskTracker,注意MapReduce应用程序不一定只用java写
对于M的工作流程,从HDFS出发分片,执行Map任务后Shuffle,执行Reduce任务,再输出到HDFS。其中为了读取分片,输出成<key,value>的形式到map函数力,需要Record Reader(RR)。
注意,HDFS是以固定大小block为存储单位存储的,而MapReduce的处理单位是split,这是一个逻辑概念,划分的方法完全由用户自个决定。
那Shuffle具体怎么做呢?
Shuffle是对Map的输出结果进行分区排序和合并处理,再交给Reduce,一个Shuffle包含Map端的Shuffle和Reduce端的Shuffle。


Map端的Shuffle过程
每个Map任务分配一个缓存
•MapReduce默认100MB缓存
•设置溢写(spill)比例0.8
•分区默认采用哈希函数
•排序是默认的操作
•排序后合并(Combine),此操作由用户定义是否进行
•合并不能改变最终结果
•合并后写磁盘,生成一个磁盘文件
•多个溢写文件在Map任务全部结束之前进行归并
•归并得到一个大的文件,放在本地磁盘
•文件归并时,若溢写文件数量大于min.num.spills.for.combine
的预定值(默认是3)则可以再次启动Combiner,少于3不需要
•JobTracker一直监测Map任务的执行,并通知Reduce任务来领
取数据
合并(Combine)和归并(Merge)的区别:
两个键值对<“a”,1>和<“a”,1>,如果合并,会得到<“a”,2>,如果归并,会得到<“a”,<1,1>>


Reduce端的Shuffle过程
Reduce任务通过RPC向JobTracker询问Map任务是否已经完成,若完成,则领取数据
•Reduce领取数据先放入缓存,来自不同Map机器,先归并,再合并,写入磁盘
•多个溢写文件归并成一个或多个大文件,文件中的键值对是排序的
•当数据很少时,不需要溢写到磁盘,直接在缓存中归并,然后输出给Reduce

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值