GC overhead limit exceeded : Spark
2015-10-13 10:41
639 查看
我在运行Spark程序的时候报错
伴随着通常有:
这是因为executor的内存不足,导致GC杀死一些任务
登录 http://Master:8080会看到
可以看到在这个应用了,每个节点只用到了512MB,这是spark程序默认的,解决这个问题只要设置VM Options中的spark.executor.memory属性即可。
比如用的IDEA,在Run configuration里设置VM Options:
当然,executor.memory的大小肯定要小于节点的内存大小,不然这个参数设置毫无意义。而节点内存的大小你可以通过登录http://Master:8080(上图)中Workers信息里面看。
若你增加了实际内存,想修改worker内存的值,则在${SPARK_HOME}/conf/spark-env.sh里面修改:
这里其实是各种模式下都设置了,可以根据实际情况参照该文档注释进行个性化设置。
重启Spark后生效,可以登录webui(http://Master:8080)去查看更改成功了没。
上述方法其实治标不治本,更有效的方法当然是优化代码,如某个RDD不用了,可以把它unpersist,诸如此类。
java.lang.OutOfMemoryError:GC overhead limit exceeded
伴随着通常有:
java.lang.OutOfMemoryError:Java heap space org.apache.spark.shuffle.FetchFailedException:Failed to connect to ...
这是因为executor的内存不足,导致GC杀死一些任务
登录 http://Master:8080会看到
可以看到在这个应用了,每个节点只用到了512MB,这是spark程序默认的,解决这个问题只要设置VM Options中的spark.executor.memory属性即可。
比如用的IDEA,在Run configuration里设置VM Options:
-Dspark.executor.memory=4g
当然,executor.memory的大小肯定要小于节点的内存大小,不然这个参数设置毫无意义。而节点内存的大小你可以通过登录http://Master:8080(上图)中Workers信息里面看。
若你增加了实际内存,想修改worker内存的值,则在${SPARK_HOME}/conf/spark-env.sh里面修改:
export SPARK_WORKER_MEMORY=8g export SPARK_EXECUTOR_MEMORY=8g export SPARK_DAEMON_MEMORY=8g
这里其实是各种模式下都设置了,可以根据实际情况参照该文档注释进行个性化设置。
重启Spark后生效,可以登录webui(http://Master:8080)去查看更改成功了没。
上述方法其实治标不治本,更有效的方法当然是优化代码,如某个RDD不用了,可以把它unpersist,诸如此类。
相关文章推荐
- Spark RDD API详解(一) Map和Reduce
- 使用spark和spark mllib进行股票预测
- Spark随谈——开发指南(译)
- Spark,一种快速数据分析替代方案
- eclipse 开发 spark Streaming wordCount
- Spark初探
- Spark Streaming初探
- 搭建hadoop/spark集群环境
- 整合Kafka到Spark Streaming——代码示例和挑战
- Spark 性能相关参数配置详解-任务调度篇
- 基于spark1.3.1的spark-sql实战-01
- 基于spark1.3.1的spark-sql实战-02
- 在 Databricks 可获得 Spark 1.5 预览版
- spark standalone模式 zeppelin安装
- Apache Spark 1.5.0正式发布
- Tachyon 0.7.1伪分布式集群安装与测试
- spark取得lzo压缩文件报错 java.lang.ClassNotFoundException
- tachyon与hdfs,以及spark整合
- hive on spark 编译
- 使用openfire,spark,fastpath webchat搭建在线咨询服务详细图文解说