maptask 的环形缓冲区 重点理解介绍

接下来,会将数据写入内存,内存中这片区域叫做环形缓冲区,缓冲区的作用是批量收集map结果,减少磁盘IO的影响。我们的key/value对以及Partition的结果都会被写入缓冲区。当然写入之前,key与value值都会被序列化成字节数组。
环形缓冲区其实是一个数组,数组中存放着key、value的序列化数据和key、value的元数据信息,包括partition、key的起始位置、value的起始位置以及value的长度。环形结构是一个抽象概念。
缓冲区是有大小限制,默认是100MB。当map task的输出结果很多时,就可能会撑爆内存,所以需要在一定条件下将缓冲区中的数据临时写入磁盘,然后重新利用这块缓冲区。这个从内存往磁盘写数据的过程被称为Spill,中文可译为溢写。这个溢写是由单独线程来完成,不影响往缓冲区写map结果的线程。溢写线程启动时不应该阻止map的结果输出,所以整个缓冲区有个溢写的比例spill.percent。这个比例默认是0.8,也就是当缓冲区的数据已经达到阈值(buffer size * spill percent = 100MB * 0.8 = 80MB),溢写线程启动,锁定这80MB的内存,执行溢写过程。Map task的输出结果还可以往剩下的20MB内存中写,互不影响。

maptask 的环形缓冲区 重点理解介绍相关推荐

  1. 音视频环形缓冲区C语言实现

    目录 一.什么是环形缓冲区 二.为什么使用环形缓冲区 三.代码实现 一.什么是环形缓冲区 环形缓冲区(也称为循环缓冲区)是固定大小的缓冲区,工作原理就像内存是连续的且可循环的一样.在生成和使用内存时, ...

  2. SQL Server 环形缓冲区(Ring Buffer) -- 介绍

    SQL Server 环形缓冲区(Ring Buffer) -- 介绍 以下关于Ring Buffer的介绍转载自: http://zh.wikipedia.org/wiki/%E7%92%B0%E5 ...

  3. Hadoop重点难点:Shuffle过程中的环形缓冲区

    点击上方蓝色字体,选择"设为星标" 回复"面试"获取更多惊喜 这篇文章来自一个读者在面试过程中的一个问题,Hadoop在shuffle过程中使用了一个数据结构- ...

  4. Ring Buffer (circular Buffer)环形缓冲区简介

    https://blog.csdn.net/langeldep/article/details/8888582 关于环形缓冲区的知识,请看这里 http://en.wikipedia.org/wiki ...

  5. 环形缓冲区RingBuff的代码实现

    ~今天我们一起来聊一下环形缓冲区RingBuff又叫LoopBuff等等,都是相同的东西,只是一个名字不同罢了. ~我们在编写代码的时候缓冲区是几乎每个代码都必不可少的东西,比如存放串口接收的数据.做 ...

  6. 环形缓冲区的实现原理(ring buffer)

    消息队列锁调用太频繁的问题算是解决了,另一个让人有些苦恼的大概是这太多的内存分配和释放操作了.频繁的内存分配不但增加了系统开销,更使得内存碎片不断增多,非常不利于我们的服务器长期稳定运行.也许我们可以 ...

  7. 无锁环形缓冲区的详细解释

    由以下博客的分析可以知道,内核的kfifo使用了很多技巧以实现其高效性.比如,通过限定写入的数据不能溢出和内存屏障实现在单线程写单线程读的情况下不使用锁.因为锁是使用在共享资源可能存在冲突的情况下.还 ...

  8. 架构设计:生产者/消费者模式 第6页:环形缓冲区的实现

    2019独角兽企业重金招聘Python工程师标准>>> ◇判断"空"和"满" 上述的操作并不复杂,不过有一个小小的麻烦:空环和满环的时候,R和 ...

  9. 驱动调试(二)-环形缓冲区到文件

    目录 驱动调试(二)-环形缓冲区到文件 目标 框架分析 虚拟文件系统proc dmesg proc_misc_init kmsg_read do_syslog 程序1创建文件 程序2提供读函数 程序3 ...

最新文章

  1. esp32 python-MicroPython for esp32
  2. 关于logrotate工具的日志切割
  3. 【量子位节选摘抄】张亚勤:未来10年AI+生物制药大有可为,我们正开展破壁计划
  4. Xshell选中的同时把内容复制到剪贴板(还可以设置设置文本分隔符)
  5. php7 setcookie无效_PHP setcookie() 函数 | 菜鸟教程
  6. C#的两种类据类型:值类型和引用类型
  7. pitr 原理_PostgreSQL热备原理研究及流复制运用
  8. PostgreSQL中定时job执行(pgAgent)
  9. 微信小程序生命周期钩子函数
  10. 如何在腾讯云搭建自己的网站
  11. 安卓:股票筛选及分析系统
  12. Selenium Web自动化测试框架搭建
  13. 计算机专业法语词汇,法语计算机及网络词汇(4)
  14. 手机查看python代码_30个极简Python代码,拿走即用
  15. springBoot企业微信引入会话存档SDK
  16. 报错解决:SyntaxError: Non-UTF-8 code starting with ‘\xe7‘
  17. vue使用JavaScript的Number方法或正则表达式进行表单验证,判断值是否为数字(包括整数和小数),验证值只能为小数点后一位
  18. Linux常见日志文件和常用命令
  19. 用顺序表创建学生信息花名册
  20. 2021.11.06总结

热门文章

  1. 打印机 未授予用户在此计算机上的请求登录类型 win7,Win7访问网上邻居提示未授予用户在此计算机上的请求登录类型怎么办?...
  2. 数据库知识整理 - 数据库完整性
  3. html space空格符
  4. 阿狸的童话,我的梦:伤感日志分享
  5. Mac 将恢复系统添加到目的磁盘时发生错误
  6. VScode使用gitlab
  7. 基于Linux的智能家居的设计(3)
  8. ubuntu bond
  9. php配置辨别图片形式,基于OpenCV的PHP图像人脸辨别技术(转载)
  10. 图数据库(九):Neo4j中Cypher语言unwind关键字