【问题标题】:pyspark spark.executor.memory is per core or per node?pyspark spark.executor.memory 是每个核心还是每个节点?
【发布时间】:2016-10-13 16:30:38
【问题描述】:

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

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    它是 per executor,可以配置为具有多个核心。您可以指定以下相关设置:

    • spark.executor.cores - 每个执行器应该有多少核心
    • spark.executor.instances - 整个集群共有多少个执行器
    • spark.executor.memory - 为每个执行程序分配多少 RAM
    • spark.driver.memory - 给驱动程序多少内存

    您可以选择是制作每个执行器只有 1 个核心的小型执行器,还是制作一个单片执行器。通常,我发现最好去中间的某个地方。每个执行器拥有多个核心允许 spark 在核心之间共享内存以用于广播数据之类的事情,但是拥有一个巨大的执行器意味着任何核心中的崩溃都会杀死整个执行器中的所有任务。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-29
      • 2016-10-11
      • 1970-01-01
      • 2016-05-02
      • 1970-01-01
      • 2018-05-19
      • 2017-06-29
      • 2021-11-19
      相关资源
      最近更新 更多