apache-spark 缓存()/持久()的内存消耗

2024-01-04

当我尝试缓存()或持久化(MEMORY_ONLY_SER())我的 RDD 时,我的 Spark 集群挂起。它运行良好,大约 7 分钟即可计算出结果。如果我不使用cache()。

我有 6 个 c3.xlarge EC2 实例(4 个核心,每个 7.5 GB RAM),总共有 24 个核心和 37.7 GB。

我在 master 上使用以下命令运行我的应用程序:

SPARK_MEM=5g MEMORY_FRACTION="0.6" SPARK_HOME="/root/spark" java -cp ./uber-offline.jar:/root/spark/ assembly/target/scala-2.10/spark- assembly_2.10-0.9.0- incubating-hadoop1.0.4.jar pl.instream.dsp.offline.OfflineAnalysis

该数据集大约有 50GB 的数据,分为 24 个文件。我将其压缩并以 24 个文件存储在 S3 存储桶中(每个文件的大小为 7MB 到 300MB)。

我绝对找不到集群出现这种行为的原因,但似乎 Spark 消耗了所有可用内存并进入 GC 收集循环。当我查看 gc verbose 时,我可以找到如下所示的循环:

[GC 5208198K(5208832K), 0,2403780 secs]
[Full GC 5208831K->5208212K(5208832K), 9,8765730 secs]
[Full GC 5208829K->5208238K(5208832K), 9,7567820 secs]
[Full GC 5208829K->5208295K(5208832K), 9,7629460 secs]
[GC 5208301K(5208832K), 0,2403480 secs]
[Full GC 5208831K->5208344K(5208832K), 9,7497710 secs]
[Full GC 5208829K->5208366K(5208832K), 9,7542880 secs]
[Full GC 5208831K->5208415K(5208832K), 9,7574860 secs]

这最终导致了这样的消息:

WARN storage.BlockManagerMasterActor: Removing BlockManager BlockManagerId(0, ip-xx-xx-xxx-xxx.eu-west-1.compute.internal, 60048, 0) with no recent heart beats: 64828ms exceeds 45000ms

...并停止计算方面的任何进展。这看起来内存被消耗了100%,但我尝试使用内存更大的机器(比如每台30GB),效果是一样的。

这种行为的原因可能是什么?有人可以帮忙吗?


尝试使用更多分区,每个 CPU 应该有 2 - 4 个分区。 IME 增加分区数量通常是使程序更稳定(并且通常更快)的最简单方法。

默认情况下,我认为您的代码将使用 24 个分区,但对于 50 GB 的数据来说,这太少了。我至少会尝试几个 100 个分区。

接下来你使用SPARK_MEM=5g但假设每个节点有 7.5 GB,所以您不妨拥有SPARK_MEM=7500m.

您也可以尝试增加内存比例,但我认为上述内容更有可能有所帮助。

一般要点:使用 HDFS 存储文件而不是 s3,它的速度要快得多。确保在缓存数据之前正确处理数据 - 例如如果您有 100 列的 TSV 数据,但您只使用其中 10 个字段,那么请确保在尝试缓存之前已提取这些字段。

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

