我在EMR emr-4.3.0上运行了一个带有1个Master和4个节点的spark应用程序
每个人都有5GB内存和2个核心。
以下是我的spark-submit选项
- com.mobi.vserv.driver.Query5kPids1 --num-executors 4
--executor-memory 4g
--executor-cores 2
--driver-memory 4g
但我一直收到以下错误
ERROR executor.CoarseGrainedExecutorBackend:Driver 10.225.19.144:56334解除了关联!关机。
最后Yarn杀死了应用程序大师
ERROR ApplicationMaster:RECEIVED SIGNAL 15:SIGTERM
1)我可以进一步改进num-executors和executor-cores的spark-submit选项。
2)我在Perfomance Graph中看到,只有2个节点CPU的利用率高于50%,而其他2个节点的利用率低于5%。
3)有趣的是,我在2个节点和1个master上运行了相同的应用程序,并且Spark-submit中提供了相同的配置,并且应用程序成功运行。那么这个行为的原因是4个节点答案 0 :(得分:0)
当使用纱线运行spark时,手动强制执行者实例的数量永远不是一件好事,而是使用spark.dynamicAllocation.enabled=true
。
这样火花会礼貌地询问纱线,如果它可以有更多的资源来运行,如果纱线有,它会授予它。
要查找场景的根本原因,您需要查看纱线应用程序ui上的内存纱线数量(namenode上的默认端口8088)。 由于您为每个执行程序指定了自己的内存,因此yarn只能分配该大小的实例,而且,yarn必须为下一个任务保留一组vCore和Memory reserve。
您可以使用“yarn -applicationId app_name_id”来查找纱线上的应用程序日志,如果它有问题。