gpt4 book ai didi

hadoop - 为什么会发生Hadoop Spilling?

转载 作者:可可西里 更新时间:2023-11-01 14:20:47 26 4
gpt4 key购买 nike

我是 Hadoop 系统的新手,处于学习阶段。

我在 Shuffle 和 Sort 阶段注意到一件事,只要 MapOutputBuffer 达到 80%(我认为这也可以配置),Spill 就会发生。

现在为什么需要溢出阶段?

是不是因为MapOutputBuffer是一个循环缓冲区,如果我们不清空它可能会导致数据覆盖和内存泄漏?

最佳答案

我写了一篇涵盖该主题的好文章:http://0x0fff.com/hadoop-mapreduce-comprehensive-description/

一般来说:

  • 当没有足够的内存来容纳所有映射器输出时,就会发生溢出。为此可用的内存量由 mapreduce.task.io.sort.mb
  • 设置
  • 当 80% 的缓冲区空间被占用时会发生这种情况,因为溢出是在单独的线程中完成的,不会干扰映射器。如果缓冲区达到 100% 使用率,则映射器线程必须停止并等待溢出线程释放空间。为避免这种情况,选择 80% 的阈值
  • 溢出至少发生一次,当映射器完成时,因为映射器的输出应该被排序并保存到磁盘以供 reducer 进程读取。并且没有必要为最后一个“保存到磁盘”发明一个单独的功能,因为通常它执行相同的任务

关于hadoop - 为什么会发生Hadoop Spilling?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27890887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com