pyspark spark.executor.memory是每个核心还是每个节点?

时间:2016-10-13 16:30:38

标签: apache-spark pyspark

我的一个节点在我的spark群集中有24个核心和124Gb ram。当我将spark.executor.memory字段设置为80g时,是否期望每个节点或每个核心能够使用80g ram?

1 个答案:

答案 0 :(得分:1)

每个执行程序,可以配置为具有多个核心。您可以指定以下相关设置:

  • spark.executor.cores - 每个执行者应拥有多少个核心
  • spark.executor.instances - 整个群集中总共有多少执行程序
  • spark.executor.memory - 为每个执行程序分配多少RAM
  • spark.driver.memory - 为驱动程序提供多少内存

您可以选择是否要创建每个执行程序只有一个核心的小型执行程序,或者一个单一执行程序。通常我发现最好去中间的某个地方。每个执行程序拥有多个内核允许spark在内核之间共享内存,例如广播数据,但是拥有一个巨大的执行程序意味着任何内核中的崩溃都将终止整个执行程序中的所有任务。

您还需要确保为驱动程序和操作系统留下一些内核和RAM。因此,对于实际设置,您希望执行程序内存类似于:

NUM_EXECUTORS =(desired_total_executor_cores / num_cores_per_executor) EXECUTOR_RAM =(desired_total_executor_ram / NUM_EXECUTORS)