深入解析hadoop中的小黑盒shuffle

编程入门 行业动态 更新时间:2024-10-07 16:21:01

深入解析<a href=https://www.elefans.com/category/jswz/34/1767604.html style=hadoop中的小黑盒shuffle"/>

深入解析hadoop中的小黑盒shuffle

简介

小黑盒shuffle是用来将数据转换成key-values数组形式,具体思想流程加源码透析如图:

图形解析

首先我们知道①InputFormat接口子类

jdk1.8源码: protected void map(KEYIN key, VALUEIN value, Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>.Context context) throws IOException, InterruptedException {context.write(key, value);}

MapShuffle⑩

图中可以看到多个Mapper并行执行map()方法,多个map并行工作而且相互不影响,每个map工作结束后就会将输出的key-value对先存储在内存的缓存区中,这个③缓存区是环状类似于Hash中的链表<只不过链表首尾呼应而这个环状是上下呼应那种>一样对数据进行放置,但是缓存区是有默认内存的,这时候程序会多开辟一条线程SpillThread对缓存区进行实时监控,

//源码MapTask类protected class SpillThread extends Thread {protected SpillThread() {}

当数据存储过大就会将内存缓存区中的数据溢写到spill到本地磁盘中去

ReduceShuffle⑪

然后开始执行ReduceShuffle,直到这里MapShuffle阶段完成后会出现临近的和相同的key⑤排序着,而且每个key会对应多种多样的value,而ReduceShuffle阶段的目的就是为了让相同的key的所有value合并到一起然后进行上下排序的过程。图中可以看出这是一个MapShuffle的执行原理,当4个Mapper并行执行map()方法的时候,会出现每个map()在执行的过程时⑥,就可能会有相同的key,这个key可能对应相同的value也可能对应不同的value,ReduceShuffle执行会将相同的key就行归并,归并的方式可能是2个或者3个等不定<可以在配置中调节>不同的进行数据合并也就是说key中会对应2个或者多个不同的value⑦,然后在次排序,用同样的方法进行排序,⑧最后的到的就是key-values的数组形式,每个过程排序+合并,最终的结构就是key—values的数组形式并且每个key上下排序着;
排序后生成的大文件放在map程序本机的本地磁盘,⑨并且等待reduce()来拷贝数据;
!!当执行到此处,可以进行以下两个可设置的操作:

-1- Combiner(map端的reduce),文件合并的时候,可以执行reduce端操作(将相同key的value合并在一起),这种操作不是每个reduce程序都可以进行,只有不影响最终结果的情况下,才能够进行Combiner操作。 -2- 压缩:在此处可以将合并后的大文件进行压缩,压缩后可以减少磁盘的占用量,当reduce copy时也可以减少网络IO

这样一个完整的小黑盒shuffle处理就结束了.曹天博客地址

更多推荐

深入解析hadoop中的小黑盒shuffle

本文发布于:2024-02-06 15:16:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1749951.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:hadoop   小黑盒   shuffle

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!