Spark 集群未动态分配资源给作业

Spark cluster is not dynamically allocating resources to jobs

群集为 HDInsight 4.0,具有 250 GB RAM 和 75 个 VCore。

我 运行 只有一个作业,即使我们有 250 GB 和 75 个 VCore 可供使用,集群始终为该作业分配 66 GB、7 个 VCore 和 7 个 Container。这不是一项工作所特有的。我有 运行 3 个不同的工作,都遇到了这个问题。当我 运行 并行执行 3 个作业时,集群仍在为每个作业分配 66 GB RAM。看起来配置了一些静态设置。

以下是队列设置

我正在使用一个名为 Talend 的工具(类似于 informatica 的 ETL 工具),我在其中有一个 GUI 来创建作业。该工具基于 eclipse,下面是为 spark 配置生成的代码。然后交给LIVY在集群中提交。

sparkConfiguration.set("spark.hadoop.talendStudioTimeZone", java.util.TimeZone.getDefault().getID());
    sparkConfiguration.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");
    sparkConfiguration.set("spark.kryo.registrator", TalendKryoRegistrator.class.getName());
    sparkConfiguration.set("spark.yarn.submit.waitAppCompletion", "true");

    tuningConf.put("spark.yarn.maxAppAttempts", "1");

    tuningConf.put("spark.scheduler.mode", "FIFO");

这是 spark 默认值的屏幕截图

预期行为为 6 个执行程序 * 10 每个执行程序内存 = 60G.

如果想使用分配更多的资源,尝试增加exeucotr的数量,例如24