3

为什么 GCP Dataproc 的集群基于内存请求不是核心使用 YARN 作为 RM 自动扩展?是 Dataproc 或 YARN 的限制还是我遗漏了什么?

参考:https ://cloud.google.com/dataproc/docs/concepts/configuring-clusters/autoscaling

自动缩放将 Hadoop YARN 配置为基于YARN 内存请求而不是 YARN 核心请求来调度作业。

自动缩放以以下 Hadoop YARN 指标为中心:

分配的内存是指在整个集群中运行容器所占用的总 YARN 内存。如果有 6 个正在运行的容器最多可以使用 1GB,则分配的内存为 6GB。

可用内存是集群中未分配容器使用的 YARN 内存。如果所有节点管理器有 10GB 的内存和 6GB 的分配内存,则有 4GB 的可用内存。如果集群中有可用(未使用)的内存,自动缩放可能会从集群中移除工作人员。

待处理内存是待处理容器的 YARN 内存请求的总和。待处理的容器正在等待空间在 YARN 中运行。仅当可用内存为零或太小而无法分配给下一个容器时,挂起的内存才非零。如果有待处理的容器,自动缩放可能会将工作人员添加到集群中。

4

1 回答 1

1

目前这是 Dataproc 的限制。默认情况下,YARN 会根据内存请求为容器查找插槽,并完全忽略核心请求。所以在默认配置中,Dataproc 只需要根据 YARN 挂起/可用内存进行自动扩缩。

在某些用例中,您希望通过运行更多容器来超额订阅 YARN 核心。例如,即使您只有 4 个物理内核,我们的默认 distcp 配置也可能在节点管理器上运行 8 个低内存容器。每个 distcp 任务主要受 I/O 限制,不会占用太多内存。所以我认为保留仅基于内存调度的默认设置是合理的。

如果您也对基于 YARN 内核配置自动缩放感兴趣,我怀疑您已经打开了 YARN 的DominantResourceCalculator以使 YARN 在内存和内核上进行调度。它在我们的路线图中支持DominantResourceCalculator。但我们一直优先考虑自动缩放稳定性修复。请随时私下与 dataproc-feedback@google.com 联系,向我们详细介绍您的使用案例。

于 2020-09-21T20:20:36.603 回答