【问题标题】:what is the relationship between spark executor and yarn container when using spark on yarn在纱线上使用火花时,火花执行器和纱线容器之间的关系是什么
【发布时间】:2018-02-06 03:27:52
【问题描述】:

在 yarn 上使用 spark 时,spark executor 和 yarn 容器有什么关系?
比如我设置executor-memory = 20G,yarn container memory = 10G,1个executor包含2个container吗?

【问题讨论】:

    标签: apache-spark hadoop-yarn


    【解决方案1】:

    Spark Executor 在纱线容器中运行。纱线容器由资源管理器按需提供。一个 Yarn 容器可以有 1 个或多个 Spark Executor。 Spark-Executors 是运行任务的那个。 Spark Executor 将在 Worker Node(DataNode) 上启动

    当你设置 executor-memory = 20G -> 这意味着你要求一个大小为 20GB 的容器,你的 Executors 将在其中运行。现在您可能有 1 个或多个 Executors 使用这 20GB 的内存并且这是每个 Worker 节点。

    例如,如果您有一个包含 8 个节点的集群,那么您的作业将有 8 * 20 GB 的总内存。

    以下是 yarn-site.xml 中可用的 3 个配置选项,您可以使用它们来查看差异。

    yarn.scheduler.minimum-allocation-mb
    yarn.scheduler.maximum-allocation-mb
    yarn.nodemanager.resource.memory-mb
    

    【讨论】:

    • 很好的答案,除非你说“每个工作节点”。我相信一个工作节点中可以有多个容器。然后,正如你所说,每个这样的容器可以有多个执行程序共享相同的内存。
    • 同样在这个纱线上下文中,是否有工作进程的概念,因为我们已经有了一个co tai we?
    【解决方案2】:

    在 YARN 上运行 Spark 时,每个 Spark 执行器都作为一个 YARN 容器运行,这意味着容器的数量将始终与 Spark 应用程序创建的执行器数量相同,例如通过 spark-submit 中的 --num-executors 参数。

    https://stackoverflow.com/a/38348175/9605741

    【讨论】:

      【解决方案3】:

      在 YARN 模式下,每个 executor 在一个容器中运行。 executor 的数量与 YARN 分配的容器数量相同(集群模式除外,它将分配另一个容器来运行驱动程序)。

      【讨论】:

      • 如果我在spark中设置--executor-memory 20G,并在yarn中将分配给容器的内存设置为10G,会发生什么? 1个spark executor会得到10G内存,只包含1个容器?
      • 如果将容器的最大内存设置为10G,作业将无法运行,并收到类似Required executor memory (XXX MB) is above the max threshold (YYY MB) of this cluster! Please check the values of 'yarn.scheduler.maximum-allocation-mb' and/or 'yarn.nodemanager.resource.memory-mb'的错误
      猜你喜欢
      • 2018-12-06
      • 2017-08-27
      • 2017-12-25
      • 2019-11-13
      • 1970-01-01
      • 2017-03-21
      • 2016-10-11
      • 2016-01-15
      • 1970-01-01
      相关资源
      最近更新 更多