【问题标题】:Spark Configuration: memory/instance/coresSpark 配置:内存/实例/核心
【发布时间】:2014-12-26 00:56:42
【问题描述】:

最近我发现自己对不同的 SPARK 设置 spark.executor.memorySPARK_WORKER_MEMORYSPARK_MEMSPARK_MASTER_MEMORY 以及与 SPARK_WORKER_INSTANCESSPARK_WORKER_CORES 的关系感到有些困惑

我找到了这篇文章,但它没有讨论 SPARK_MASTER_MEMORY Spark Configuration: SPARK_MEM vs. SPARK_WORKER_MEMORY

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    首先,关于术语的几句话。 Spark master 是协调从属资源分配的应用程序。 Master 不执行任何计算。 Master只是资源管理器。

    Spark worker 是工作节点上的应用程序,用于协调给定工作节点上的资源。

    Spark executor 是由 spark worker 创建的应用程序,它在工作节点上为驱动程序执行任务。

    查看此文档以获取更多详细信息 - http://spark.apache.org/docs/latest/cluster-overview.html

    spark.executor.memory - 是执行程序的内存量。此内存用于给定的用户任务。

    SPARK_WORKER_MEMORY - worker 可以使用多少系统内存在节点上创建执行程序。例如,您在节点上有 64gb。您将 SPARK_WORKER_MEMORY 设置为 60gb。这意味着您可以创建 2 x 30g 执行器或 10 x 6gb 执行器等等。

    SPARK_MEM AFAIK 不再使用。我在当前文档中找不到它

    SPARK_MASTER_MEMORY 是 master 的内存。不应该太高:)

    SPARK_WORKER_CORES 是每个 worker 执行器使用的核心总数

    SPARK_WORKER_INSTANCES 是每个工作节点的工作人员数量。

    这里描述了所有这些参数 - http://spark.apache.org/docs/latest/spark-standalone.html

    【讨论】:

    • 谢谢@1esha,如果 SPARK_WORKER_MEMORY = 60gb,我们需要 2 个执行器,那么 spark.executor.memory = 30g,还是会自动设置?或者可以将 spark.executor.memory 设置为 10g 之类的其他值,然后将 SPARK_WORKER_MEMORY 更改为 20g 并使用 2 个执行器?
    • Oscar,SPARK_WORKER_MEMORY 是每个节点的执行程序的总内存。如果您有两个每个 64gb 的节点,并且希望每个节点最多花费 60gb 用于 spark 执行器,请将 SPARK_WORKER_MEMORY 设置为 60gb。这为执行者分配了每个节点 60gb 的空间。接下来,在您的驱动程序中,您可以设置spark.executor.memory。它指定每个节点从 SPARK_WORKER_MEMORY 分配多少内存。如果将其设置为 10gb,则总共需要 20gb - 每个节点需要 10gb。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    相关资源
    最近更新 更多