在 Amazon EMR 上配置垂直自动缩放 EKS - Amazon EMR

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

在 Amazon EMR 上配置垂直自动缩放 EKS

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

Amazon EMR on EKS 垂直自动扩缩操作员监听具有自动缩放功能的驱动程序 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

1 使用此参数作为SparkSubmitParameterConfigurationOverrideStartJobRunAPI。

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

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

    注意

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

1 使用此参数作为SparkSubmitParameterConfigurationOverrideStartJobRunAPI。

可选参数

垂直自动扩展功能还支持以下可选参数。将这些参数设置为驱动程序 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

annotation

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

dynamic.sizing.scale.cpu

开启或关闭CPU缩放

true, false

false

annotation

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 驱动程序容器重启时使用推荐的资源设置自动缩放它们。有时,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。