【问题标题】:Spark based application failing in JDK 8?基于 Spark 的应用程序在 JDK 8 中失败?
【发布时间】:2017-10-07 09:35:31
【问题描述】:

我正在运行作为 Spark 安装一部分的内置示例示例,并在带有 JDK 8 的 Hadoop 2.7 + Spark 中运行。但是它给了我以下错误:

线程“主”java.lang.OutOfMemoryError 中的异常:无法分配 新的 DoublePointer(10000000):totalBytes = 363M,physicalBytes = 911M

在 org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187) 在 org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212) 在 org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 引起:java.lang.OutOfMemoryError: 物理内存使用量太大 高:physicalBytes = 911M > maxPhysicalBytes = 911M 在 org.bytedeco.javacpp.Pointer.deallocator(Pointer.java:572) 在 org.bytedeco.javacpp.Pointer.init(Pointer.java:121)

我也按照以下 SO question 进行了配置更改。

除此之外,我还提到了这些链接:YARN-4714HADOOP-11090

在 JDK 8 中运行 Spark 是否有任何问题。

以下是我在简单集群中运行的软件版本:

jdk-8u131-linux-x64
scala-2.12.2
spark-2.1.1-bin-without-hadoop
hadoop-2.7.0

当我在 JDK 7 中运行程序时有一件事,它运行良好,但在 JDK 8 中却失败了。

有没有人遇到过这个问题,如果有,解决方法是什么? hadoop , spark, scala 不是还不能兼容JDK 8吗?

谁能帮帮我?

【问题讨论】:

  • Java 8 没有常量池,尝试在 JVM 8 上增加 Xmx
  • @T.Gawęda:谢谢你们的cmets,你能详细说明一下吗?
  • 抱歉 - 这是 PermGen ;) 关于更改的文章 karunsubramanian.com/websphere/…
  • 感谢您的信息!
  • 你可以尝试通过在 spark-defaults.conf spark.driver.extraJavaOptions -Xmx1024M spark.executor.extraJavaOptions -Xmx1024M 中设置以下来增加内存

标签: java scala hadoop apache-spark


【解决方案1】:

尚未针对 Scala 2.12 发布 Spark。我不知道它是否解决了最初的问题,但无论如何你应该切换到 Scala 2.11。

【讨论】:

【解决方案2】:

您收到 OOM 错误表明 java 启动内存不足。正如您提到的 JDK7 它运行良好。与 JDK7 相比,升级到 JDK8 需要更多内存。请在此处查看 JDK8 内存要求 - https://dzone.com/articles/java-8-permgen-metaspace

【讨论】:

    猜你喜欢
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多