apache-spark 缓存()/持久()的内存消耗 的相关文章

  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 如何使用 SparkR 1.6.0 写入 JDBC 源?

    使用 SparkR 1 6 0 我可以使用以下代码从 JDBC 源读取数据 jdbc url lt jdbc mysql localhost 3306 dashboard user
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • React-dnd 多个元素

    我可以轻松地进行react dnd拖动 让单个元素可以拖动 但是我有4个字段的数组 我想使其可拖动 在下面的示例代码中 它通过映射数组创建四个框 每个框都有一个 element 的类名 这应该使它们都可以拖动 但它们不会移动 这是我的拖动代
  • 对话框中的Viewpager?

    我正在尝试创建一个对话框 您可以在其中单击 下一步 按钮以向右滑动到下一个屏幕 我正在使用 ViewPager 和适配器来做到这一点 final Dialog dialog new Dialog this dialog requestWin
  • 协变对象初始值设定项?

    假设我有一个类 它的属性是字典 使用对象初始值设定项我可以使用以下语法 我认为看起来很干净 new MyClass Table test true test false 但是 在初始化程序之外我不能这样做 this Table test t
  • 点击颤动时停止 GIF 动画

    我是颤振的新手 我尝试在单击时暂停 GIF 图像的动画 并在第二次单击时恢复动画 但我不知道如何在 flutter 中实现它 我为此使用资产图像 Image asset images xyz gif 但问题是图像不断动画 因此 任何人都知道
  • 带 ID 的脚本标签?

    大多数现代浏览器是否支持脚本标签中的 id 例如 我问的原因是 Eclipse 显示一条警告 指出 未定义的属性名称 但当我使用 jQuery 选择器获取脚本元素的其他属性时 它在 Google Chrome 中工作正常 W3Schools
  • 对于具有compileOnly依赖项的单元测试,如何避免在运行时重新声明可用性的依赖项?

    我目前正在使用 Gradle 构建一个项目 它依赖于 我在编译时需要的第三方组件 但将在运行时提供 在 Maven 中我会将这种依赖声明为provided 在 Gradle 中我将其声明如下 compileOnly group org ap
  • 在迭代到循环的下一次迭代之前完成 FOR 循环内的所有函数

    假设我有一个类似的功能 var bigArray 1 2 3 4 5 n for var i 0 i
  • MKMapView MKPointAnnotation 点击​​事件

    我有一个注释列表 MKPointAnnotation 我有一个用于整个视图的 UIViewController MKMapView 实现控制器 我认为它对于检测用户与地图的交互很有用 我自己的 MKPointAnnotation 实现 子类
  • 具有不同列名的 pandas 数据帧上的 pd.corrwith

    我想以有效的方式获得 x1 和 y 中三列中每一列之间的皮尔逊 r 看来 pd corrwith 只能计算具有完全相同列标签的列 例如x 和 y 这似乎有点不切实际 因为我认为计算不同变量之间的相关性将是一个常见问题 In 1 import
  • 在Java中清除控制台屏幕[重复]

    这个问题在这里已经有答案了 是否有任何选项可以像 C 中的 clrscr 一样清除 Java 中的控制台屏幕 作为肮脏的黑客 我喜欢 msparer 的解决方案 我见过的一种更肮脏的方法 我自己永远不会这样做 我发誓 真的 是向控制台写入一
  • jQuery 未加载

    我正在使用 php 当我在谷歌服务器上使用 jquery 1 3 2 min js 时 它会加载并且一切运行正常 但是当我尝试使用我下载到我的服务器上的那个时 Firebug 给了我这个 1 2 3 4 5 h1 Forbidden h1
  • 更快的 numpy 笛卡尔到球坐标转换?

    我有来自 3 轴加速度计 XYZ 的 300 万个数据点数组 我想向包含等效球面坐标 r theta phi 的数组添加 3 列 下面的代码可以工作 但看起来太慢了 我怎样才能做得更好 import numpy as np import m
  • Python 从文件读取到多个列表

    我不认为有人可以指出我正确的方向 我有点想知道如何最好地从文本文件中提取值 然后将它们分解并将它们放回到与相应值相同的位置的列表中 抱歉 如果这还不清楚 也许这会让它更清楚 这是输出文件的代码 while loop with open va
  • 大文件的 Windows fsync (FlushFileBuffers) 性能

    来自有关确保数据位于磁盘上的信息 http winntfs com 2012 11 29 windows write caching part 2 an overview for application developers http wi
  • 如何在 Expect 脚本中访问环境变量?

    我想访问 Expect 脚本内的 PATH 环境变量 我怎样才能做到这一点 我的实际脚本是 usr bin expect set timeout 300 send echo PATH r 它的输出是 can t read PATH no s
  • 未从 cordova apk 加载本机库

    我正在制作一个 cordova 插件 它将是 jar 文件及其两个 so 依赖项的简单包装器 我之前已经在 Android Studio 的普通 Android 应用程序中尝试过 通过将本机库复制到 jniLibs armeabi 文件夹中
  • 插件 'org.apache.maven.plugins:maven-jboss-as-plugin' 不存在或找不到有效版本

    我遇到了 Jboss AS 7 1 1 最终部署的部署错误 如所述无法连接到远程 localhost 9999 连接超时 Jboss 7 1 1 Final https stackoverflow com questions 1575775
  • iOS 10 应用程序终止时推送通知?

    升级到 iOS 10 后 我遇到了有关推送通知的问题 我使用的是 Swift3 在正常情况下 当应用程序打开或应用程序仍在后台时 一切正常 可以按照我的逻辑接收推送通知和更新数据 但是 当应用程序终止时 当应用程序变为活动状态时 我无法处理
  • 您将如何在多个类别之间共享随机值?

    我想创建一个随机 int 值以在多个类中使用 每次我创建这些类的一组新实例时 我都希望将这个新的随机 int 值用于所有这些实例 但随机值应该是相同的 简而言之 我希望创建一个随机索引 并在多个共同生成数据的类中使用该索引 这个随机值是否应
  • apache-spark 缓存()/持久()的内存消耗

    当我尝试缓存 或持久化 MEMORY ONLY SER 我的 RDD 时 我的 Spark 集群挂起 它运行良好 大约 7 分钟即可计算出结果 如果我不使用cache 我有 6 个 c3 xlarge EC2 实例 4 个核心 每个 7 5