了解 Spark shuffle 溢出

2023-11-21

如果我理解正确的话,当一个reduce任务开始收集它的输入shuffle块(来自不同map任务的输出)时,它首先将它们保存在内存中(Q1)。当执行器的 shuffles 保留内存量(在内存管理更改之前(Q2))耗尽时,内存中的数据将“溢出”到磁盘。如果spark.shuffle.spill.compress为true,那么内存中的数据将以压缩的方式写入磁盘。

我的问题:

Q0:我的理解正确吗?

Q1:reduce任务中收集的数据总是未压缩的吗?

问题 2:如何估计可用于收集 shuffle 块的执行器内存量?

问题 3:我见过这样的说法“当数据集无法容纳在内存中时,就会发生洗牌溢出”,但据我了解,只要洗牌保留的执行程序内存足够大,可以包含其所有(未压缩的)洗牌输入块ACTIVE 任务,则不应发生溢出,对吗?

如果是这样,为了避免溢出,需要确保最终在所有并行归约端任务中的(未压缩的)数据小于执行器的随机保留内存部分?


1.6前后内存管理存在差异。在这两种情况下,都有执行内存和存储内存的概念。不同的是,1.6之前它是静态的。这意味着有一个配置参数指定有多少内存用于执行和存储。当其中任何一个都不够时,就会发生泄漏。

Apache Spark 必须解决的问题之一是并发执行:

  • 并行执行的不同阶段
  • 不同的任务,例如聚合或排序。

  1. 我想说你的理解是正确的。

  2. 内存中的内容未压缩,否则无法处理。执行内存以块的形式溢出到磁盘,并且正如您提到的可以压缩。

  3. 好吧,从1.3.1开始你可以配置它,然后你就知道大小了。至于在任何时刻剩下的内容,您可以通过查看执行程序进程来看到,例如jstat -gcutil <pid> <period>。它可能会告诉您有多少可用内存。了解配置了多少内存用于存储和执行,尽可能少default.parallelism尽可能给你一个线索。

  4. 确实如此,但很难推理;数据中可能存在偏差,例如某些键比其他键具有更多值,存在许多并行执行等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 Spark shuffle 溢出 的相关文章

