使用 AWS CLI 管理任务运行 - Amazon EMR

使用 AWS CLI 管理任务运行

本主题介绍了如何使用 AWS Command Line Interface(AWS CLI)管理作业运行。其中详细介绍了安全参数、驱动程序和各种覆盖设置等属性。还包括一些子课题,涵盖了配置日志记录的各种方法。

配置任务运行的选项

使用以下选项配置任务运行参数:

  • --execution-role-arn:您必须提供用于运行任务的 IAM 角色。有关更多信息,请参阅 将任务执行角色与 Amazon EMR on EKS 结合使用

  • --release-label:您可以使用 Amazon EMR 5.32.0 和 6.2.0 及更高版本部署 Amazon EMR on EKS。以前的 Amazon EMR 版本不支持 Amazon EMR on EKS。有关更多信息,请参阅 Amazon EMR on EKS 版本

  • --job-driver:任务驱动程序用于为主要任务提供输入。这是一个联合类型字段,您只能传递要运行的任务类型值之一。支持的任务类型包括:

    • Spark 提交任务 - 用于通过 Spark 提交运行命令。您可以使用此任务类型,通过 Spark 提交运行 Scala、PySpark、SparkR、SparkSQL 和任何其他受支持的任务。此任务类型具有以下参数:

      • Entrypoint - 这是 HCFS(兼容 Hadoop 的文件系统)对要运行的主 jar/py 文件的引用。

      • EntryPointArguments - 这是您想要传递给主 jar /py 文件的参数数组。您应该使用 Entrypoint 代码来处理读取这些参数。该数组中的每个参数都应该用逗号分隔。EntryPointArguments 不能包含方括号或圆括号,例如 ()、{} 或 []。

      • SparkSubmitParameters - 这些是您希望向任务发送的更多 Spark 参数。使用此参数可覆盖默认的 Spark 属性,例如驱动程序内存、—conf 或 —class 等执行程序的数量。有关更多信息,请参阅使用 spark-submit 启动应用程序

    • Spark SQL 任务 - 用于通过 Spark SQL 运行 SQL 查询文件。您可以使用此任务类型运行 SparkSQL 任务。此任务类型具有以下参数:

      • Entrypoint - 这是 HCFS(兼容 Hadoop 的文件系统)对要运行的 SQL 查询文件的引用。

        有关可用于 Spark SQL 任务的其他 Spark 参数的列表,请参阅 通过 StartJobRun API 运行 Spark SQL 脚本

  • --configuration-overrides:您可以为应用程序提供配置对象以覆盖默认配置。您可以使用简写语法提供配置,或可引用 JSON 文件中的配置对象。配置对象包含分类、属性和可选的嵌套配置。属性由您希望在该文件中覆盖的设置组成。您可以在一个 JSON 对象中为多个应用程序指定多个分类。可用的配置分类因 Amazon EMR 发行版而异。有关 Amazon EMR 每个发行版可用的配置分类列表,请参阅Amazon EMR on EKS 版本

    如果在应用程序覆盖和 Spark 提交参数中传递相同的配置,则 Spark 提交参数优先。完整的配置优先级列表如下,按最高优先级到最低优先级的顺序排列。

    • 创建 SparkSession 时提供的配置。

    • 使用 —conf 作为 sparkSubmitParameters 的一部分提供的配置。

    • 作为应用程序覆盖的一部分提供的配置。

    • Amazon EMR 为发行版选择的优化配置。

    • 应用程序的默认开源配置。

    要使用 Amazon CloudWatch 或 Amazon S3 监控任务运行,您必须提供 CloudWatch 的配置详细信息。有关更多信息,请参阅配置任务运行以使用 Amazon S3 日志配置任务运行以使用 Amazon CloudWatch Logs。如果 S3 存储桶或 CloudWatch 日志组不存在,则 Amazon EMR 会先创建二者中的一个,然后再将日志上载到存储桶。

  • 有关 Kubernetes 配置选项的其它列表,请参阅 Kubernetes 中的 Spark 属性

    不支持以下 Spark 配置。

    • spark.kubernetes.authenticate.driver.serviceAccountName

    • spark.kubernetes.authenticate.executor.serviceAccountName

    • spark.kubernetes.namespace

    • spark.kubernetes.driver.pod.name

    • spark.kubernetes.container.image.pullPolicy

    • spark.kubernetes.container.image

      注意

      您可以将 spark.kubernetes.container.image 用于自定义 Docker 镜像。有关更多信息,请参阅 为 Amazon EMR on EKS 自定义 Docker 镜像

列出任务运行

您可以运行 list-job-run 以显示任务运行的状态,如以下示例所示。

aws emr-containers list-job-runs --virtual-cluster-id <cluster-id>

描述任务运行

您可以运行 describe-job-run 来获取有关任务的更多详细信息,如任务状态、状态详细信息和任务名称,如以下示例所示。

aws emr-containers describe-job-run --virtual-cluster-id cluster-id --id job-run-id

取消任务运行

您可以运行 cancel-job-run 以取消正在运行的任务,如以下示例所示。

aws emr-containers cancel-job-run --virtual-cluster-id cluster-id --id job-run-id