spark-submit 提示错误java.lang.IllegalArgumentException: System memory 468189184 must be at least 4.7185

在运行spark-submit时会报错,是因为内存不足导致的,但是配置了driver-memory和executor-memory时都不行,报错:

ERROR SparkContext: Error initializing SparkContext.

java.lang.IllegalArgumentException: System memory 468189184 must be at least 4.718592E8. Please use a larger heap size.

通过查看spark源码,发现源码是这么写的:

/**

   * Return the total amount of memory shared between execution and storage, in bytes.

   */

  private def getMaxMemory(conf: SparkConf): Long = {

    val systemMemory = conf.getLong("spark.testing.memory", Runtime.getRuntime.maxMemory)

    val reservedMemory = conf.getLong("spark.testing.reservedMemory",

      if (conf.contains("spark.testing")) 0 else RESERVED_SYSTEM_MEMORY_BYTES)

    val minSystemMemory = reservedMemory * 1.5

    if (systemMemory < minSystemMemory) {

      throw new IllegalArgumentException(s"System memory $systemMemory must " +

        s"be at least $minSystemMemory. Please use a larger heap size.")

    }

    val usableMemory = systemMemory - reservedMemory

    val memoryFraction = conf.getDouble("spark.memory.fraction", 0.75)

    (usableMemory * memoryFraction).toLong

  }

主要是标黑的地方的问题,获取了配置参数:spark.testing.memory参数,所以解决方法如下:

方法1:在源代码中加入 val conf=new SparkConf).setAppName("s")

                         conf.set("spark.testing.memory","2147480000") //后面的值大于512M即可。

方法2:可以在Eclipse的Run Configuration处,有一栏是Arguments,下面有VMarguments,在下面添加下面一行(值也是只要大于512m即可)

-Dspark.testing.memory=1073741824

方法3:在saprk提交方式是:yarn-cluster模式时,在spark-default.conf文件中配置参数spark.testing.memory=1073741824 

还有配置VM 的内存也是在该文件中配置

spark.driver.extraJavaOptions -XX:PermSize=256M -XX:MaxPermSize=512M


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值