1- MapReduce中shuffle阶段的工作流程以及何如优化该阶段?
分区 ,排序 ,溢写 ,拷贝到对应reduce机器上 ,增加combiner ,压缩溢写的文件
2-MapReduce中combine的作用,一般使用情景,那些情况不需要以及和reduce的区别?
1)Combiner的意义就是对每一个maptask的输出进行局部汇总 ,以减小网络传输量。
2)Combiner能够应用的前提是不能影响最终的业务逻辑 ,而且 ,Combiner的输出kv应该跟reducer的输入kv类型 要对应起来。
3)Combiner和reducer的区别在于运行的位置。
-
Combiner是在每一个maptask所在的节点运行;
-
Reducer是接收全局所有Mapper的输出结果
3- 如果没有定义partitioner,那数据在被送达reduce前是如何被区分的?
如果没有自定义的 partitioning,则默认的 partition 算法,即根据每一条数据的 key的 hashcode 值摸运算(%) reduce 的数量 ,得到的数字就是"分区号"。