本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 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 任务驱动程序中包含以下两个参数:
密钥 | 描述 | 接受的值 | 默认值 | Type | Spark 参数1 |
---|---|---|---|---|---|
|
功能切换 |
|
未设置 |
label |
|
|
任务签名 |
string |
未设置 |
注释 |
|
1 使用此参数作为SparkSubmitParameter
或ConfigurationOverride
StartJobRun
API。
-
dynamic.sizing
– 您可以使用dynamic.sizing
标签来打开或关闭垂直自动扩展功能。要开启垂直自动扩展功能,请在 Spark 驱动程序 Pod 上将dynamic.sizing
设置为true
。如果省略此标签或将其设置为true
之外的任何值,则垂直自动扩展功能将关闭。 -
dynamic.sizing.signature
– 在驱动程序 Pod 上使用dynamic.sizing.signature
注释设置任务签名。垂直自动扩展可汇总不同运行的 Amazon EMR Spark 任务的资源使用数据,以得出资源建议。您要提供唯一标识符将任务关联在一起。注意
如果任务以固定间隔(例如每天或每周)重复出现,任务的每个新实例的任务签名都应保持不变。这可确保垂直自动扩展功能可以计算并汇总不同任务运行中的建议。
1 使用此参数作为SparkSubmitParameter
或ConfigurationOverride
StartJobRun
API。
可选参数
垂直自动扩展功能还支持以下可选参数。将这些参数设置为驱动程序 Pod 上的注释。
密钥 | 描述 | 接受的值 | 默认值 | Type | Spark 参数1 |
---|---|---|---|---|---|
垂直自动扩展模式 |
|
|
注释 |
|
|
启用内存扩展 |
|
|
annotation |
|
|
开启或关闭CPU缩放 |
|
|
annotation |
|
|
内存扩展的最小限制 |
字符串,K8s 资源数量1G |
未设置 |
注释 |
spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.min |
|
内存扩展的最大限制 |
字符串,K8s 资源数量4G |
未设置 |
注释 |
spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.max |
|
CPU缩放的最小限制 |
字符串,K8s 资源数量1 |
未设置 |
注释 |
spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu.min |
|
CPU缩放的最大限制 |
字符串,K8s 资源数量2 |
未设置 |
注释 |
spark.kubernetes.driver.annotation.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.cpu
和 dynamic.sizing.scale.memory
注释设置为 true
或 false
。默认情况下,CPU缩放设置为false
,内存缩放设置为true
。
资源最小值和最大值(边界)
或者,您也可以在CPU和内存资源上设置边界。启用自动扩展功能时,请使用 dynamic.sizing.[memory/cpu].[min/max]
注释为这些资源选择最小值和最大值。默认情况下,资源没有限制。将注释设置为表示 Kubernetes 资源数量的字符串值。例如,将 dynamic.sizing.memory.max
设置为 4G
来表示 4GB。