我试图清楚地了解在纱线管理群集中内存分配是如何发生的。我知道有很多执行程序(一个执行程序具有自己的JVM),一个执行程序在执行过程中可以具有一个或多个vcore。
我试图将这种理解与YARN配置结合起来,在该配置中,事物作为容器隔离。每个容器实际上是一些Vcore和一部分堆内存的混合。
有人可以确认一位执行者获得一个容器还是一位执行者可以拥有多个容器。我阅读了有关Cloudera上有关YARN内存管理的一些文档,似乎是在说Container已分配了一个执行程序。
答案 0 :(得分:1)
Spark Executor在纱线容器中运行,而不是跨容器运行。
YARN资源管理器根据需要提供了一个纱线容器-在通过YARN动态资源分配启动Spark应用程序时。
一个纱线容器只能有一个Spark Executor,但是可以将1个或更多的Cores分配给Executor。
每个Spark Executor和Driver作为其自己的YARN容器的一部分运行。
执行程序在给定的Worker上运行。
此外,所有内容都在应用程序的上下文中,因此,该应用程序具有许多工人的执行者。
答案 1 :(得分:0)
在YARN上运行Spark时,每个Spark执行程序都作为YARN容器运行。