lea*_*man 3 hadoop-yarn apache-spark
我在集群模式下部署了一个 Spark 作业,如下所示
驱动程序核心 - 1
Executor cores - 2 执行程序
数量 - 2。
我的理解是这个应用程序应该占据集群中的 5 个核心(4 个执行程序核心和 1 个驱动程序核心),但我没有在 RM 和 Spark UI 中观察到这一点。
- 在资源管理器 UI 上,我只看到用于此应用程序的 4 个内核。
- 即使在 Spark UI 中(单击来自 RM 的 ApplicationMaster URL),在 executors 选项卡下,驱动程序内核也显示为零。
我错过了什么吗?
集群管理器是 YARN。
我的理解是这个应用程序应该在集群中占用5个内核(4个执行器内核和1个驱动程序内核)
这是YARN 中的完美情况,它可以为您提供 5 个内核而不是它管理的 CPU。
但我没有在 RM 和 Spark UI 中观察到这一点。
由于完美的情况不会经常发生,因此我们可以从 YARN 获得尽可能多的内核,这样 Spark 应用程序就可以启动。
Spark 可以无限期地等待请求的内核,但这并不总是符合您的喜好,不是吗?
这就是为什么在 YARN 上的 Spark 有一个额外的检查(又名minRegisteredRatio),它是在应用程序开始执行任务之前请求的最少80%的内核。您可以使用spark.scheduler.minRegisteredResourcesRatioSpark 属性来控制比率。这将解释为什么您看到使用的内核少于请求的内核。
引用官方 Spark 文档(突出显示我的):
spark.scheduler.minRegisteredResourcesRatio
0.8 YARN 模式
注册资源的最小比例(注册资源/总预期资源)(资源为yarn模式下的executor,standalone模式下和Mesos粗粒度模式下的CPU核数['spark.cores.max'值是Mesos粗粒度模式下的总预期资源-粒度模式] ) 在调度开始之前等待。指定为介于 0.0 和 1.0 之间的双精度值。无论是否达到最小资源比例,调度开始前等待的最长时间由 config 控制
spark.scheduler.maxRegisteredResourcesWaitingTime。
| 归档时间: |
|
| 查看次数: |
1662 次 |
| 最近记录: |