【问题标题】:Running Spark on heterogeneous cluster in standalone mode以独立模式在异构集群上运行 Spark
【发布时间】:2020-05-01 13:28:52
【问题描述】:

我有一个由 3 个节点组成的集群,每个节点有 12 个核心,分别有 30G、20G 和 10G 的 RAM。当我运行我的应用程序时,我将执行程序内存设置为 20G,这会阻止执行程序在 10G 机器上启动,因为它超过了从属内存阈值,它也未充分利用 30G 机器上的资源。我搜索了但是没有找到任何方法可以根据节点的容量动态设置执行器内存,那么如何配置集群或我的 Spark 作业以充分利用集群的资源?

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    解决方案是让更多的执行者使用更少的内存。您可以通过拥有 6-10G 执行器来使用所有内存(10G 节点上 1 个,20G 节点上 2 个,30G 节点上 3 个)。或者通过拥有 12-5G 执行器。等等

    【讨论】:

    • 但是AFAIK在独立模式下配置执行器数量的唯一方法是设置spark.executor.cores,这是所有节点的固定值,这意味着将应用此设置的相同值到集群中的所有机器,不管它们有多少内核,所以如果我将它设置为 3,我最终会在每台机器上使用 12 / 3 = 4 个执行器,仍然共同使用相同数量的内存。有没有另一种方法可以设置独立模式下的执行者数量?
    • 啊,我错过了每个节点有 12 个核心的说明。在这种情况下,您将拥有未使用的内存或未使用的内核。不幸的是,所有 Spark 执行器都需要相同。
    • 我认为您可以将核心数作为参数传递给 Spark 提交。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    相关资源
    最近更新 更多