首页 > 解决方案 > Spark中执行器和容器的区别

问题描述

我试图清楚地了解内存分配在纱线托管集群中是如何发生的。我知道有一堆执行程序(一个执行程序有自己的 JVM),一个执行程序在执行期间可以有一个或多个 vcore。

我试图在 YARN 配置中将这种理解结合起来,其中事物被隔离为容器。每个容器实际上是一些 Vcor​​e 和一小部分堆内存的混合。

有人可以确认一个执行者是否获得一个容器,或者一个执行者可以拥有多个容器。我在 Cloudera 上阅读了一些关于 YARN 内存管理的文档,似乎是说 Container 分配了一个 Executor。

Cloudera 内存管理

标签: apache-sparkhadoop-yarn

解决方案


Spark Executor 在 Yarn Container 内运行,而不是跨 Containers 运行。

Yarn 容器由 YARN 资源管理器按需提供 - 在 Spark 应用程序启动时通过 YARN 动态资源分配。

一个 Yarn Container 只能有一个 Spark Executor,但可以为 Executor 分配 1 个或更多 Core。

每个 Spark Executor 和 Driver 作为其自己的 YARN 容器的一部分运行。

Executors 在给定的 Worker 上运行。

此外,一切都在应用程序的上下文中,因此应用程序在许多工作人员上都有执行程序。


推荐阅读