随手记点-mapreduce1

来源:互联网 发布:淘宝企业店铺提现 编辑:程序博客网 时间:2024/05/17 16:57

1.What is MapReduce?

We want to count all the books in the library.You count shelf #1,I count up shelf #2.That is map.The more people we get, the faster it goes.
Now we get together and add our individual count. That’s reduce.


2.整个MapReduce框架分为几个阶段,每个阶段的作用?

答:整个MapReduce的框架包含两个阶段,分别是map阶段,reduce阶段。其中Map阶段是一个映射的过程,负责数据的过滤及分发;Reduce阶段是一个有序合并的过程,负责计算归并。


3.MapReduce框架中哪几个部分是可以自定义的?

答:map、reduce、combine和partition都是可以自定义的。


4.map只和一个kv有关是什么意思?reduce和一个key的多个value有关是什么意思?

答:map的输入时一个kv对,里面的操作也是只和这个kv相关的。reduce处理的是一个key对应的全部value,所有一个key和多个value相关。


5.combine和reduce的区别?

答:combine拥有的数据只是每个mapper处理完成之后的数据,是将中间结果进行合并,以减少reducer输入的数据量。reduce处理的是所有的相关数据,最后的输出是整个程序的运算结果。从这个角度看,combine和reduce处理的输入和输出都是不一样的。


6.map为啥可以并行处理?reduce为啥可以并行处理?

答:map函数处理的是一个kv对,不同的map之间 的操作是不相互影响的,当然可以在同一时间内启动多个map的操作,即并行处理。由于分区partition的原因,每个reduce处理的是自己的一个key对应的全部value,不同的key被分配给reduce,reduce之间不相互影响,所以可以并行操作。


7.shuffle是数据从一个维度变成另一个维度的聚合,什么意思?什么叫另一个维度?

答:这句话的意思是shuffle将数据进行规整化处理,即将无序的数据变得有序,得到的输出结果是将kv对进行规整化之后的结果。即把相同partition下相同key值的kv对进行vaule的组合,map端的shuffle产生的结果作为map端的最终输出,是partiton下key有序的数据,和之前无序的kv对时完全不一样的,即是两个不同的维度。


8.shuffle的数据来源,数据目的地,瓶颈是什么?

答:shuffle的数据来源是map的输出,数据目的地是reduce端的输入,瓶颈是磁盘IO开销和内存开销。


0 0