Hadoop和spark中的区别

Hadoop:

在MapReduce中,步骤包括map,shuffle,reduce,其中combine和partition是函数。combine作用是将map后产生的键值对中,相同key的合并,产生新的键值对作为reduce的输入。而partition的作用是根据key将键值对划分给对应的reduce。shuffle包括combine和partition。

kvbuffer环在到达临界数据后,会从剩余空间的中间位置作为起始位置进行数据安放

merge过程中会产生一个file.out和file.out.index来存储最终输出和索引

 

spark:

有些任务之间数据流转不需要通过Shuffle,但是有些任务之间还是需要通过Shuffle来传递数据,比如wide dependency的group by key。

Spark中需要Shuffle 输出的Map任务会为每个Reduce创建对应的bucket,Map产生的结果会根据设置的partitioner得到对应的bucketId,然后填 充到相应的bucket中去。每个Map的输出结果可能包含所有的Reduce所需要的数据,所以每个Map会创建R个bucket(R是reduce的 个数),M个Map总共会创建M*R个bucket。这种shuffle是可以被优化。

 

MapReduce和Spark的Shuffle过程对比

 MapReduceSpark
collect在内存中构造了一块数据结构用于map输出的缓冲没有在内存中构造一块数据结构用于map输出的缓冲,而是直接把输出写到磁盘文件
sortmap输出的数据有排序map输出的数据没有排序
merge对磁盘上的多个spill文件最后进行合并成一个输出文件在map端没有merge过程,在输出时直接是对应一个reduce的数据写到一个文件中,这些文件同时存在并发写,最后合并成一个
copy框架jettynetty或者直接socket流
对于本节点上的文件仍然是通过网络框架拖取数据

不通过网络框架,对于在本节点上的map输出文件,采用本地读取的方式

copy过来的数据存放位置先放在内存,内存放不下时写到磁盘

一种方式全部放在内存;

另一种方式先放在内存
merge sort最后会对磁盘文件和内存中的数据进行合并排序对于采用另一种方式时也会有合并排序的过程

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值