YARN 上 GCP Dataproc 上的自动缩放指标
Posted
技术标签:
【中文标题】YARN 上 GCP Dataproc 上的自动缩放指标【英文标题】:Autoscaling metrics on GCP Dataproc on YARN 【发布时间】:2021-01-06 04:52:46 【问题描述】:为什么 GCP Dataproc 的集群基于 内存请求 和 NOT 核心使用 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 中运行。仅当可用内存为零或太小而无法分配给下一个容器时,挂起的内存才非零。如果有待处理的容器,自动缩放可能会将工作人员添加到集群中。
【问题讨论】:
【参考方案1】:目前这是 Dataproc 的限制。默认情况下,YARN 会根据内存请求为容器查找插槽,并完全忽略核心请求。所以在默认配置下,Dataproc 只需要根据 YARN 挂起/可用内存进行自动扩缩即可。
肯定有您希望通过运行更多容器来超额订阅 YARN 核心的用例。例如,即使您只有 4 个物理内核,我们的默认 distcp 配置也可能在节点管理器上运行 8 个低内存容器。每个 distcp 任务主要受 I/O 限制,不会占用太多内存。所以我认为保留仅基于内存调度的默认设置是合理的。
如果您也对配置基于 YARN 内核的自动缩放感兴趣,我怀疑您已打开 YARN 的 DominantResourceCalculator 以使 YARN 同时在内存和内核上进行调度。在我们的路线图中支持DominantResourceCalculator
。但我们一直优先考虑自动缩放稳定性修复。请随时私下与 dataproc-feedback@google.com 联系,向我们详细介绍您的使用案例。
【讨论】:
以上是关于YARN 上 GCP Dataproc 上的自动缩放指标的主要内容,如果未能解决你的问题,请参考以下文章
如何在自动扩缩 GCP Dataproc 时了解初级工作者?
带有presto的GCP dataproc - 有没有办法使用pyhive通过python远程运行查询?