当前位置: 首页 > 知识库问答 >
问题:

datastax spark java堆空间错误

乌杰
2023-03-14

我正在尝试使用scala执行小计算。Im使用datastax-4.6。我有6个节点,每个16gb RAM和8核。当我尝试执行scala程序时,它会显示以下错误。

错误ActorSystemImpl:线程[sparkDriver-akka.actor.default-dispatcher-17]关闭ActorSystem[sparkDriver]java时出现未捕获的致命错误。lang.OutOfMemoryError:Java堆空间。我为每台机器分配了2核,执行器内存为4gb,驱动程序内存为4gb。有什么建议吗??。

共有1个答案

孟永望
2023-03-14

直接引用Russ关于Common Spark故障排除的文章(您应该阅读它!):

火花执行器OOM:

如何在Spark上设置内存参数一旦应用程序运行,您将看到的下一个最有可能的错误是Spark执行器上的OOM。Spark是一个非常强大的内存计算工具,但它的强大功能带有一些尖锐的边缘。执行器OOM'ing最常见的原因是应用程序试图缓存或加载太多信息到内存中。根据您的用例,有几种解决方案:

1)增加作业的并行性。尝试增加作业中的分区数量。通过将工作拆分为更小的数据集,在给定时间内存中必须驻留的信息更少。对于Spark Cassandra Connector作业,这意味着减少拆分大小变量。变量spark.cassandra.input.split.size可以在上面的命令行或SparkConf对象中设置。对于其他RDD类型,请查看它们的api以确定它们如何准确确定分区大小。

2)增加存储分数变量,spark.storage.memory分数。这可以在命令行或SparkConf对象中如上设置。此变量准确设置JVM将有多少用于RDD的缓存和存储。您可以将其设置为0到1之间的值,描述执行器JVM内存的哪一部分将专用于缓存RDD。如果您的作业需要很少的随机内存,但会使用大量缓存的RDD,请增加此变量(例如:缓存RDD然后对其执行聚合。)

3) 如果所有这些都失败了,您可能只需要在每个工作线程上增加ram。对于DSE用户,请调整spark env。sh(或dse 4.6中的dse.yaml文件)文件,以增加为SPARK作业保留的SPARK\u MEM。要使这些新内存限制生效,您需要重新启动工作线程(dse sparkworker重新启动)然后通过设置spark来增加应用程序请求的ram量。执行人。命令行或SparkConf对象中的内存变量。

 类似资料:
  • 在Ubuntu中,当我运行hadoop示例时: 在日志中,我得到的错误为: 信息映射。JobClient:任务Id:尝试\u 201303251213\u 0012\u m\u000000 \u 2,状态:失败错误:Java堆空间13/03/25 15:03:43信息映射。JobClient:任务Id:trunt\u 201303251213\u 0012\u m\00000 1\u 2,状态:F

  • 我在向服务器调用API时出错。以下是日志: 附截图:Java内存使用率系统CPU使用率 我还需要知道这句话的意思: HikariPool-1-检测到线程饥饿或时钟跳跃(管家delta=50s527ms107µs731ns)。 有人能帮我解释一下这个错误吗?

  • 我正在Android Studio中开发一个Android应用程序,今天当我按下“运行”按钮时,它突然无法编译。错误如下: 错误:任务': app: pack ageInstantRunResourcesDebug'执行失败。Java堆空间 我试着清理并重建这个项目,但没有成功。

  • 我正在尝试使用Apache POI XSSF库解析一个大型excel文件(.xlsx)。100000行之后,它抛出堆空间错误。我试着增加记忆,但没用。是否有解决此问题的方法?或者有人可以建议我另一个库来解析大型excel文件。 谢啦!

  • 问题内容: 我最近在具有24个CPU和32GB RAM的服务器上使用了带有Ipython的PySpark。它仅在一台机器上运行。在我的过程中,我想收集以下代码中给出的大量数据: 当我做 它给我outOfMemory错误。。另外,此错误发生后,我无法在Spark上执行任何操作,因为它失去了与Java的连接。它给。 看起来堆空间很小。如何设置更大的限制? 编辑 : 我在运行之前尝试过的事情: 我根据此

  • 问题内容: 我在执行多线程程序时遇到以下错误 上面的错误发生在其中一个线程中。 据我所知,堆空间仅由实例变量占用。如果这是正确的,那么为什么在运行一段时间后会出现此错误,因为在创建对象时分配了实例变量的空间。 有什么办法可以增加堆空间? 我应该对程序进行哪些更改,以使其占用更少的堆空间? 问题答案: 如果要增加堆空间,可以 -在命令行上使用。默认情况下,这些值基于JRE版本和系统配置。你可以在Ja