首页 > 解决方案 > Spark SQL:所有执行者的活动任务都不相同

问题描述

spark 版本:2.4.4 scala:2.11 部署在 aws emr

集群配置: 在此处输入图像描述

火花会议:

          "--deploy-mode",
          "cluster",
          "--master",
          "yarn",
          "--conf",
          "spark.sql.session.timeZone=Europe/Paris",
          "--conf",
          "spark.yarn.maxAppAttempts=1",
          "--conf",
          "spark.driver.maxResultSize=4g",
          "--executor-cores",
          "5",
          "--conf",
          "spark.sql.autoBroadcastJoinThreshold= 1073741824",
          "--executor-memory",
          "11g",
          "--driver-memory",
          "12g",

Q1:我会加载一个超过 60G 的文件夹,一个执行者比其他执行者多一个任务,我不明白为什么要多一个任务。

是不是因为一组值的散列函数的结果更大,所以这个执行器需要再完成一项任务? 在此处输入图像描述 Q2:为什么我只有 8 个执行者?

我的集群大小为 30GB RAM 和 aws 文档,超过 22GB 可用于应用程序,这就是我为每个执行程序配置 11GB 的原因,我预计有 20 个执行程序,因为我有 10 台机器。 在此处输入图像描述

如果我设置--executor-memory 6g,spark 最多会启动 20 个执行程序,如果我设置--executor-memory 8g,spark 最多会启动 14 个执行程序。我对 AWS EMR 和每台机器的容量并不十分清楚。

标签: apache-sparkapache-spark-sql

解决方案


您是否尝试设置--num-executors2或更多以查看会发生什么?

遵循本优化 Spark 应用程序的最佳实践指南中提到的规则:Spark 应用程序的执行程序核心和内存的分布


推荐阅读