GCP Dataproc - 容器指标不一致 - YARN UI vs Spark UI
GCP Dataproc - Inconsistent container metrics - YARN UI vs Spark UI
我有一个 GCP Dataproc 集群,有 50 个工作器(n1-standard-16 16 VCores 64 GB RAM)。
集群有带默认资源计算器的容量调度器。
我的 Spark 作业具有以下配置
- spark.executor.cores=5
- spark.executor.memory=18G
- spark.yarn.executor.memoryOverhead=2G
现在,当我看到 YARN UI 时,它显示每个节点都有 2 个容器 运行 1-Vcore 和 20GB RAM,这几乎使它看起来像 spark.executor.cores
没有得到适用。为了交叉检查,我查看了 Spark UI,令我惊讶的是每个执行程序都显示了 5 个内核。这让我有点困惑。
作业完成时间(26 分钟)也表明这 5 个内核确实是 vcores,而不仅仅是 1 个内核中的 5 个线程(这只是我的理解,我在这里可能完全错了)。
任何人都可以帮助我理解这一点吗?
已知 YARN 报告的 vCore 数不正确;这是与 Spark 一起使用时与容量调度程序相关的已知问题,但这只是一个表面问题,因为它在 Dataproc 中按预期工作,只喜欢基于内存的 bin-packing 并允许超额订阅 vCores(如果需要高-IO 作业。即使 YARN 配置为在 bin-packing 中包含核心,它也不提供 CPU 隔离。 Spark UI 中报告的每个执行程序的内核数是值得信赖的正确数目。
查看这个相关的 Whosebug 答案:
我有一个 GCP Dataproc 集群,有 50 个工作器(n1-standard-16 16 VCores 64 GB RAM)。
集群有带默认资源计算器的容量调度器。
我的 Spark 作业具有以下配置
- spark.executor.cores=5
- spark.executor.memory=18G
- spark.yarn.executor.memoryOverhead=2G
现在,当我看到 YARN UI 时,它显示每个节点都有 2 个容器 运行 1-Vcore 和 20GB RAM,这几乎使它看起来像 spark.executor.cores
没有得到适用。为了交叉检查,我查看了 Spark UI,令我惊讶的是每个执行程序都显示了 5 个内核。这让我有点困惑。
作业完成时间(26 分钟)也表明这 5 个内核确实是 vcores,而不仅仅是 1 个内核中的 5 个线程(这只是我的理解,我在这里可能完全错了)。
任何人都可以帮助我理解这一点吗?
已知 YARN 报告的 vCore 数不正确;这是与 Spark 一起使用时与容量调度程序相关的已知问题,但这只是一个表面问题,因为它在 Dataproc 中按预期工作,只喜欢基于内存的 bin-packing 并允许超额订阅 vCores(如果需要高-IO 作业。即使 YARN 配置为在 bin-packing 中包含核心,它也不提供 CPU 隔离。 Spark UI 中报告的每个执行程序的内核数是值得信赖的正确数目。
查看这个相关的 Whosebug 答案: