请说下MR中Reduce Task的⼯作机制

提问者:帅平 问题分类:面试刷题
请说下MR中Reduce Task的⼯作机制
1 个回答
一生的爱意
一生的爱意
Reduce ⼤致分为 copy、sort、reduce 三个阶段,重点在前两个阶段。copy 阶段包含⼀个 eventFetcher 来获取已完成的 map 列表,由 Fetcher 线程去 copy 数据,在此过程中会启动两个 merge 线程,分别为 inMemoryMerger 和 onDiskMerger,分别将内存中的数据 merge 到磁盘和将磁盘中的数据进⾏ merge。待数据 copy 完成之后,copy 阶段就完成了。
开始进⾏ sort 阶段,sort 阶段主要是执⾏ finalMerge 操作,纯粹的 sort 阶段,完成之后就是 reduce 阶段,调⽤⽤户定义的 reduce 函数进⾏处理。
发布于:10个月前 (02-16) IP属地:四川省
唯宠她
唯宠她
1. Copy阶段 :简单地拉取数据。Reduce进程启动⼀些数据copy线程(Fetcher),通过HTTP⽅式请求maptask获取属于⾃⼰的⽂件(map task 的分区会标识每个map task属于哪个reduce task ,默认reduce task的标识从0开始)。
2. Merge阶段 :在远程拷⻉数据的同时,ReduceTask启动了两个后台线程对内存和磁盘上的⽂件进⾏合并,以防⽌内存使⽤过多或磁盘上⽂件过多。merge有三种形式:内存到内存;内存到磁盘;磁盘到磁盘。默认情况下第⼀种形式不启⽤。当内存中的数据量到达⼀定阈值,就直接启动内存到磁盘的merge。与map端类似,这也是溢写的过程,这个过程中如果你设置有Combiner,也是会启⽤的,然后在磁盘中⽣成了众多的溢写⽂件。内存到磁盘的merge⽅式⼀直在运⾏,直到没有map端的数据时才结束,然后启动第三种磁盘到磁盘的merge⽅式⽣成最终的⽂件。
3. 合并排序 :把分散的数据合并成⼀个⼤的数据后,还会再对合并后的数据排序。
4. 对排序后的键值对调⽤reduce⽅法 :键相等的键值对调⽤⼀次reduce⽅法,每次调⽤会产⽣零个或者多个键值对,最后把这些输出的键值对写⼊到HDFS⽂件中。
发布于:10个月前 (02-16) IP属地:四川省
我来回答