zstu 发表于 2017-7-26 18:00 提交的时候,添加个参数即可。 --driver-java-options 找到源文件麻烦了,而且你也不能改。 |
yaojiank 发表于 2017-7-26 17:56 driver设置了1g的。其他的都是默认的。那个spark-class文件是指哪个文件 |
zstu 发表于 2017-7-26 17:53 Driver的JVM参数: -Xmx,-Xms,如果是yarn-client模式,则默认读取spark-env文件中的SPARK_DRIVER_MEMORY值,-Xmx,-Xms值一样大小;如果是yarn-cluster模式,则读取的是spark-default.conf文件中的spark.driver.extraJavaOptions对应的JVM参数值。 PermSize,如果是yarn-client模式,则是默认读取spark-class文件中的JAVA_OPTS="-XX:MaxPermSize=256m $OUR_JAVA_OPTS"值;如果是yarn-cluster模式,读取的是spark-default.conf文件中的spark.driver.extraJavaOptions对应的JVM参数值。 GC方式,如果是yarn-client模式,默认读取的是spark-class文件中的JAVA_OPTS;如果是yarn-cluster模式,则读取的是spark-default.conf文件中的spark.driver.extraJavaOptions对应的参数值。 以上值最后均可被spark-submit工具中的--driver-java-options参数覆盖。 |
yaojiank 发表于 2017-7-26 17:50 没多大的数据量。写了一个例子 val data = sc.parallelize(Array(1,3),(4,5)) println(data.count)也是报同样的错,那个jvm是多少是指什么? |
zstu 发表于 2017-7-26 17:44 看你的数据量。内存是一方面,jvm是多少 |
本帖最后由 zstu 于 2017-7-26 17:48 编辑 yaojiank 发表于 2017-7-26 17:37 我是用的默认driver内存512M,SparkPi运行driver端占不了那么大的内存吧,增加到1g也不行。也是同样的错误。 |
先从原理来讲:yarn-cluster模式下,driver运行在AM(Application Master)中,它负责向YARN申请资源,并监督作业的运行状况。当用户提交了作业之后,就可以关掉Client,作业会继续在YARN上运行。 yarn-client模式下,Application Master仅仅向YARN请求executor,client会和请求的container通信来调度他们工作,Client不能关闭。因为driver在客户端。 这里产生异常,是因为driver暂用了内存。可能你的内存或则jvm过小造成的。 |