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

Amazon EMR on EKS 的垂直自动扩展入门

如果您希望自动调整内存和 CPU 资源以适应 Amazon EMR Spark 应用程序工作负载,则对 Amazon EMR on EKS 使用垂直自动扩缩功能。有关更多信息,请参阅使用垂直自动扩缩功能处理 Amazon EMR Spark 作业

使用垂直自动扩展功能提交 Spark 任务

通过 StartJobRun API 提交任务时,请将以下两个配置添加到驱动程序,为 Spark 任务开启垂直自动扩展:

"spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing":"true", "spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.signature":"YOUR_JOB_SIGNATURE"

在上面的代码中,第一行启用了垂直自动扩展功能。下一行是必需的签名配置,可让您为任务选择签名。

有关这些配置和可接受的参数值的更多信息,请参阅 配置 Amazon EMR on EKS 的垂直自动扩展。默认情况下,任务在垂直自动扩展的仅限监控关闭模式下提交。这种监控状态可让您在不执行自动扩展的情况下计算并查看资源建议。有关更多信息,请参阅 垂直自动扩展模式

以下示例说明如何使用垂直自动扩展来完成 start-job-run 示例命令:

aws emr-containers start-job-run \ --virtual-cluster-id $VIRTUAL_CLUSTER_ID \ --name $JOB_NAME \ --execution-role-arn $EMR_ROLE_ARN \ --release-label emr-6.10.0-latest \ --job-driver '{ "sparkSubmitJobDriver": { "entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "spark-defaults", "properties": { "spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing": "true", "spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.signature": "test-signature" } }] }'

验证垂直自动扩展功能

要验证已提交任务的垂直自动扩展功能是否正常工作,请使用 kubectl 获取 verticalpodautoscaler 自定义资源并查看扩展建议。例如,以下命令会查询 使用垂直自动扩展功能提交 Spark 任务 部分中有关示例任务的建议:

kubectl get verticalpodautoscalers --all-namespaces \ -l=emr-containers.amazonaws.com/dynamic.sizing.signature=test-signature

此查询的输出应类似以下内容:

NAME MODE CPU MEM PROVIDED AGE ds-jceyefkxnhrvdzw6djum3naf2abm6o63a6dvjkkedqtkhlrf25eq-vpa Off 3304504865 True 87m

如果输出内容与此不相似或包含错误代码,请参阅 对 Amazon EMR on EKS 垂直自动扩展进行问题排查,了解有助于解决问题的操作步骤。