【问题标题】:How does YARN manage containers and jvm-s for Spark partitions?YARN 如何管理 Spark 分区的容器和 jvm-s?
【发布时间】:2015-03-30 18:51:48
【问题描述】:

我不清楚 spark 分区和 yarn 容器之间的关系。如果我有 3 个节点(--num-executors = 3)和 10 个分区,yarn 是否会创建总共 10 个容器(如果我理解正确,每个容器都是 jvm),并将它们分布在 3 个节点上?资源管理器是否曾经为一个分区启动一个容器,然后为下一个分区重用它?

【问题讨论】:

    标签: apache-spark hadoop-yarn partition


    【解决方案1】:

    来自thisCloudera 发帖:

    在 YARN 上运行 Spark 时,每个 Spark 执行器都作为 YARN 容器运行。 MapReduce 为每个任务调度一个容器并启动一个 JVM,而 Spark 在同一个容器中托管多个任务。这种方法可以将任务启动时间缩短几个数量级。

    据我了解,YARN 为每个执行程序创建一个容器,然后将其分配给并行或顺序的多个任务。关于您的示例,YARN 将创建总共 3 个容器,为每个容器平均分配 3-4 个任务(每个分区一个)。

    很奇怪,您所描述的是 MapReduce 架构的常见行为。

    【讨论】:

    • 嗯,很有趣。我肯定有一件事是对的,那就是这里需要做出建筑设计决策。
    • 但是这些任务是并行还是顺序运行?
    • @dhruven1600 并行或顺序部分可能不太清楚。容器并行执行,每个容器在不同的执行器中。但是,每个容器只能在给定的时刻运行一个任务。
    • 那么我们可以说在每个容器中,每个任务(分区)都将运行在单独的JVM上吗? 在 YARN 上运行 Spark 时,每个 Spark 执行器都作为 YARN 容器运行。 MapReduce 为每个任务调度一个容器并启动一个 JVM,而 Spark 在同一个容器中托管多个任务。来自 Cloudera 帖子。
    • @dhruven1600 MapReduce 为每个任务启动一个 JVMYARN 为每个任务启动一个 JVM每个容器;此容器使用相同的 JVM 运行多个任务(分区)。
    猜你喜欢
    • 2016-11-14
    • 1970-01-01
    • 2016-01-18
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 2017-11-13
    相关资源
    最近更新 更多