配置 Amazon EMR on EKS 的垂直自动扩展 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置 Amazon EMR on EKS 的垂直自动扩展

当你通过 API 提交 Amazon EMR Spark 任务时,你可以配置垂直自动扩展。StartJobRun按照 使用垂直自动扩展功能提交 Spark 任务 中的示例所示,在 Spark 驱动程序 Pod 上设置与自动扩展相关的配置参数。

Amazon EMR on EKS 垂直自动扩展 Operator 会监听具有自动扩展功能的驱动程序 Pod,然后使用驱动程序 Pod 上的设置来设定与 Kubernetes Vertical Pod Autoscaler(VPA)的集成。这有助于对 Spark 执行程序 Pod 进行资源跟踪和自动扩展。

以下各节旨在介绍在为 Amazon EKS 集群配置垂直自动扩展时可以使用的参数。

注意

将功能切换参数配置为标签,然后在 Spark 驱动程序 Pod 上将其余参数配置为注释。自动扩展参数属于 emr-containers.amazonaws.com/ 域并且带有 dynamic.sizing 前缀。

必需参数

提交任务时,必须在 Spark 任务驱动程序中包含以下两个参数:

描述 接受的值 默认值 类型 Spark 参数1

dynamic.sizing

功能切换

true, false

未设置

label

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing

dynamic.sizing.signature

任务签名

string

未设置

注释

spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.signature

1StartJobRun API 中将此参数用作 SparkSubmitParameterConfigurationOverride

  • dynamic.sizing – 您可以使用 dynamic.sizing 标签来打开或关闭垂直自动扩展功能。要开启垂直自动扩展功能,请在 Spark 驱动程序 Pod 上将 dynamic.sizing 设置为 true。如果省略此标签或将其设置为 true 之外的任何值,则垂直自动扩展功能将关闭。

  • dynamic.sizing.signature – 在驱动程序 Pod 上使用 dynamic.sizing.signature 注释设置任务签名。垂直自动扩展功能可汇总不同的 Amazon EMR Spark 任务运行的资源使用数据,从中得出资源建议。您要提供唯一标识符将任务关联在一起。

    注意

    如果任务以固定间隔(例如每天或每周)重复出现,任务的每个新实例的任务签名都应保持不变。这可确保垂直自动扩展功能可以计算并汇总不同任务运行中的建议。

1StartJobRun API 中将此参数用作 SparkSubmitParameterConfigurationOverride

可选参数

垂直自动扩展功能还支持以下可选参数。将这些参数设置为驱动程序 Pod 上的注释。

描述 接受的值 默认值 类型 Spark 参数1

dynamic.sizing.mode

垂直自动扩展模式

Off, Initial, Auto

Off

注释

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.mode

dynamic.sizing.scale.memory

启用内存扩展

true, false

true

注释

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.memory

dynamic.sizing.scale.cpu

开启或关闭 CPU 扩展

true, false

false

注释

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu

dynamic.sizing.scale.memory.min

内存扩展的最小限制

字符串,K8s 资源数量,示例:1G

未设置

注释

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.min

dynamic.sizing.scale.memory.max

内存扩展的最大限制

字符串,K8s 资源数量,示例:4G

未设置

注释

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.max

dynamic.sizing.scale.cpu.min

CPU 扩展的最小限制

字符串,K8s 资源数量,示例:1

未设置

注释

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu.min

dynamic.sizing.scale.cpu.max

CPU 扩展的最大限制

字符串,K8s 资源数量,示例:2

未设置

注释

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu.max

垂直自动扩展模式

mode 参数映射到 VPA 支持的不同自动扩展模式。使用驱动程序 Pod 上的 dynamic.sizing.mode 注释来设置模式。此参数支持下列值:

  • 关闭 – 一种试运行模式,支持在其中监控建议,但不支持执行自动扩展。这是垂直自动扩展功能的默认模式。在这种模式下,关联的垂直 Pod Autoscaler 资源会对建议进行计算,您可以通过 kubectl、Prometheus 和 Grafana 等工具监控建议。

  • 初始 – 在此模式下,如果根据任务的历史运行情况(例如重复任务)提供建议,VPA 会在任务开始时自动扩展资源。

  • 自动 – 在此模式下,VPA 会驱逐 Spark 执行程序 Pod,并在 Spark 驱动程序 Pod 重启时使用推荐的资源设置自动扩展这些 Pod。有时,VPA 会驱逐正在运行的 Spark 执行程序 Pod;因此,重试中断的执行程序可能会导致额外延迟。

资源扩展

在设置垂直自动扩展功能时,您可以选择是否扩展 CPU 和内存资源。将 dynamic.sizing.scale.cpudynamic.sizing.scale.memory 注释设置为 truefalse。默认情况下,CPU 扩展设置为 false,内存扩展设置为 true

资源最小值和最大值(边界)

您也可以选择设置 CPU 和内存资源的边界。启用自动扩展功能时,请使用 dynamic.sizing.[memory/cpu].[min/max] 注释为这些资源选择最小值和最大值。默认情况下,资源没有限制。将注释设置为表示 Kubernetes 资源数量的字符串值。例如,将 dynamic.sizing.memory.max 设置为 4G 来表示 4GB。