spark任务出现Lost executor报错的几点解决方案

1、spark.executor.extraJavaOptions="-XX:MaxPermSize=1024m" 
2、spark.rpc.message.maxSize=1024
3、增加executor内存

executor默认的永久代内存是64K,可以看到永久代使用率长时间为99%,通过设置spark.executor.extraJavaOptions适当增大永久代内存,例如:–conf spark.executor.extraJavaOptions="-XX:MaxPermSize=64m"

spark.akka.frameSize是worker和driver通信的每块数据大小,控制Spark中通信消息的最大容量(如task的输出结果),默认为10M,当处理大量数据时,task的输出可能会大于这个值,需要根据实际数据设置一个更高的值。
可通过查看失败的 worker 的日志文件($SPARK_HOME/worker/下面的log文件) 中记录的任务的 Serialized size of result 是否超过10M来确定。

其中增加内存,可以通过设置spark.memory.fraction和spark.memory.storageFraction参数,相关参数的介绍说明详见如下链接
https://www.cnblogs.com/dreamfly2016/p/5720526.html

https://stackoverflow.com/questions/40781354/container-killed-by-yarn-for-exceeding-memory-limits-10-4-gb-of-10-4-gb-physic/42091255#42091255

参考配置如下,已测试通过

/app/spark/bin/spark-submit \
--master yarn \
--executor-cores 5 \
--executor-memory 10g \
--num-executors 40 \
--driver-memory 4g \
--conf spark.yarn.executor.memoryOverhead=51200 \
--conf spark.driver.maxResultSize="0" \
--conf spark.memory.fraction=0.8 \
--conf spark.memory.storageFraction=0.3 \
--conf spark.rpc.message.maxSize=1024 \
--conf spark.executor.extraJavaOptions="-XX:MaxPermSize=2048m" \
--conf spark.sql.shuffle.partitions=1000 \
--conf spark.default.parallelism=1000 \
--conf spark.network.timeout=2000s \
--jars /home/spark/user/xgboost4j-spark-0.7-jar-with-dependencies.jar \
--class com.xx.demo.model_train /home/spark/user/model_train_nWorkers_200_ParamGrid.jar


转载于:https://my.oschina.net/kyo4321/blog/2208922

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值