环形缓冲区-Hadoop Shuffle过程中的利器
这篇文章来自一个读者在面试过程中的一个问题,Hadoop在shuffle过程中使用了一个数据结构-环形缓冲区。
环形队列是在实际编程极为有用的数据结构,它是一个首尾相连的FIFO的数据结构,采用数组的线性空间,数据组织简单。能很快知道队列是否满为空。能以很快速度的来存取数据。 因为有简单高效的原因,甚至在硬件都实现了环形队列。
环形队列广泛用于网络数据收发,和不同程序间数据交换(比如内核与应用程序大量交换数据,从硬件接收大量数据)均使用了环形队列。
环形缓冲区数据结构
Map过程中环形缓冲区是指数据被map处理之后会先放入内存,内存中的这片区域就是环形缓冲区。
环形缓冲区是在MapTask.MapOutputBuffer中定义的,相关的属性如下:
// k/v accounting // 存放meta数据的IntBuffer,都是int en
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
虽然疫情原因无法出门,还是更新一波,getty 1.2.1 版本更新
疫情原因在家,还是用心优化一个版本。祝大家身体健康,中国加油,武汉加油。 getty一个完全基于java 实现的,长得有点像netty的高性能aio网络框架 getty的特点: 1、完全基于java nio2封装,整体代码代码结构很轻量,也非常简单易用。 2、借鉴了netty和其他框架的部分优秀设计思想,如责任链、内存池化、零拷贝等优秀的设计模式。拥有媲美netty的高效性能(有自卖自夸嫌疑)。 3、提供了常用的多个插件(String处理器,protobuf消息处理器,心跳超时处理器、ip过滤等)满足大部分开发场景。 4、getty可直接在安卓环境中使用(api 26+ 或 android 8.0+) 5、getty同时提供了TCP和UDP的支持,并且使用方式几乎一致,大大提高了易用性。 5、handler处理器支持使用过程中的热拔插设计,各处理器可以灵活组合,。 6、框架拥有非常好的拓展性,处理器拓展非常简单,大大降低了开发成本 7、高效的性能和靠谱的稳定性,在使用过程中得到了很好的验证 8、与netty结合使用。使用过程与netty非常类似,只要有netty是使用经验,使用gett...
- 下一篇
大神如何一招完美解决Hadoop集群无法正常关闭的问题!
云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 相信对于大部分的大数据初学者来说,一定遇见过Hadoop集群无法正常关闭的情况。有时候当我们更改了Hadoop内组件的配置文件后,必须要通过重启集群来使配置文件生效。 但往往一stop-all.sh,集群下方总会出现下面的提示: 最开始的时候,我也是看了一个头两个大,这都是啥么情况??? 但问题都出来了,只有迎面解决了~ 我们都知道在Hadoop中控制脚本启动和停止Hadoop后台程序的是哪个脚本。 没错,就是Hadoop-daemon.sh 先让我们利用find命令找到它的位置 find / -name Hadoop-daemon.sh 通过vim /export/servers/Hadoop-2.6.0-cdh5.14.0/sbin/Hadoop-daemon.sh 在文件的最后几行,我们终于找到了答案: 初步分析,如果pid文件不存在就会打印:no xxx to stop 那我们上述出现的情况无非就是Hadoop集群关闭的时候,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8
- Hadoop3单机部署,实现最简伪集群
- CentOS8编译安装MySQL8.0.19
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案