如何设置Spark配置以在AWS上使用TASK节点?

时间:2020-06-08 11:51:26

标签: amazon-web-services apache-spark cluster-computing amazon-emr

我不是spark配置专家,并且任务节点有问题。我在AWS中的集群有1个主节点,3个核心节点和5个任务节点。我只能在主节点和3个核心节点上看到负载,而任务节点却什么也没做。

实例:

  • 核心节点:4个vCore,16Gib内存
  • 任务节点:4个vCore,8Gib内存

我的配置:

    .set("spark.executors.cores", "5")\
    .set("spark.submit.deployMode", "cluster")\
    .set("spark.yarn.executor.memoryOverhead", "1024")\
    .set("spark.sql.shuffle.partitions","108")\
    .set("spark.default.parallelism", "108")\
    .set("spark.yarn.node-labels.enabled","true")\
    .set("spark.yarn.node-labels.am.default-node-label-expression", "CORE")\
    .set("spark.yarn.executor.nodeLabelExpression","TASK")\
    .set("spark.yarn.nodemanager.vmem-check-enabled", "false")\
    .set("spark.yarn.node-labels.configuration-type", 'distributed')\
    .set("spark.memory.fraction", "0.8")\
    .set("spark.memory.storageFraction", "0.2")\
    .set("maximizeResourceAllocation","true")\ 

配置中是否有任何选项可以解决此问题?

1 个答案:

答案 0 :(得分:1)

我认为没有单独的节点级别,称为TASK

任务是默认节点级别的一部分。如果在群集中看到,我正在运行10个TASK节点,但它是默认分区的一部分。因此,删除属性.set("spark.yarn.executor.nodeLabelExpression","TASK")

YARN node levels

您还可以将其添加到您的spark配置中吗?

spark.dynamicAllocation.enabled=true

我也不认为您需要指定这两个属性。 在yarn-site.xml中,它已经配置。 .set("spark.yarn.node-labels.enabled","true")\ .set("spark.yarn.node-labels.am.default-node-label-expression", "CORE")

enter image description here

相关问题