我有一个具有50个工作程序的GCP Dataproc集群(n1-standard-16 16 VCores 64 GB RAM)。
群集具有带有默认资源计算器的Capacity Scheduler。
我的Spark作业具有以下配置
现在,当我看到YARN UI时,它表明每个节点都有2个运行1 Vcore和20GB RAM的容器,这几乎使spark.executor.cores
看起来不适用。为了进行交叉检查,我查看了Spark UI,令我惊讶的是每个执行者都展示了5个内核。这让我有些困惑。
此外,作业完成时间(26分钟)还表明,这5个内核确实是vcore,而不仅仅是1个内核中有5个线程(这只是我的理解,在这里我可能是完全错误的)。
有人可以帮助我理解这一点吗?
答案 0 :(得分:2)
已知YARN报告的vCore编号不正确;这是与Spark配合使用时与容量调度器有关的已知问题,但仅是一个外观问题,因为它在Dataproc中按预期工作,因此仅偏爱基于内存的bin打包,并在需要时允许vCore的超额订购-IO工作。即使YARN配置为在装箱中包括内核,它也不会提供CPU隔离。 Spark UI中报告的每个执行者核心数是值得信任的正确数。
请参阅以下相关的StackOverflow答案:Dataproc set number of vcores per executor container