我在HDFS之上有一个以YARN模式运行的Spark Cluster。我启动了一个具有 2 个内核和 2g 内存的 worker 。然后我提交了一个动态配置的作业,动态配置为 1 个具有 3 个内核的执行器。尽管如此,我的工作还是能够运行的。有人可以解释启动工作线程的核心数与执行程序请求的内核数量之间的区别吗?我的理解是,由于执行者在工人内部运行,他们无法获得比工人可用的资源更多的资源。
检查参数 yarn.nodemanager.resource.cpu-vcores in yarn-site.xml.
yarn.nodemanager.resource.cpu-vCores 控制每个节点上的容器使用的最大内核总和。
->Spark 在工作节点内启动 n 个执行程序。->Spark 使用内核数和执行器内存参数在应用程序提交到 Spark 群集时启动执行程序。->在 Spark 提交中,我们无法指定工作节点的核心数。