随机推荐

  • Python 中的字符串混淆

    我有一个必须传递给方法的密码字符串 一切正常 但我觉得以明文形式存储密码不太舒服 有没有办法混淆字符串或真正加密它 我知道混淆可以进行逆向工程 但我认为我至少应该尝试稍微掩盖密码 至少它对于索引程序或快速浏览我的代码的杂散眼来说是不可见的
  • 如何在android项目api 3(android 1.5)中使用Base64(自api 8(2.2)起包含在android中)?

    我需要在我的应用程序上使用 Base64 import android util Base64 但是 Base64 包含在 android 2 2 中 api lvl 8 然后 当我进行导入时 我收到此错误 Base64 无法解析 并且不让
  • 每个VST SDK似乎都是针对C++的,那么C#呢?

    我想开始制作 VSTi 更具体地说 midi 那些不产生任何声音而只是将 midi 数据输出到其他 vst 插头 琶音器 和弦工具等 的 现在我刚刚买了 C 书籍 认为这将是一门不错的语言 不仅仅是 vst 编程 但每个人都一直说 C 是正
  • 如何以编程方式卸载flutter中的应用程序?

    我正在 flutter 中构建一个启动器应用程序 但我无法添加卸载功能 请帮我 添加权限在manifest file
  • 清理 SQL 数据

    谷歌出现了各种关于清理网络访问查询的讨论 但我没有找到任何解决我所关心的问题的内容 在 C 程序中清理用户输入数据 这必须通过可逆转变来完成 而不是通过移除来完成 作为问题的一个简单例子 我不想破坏爱尔兰名字 最好的方法是什么 是否有任何库
  • 将图像绘制到面板控件上会在调整大小时产生伪像

    目前我正在尝试做我认为简单的任务 将图像绘制到整个区域Panel control在 Windows 窗体中 请暂时忽略我可以使用BackgroundImage财产 要绘制的图像如下所示 IE 一个黄色框 周围有 1 像素蓝色框 为了绘图 我
  • 在 GCC 中编译而不生成输出文件

    gcc c somefile c无需链接即可编译并生成相应的somefile o 是否可以编译文件gcc不生成任何输出文件 我知道还有其他方法可以实现此目的 但我很好奇是否有一个标志专门用于正在经历寻找错误 警告的源代码 您可能会喜欢 fs
  • 在 Joomla 框架内强制 PHP 下载文件

    我有一些 PHP 代码 可以在数据库上运行查询 将结果保存到 csv 文件 然后允许用户下载该文件 问题是 csv 文件包含实际 csv 内容周围的页面 HTML 我已经在这里阅读了所有相关问题 包括this one 不幸的是 我的代码存在
  • 从自定义源(非标准 XML)加载 WCF 配置(针对服务器 + 客户端)

    我一直在尝试找到一种方法从备用源 而不是标准的 web config app config 加载我的 WCF 服务配置 巨大的 XML 配置数据 BLOB 我们在受限环境中运行 无法访问服务器的文件系统 因此我们无法自己对 WCF 配置进行
  • 升级到 Gradle 5 后 Querydsl 注释处理器问题

    我有一个 gradle 脚本 它从 Mongo 带注释的实体生成 querydsl 类 到目前为止它可以正常工作 但是升级到 Gradle 5 后我遇到了一个问题 What went wrong Execution failed for t
  • “id 无法解析或不是字段”错误?

    我不断收到此错误 我应该做吗id一个字段 我的代码是 public void onCreate Bundle icicle super onCreate icicle setContentView R layout main ImageVi
  • MySQL 和嵌套集:慢 JOIN(不使用索引)

    我有两张桌子 地区 CREATE TABLE localities id int 11 NOT NULL AUTO INCREMENT name varchar 100 NOT NULL type varchar 30 NOT NULL p
  • Winform 启动画面 - VB.NET - 计时器

    我的应用程序和该表单上有一个启动屏幕 我有一个计时器 Private Sub Splash Load ByVal sender As Object ByVal e As System EventArgs Handles Me Load Sp
  • symfony2:在控制器操作内部设置表单外部的表单字段的值

    我需要设置 symfony2 表单元素的值 我使用一个doctrine2实体 一个Symfony Component Form AbstractType以及我的控制器操作中的 createForm 方法 saleDataForm this
  • iphone:如果浮点数为负数,则转换为无符号整数的浮点数将设置为 0?

    试试看 volatile float bob 344 0f unsigned int fred unsigned int bob printf d n fred 输出将为 0 显然 我希望它能够回绕 就像我从一个有符号的 int 转换为一个
  • 如何将 Sql Server 2008 DateTimeOffset 转换为 DateTime

    我希望转换一个有DATETIMEOFFSET场 下降到DATETIME字段但通过注意偏移量来重新计算时间 实际上 这将值转换为UTC eg CreatedOn 2008 12 19 17 30 09 0000000 11 00 将被转换为
  • 透明背景

    如何让背景50 透明 假设 AbsoluteLayout 的背景很暗 但您仍然可以看到它 您可以将透明主题应用于所需的活动 在 res values style xml 中创建新样式
  • Rails 5.1 中还需要 `require jquery_ujs` 吗?

    我正在我的中安装 jQuery5 1 xRails 应用程序通过jquery rails gem 在 gem 设置中 他们建议将这些行添加到application js默认情况下 require jquery require jquery
  • 使用 nginx 在同一域上提供 React 前端和 php 后端

    我有一个 React 前端和一个 Symfony 后端 我试图在同一个域上提供服务 React 前端需要提供资产 如果存在 否则需要提供回退服务index html 我想在以下情况下提供 php Symfony 应用程序 api位于请求 u
  • 了解 Spark shuffle 溢出

    如果我理解正确的话 当一个reduce任务开始收集它的输入shuffle块 来自不同map任务的输出 时 它首先将它们保存在内存中 Q1 当执行器的 shuffles 保留内存量 在内存管理更改之前 Q2 耗尽时 内存中的数据将 溢出 到磁