

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

# 管理 Amazon EMR on EKS 任务运行
<a name="emr-eks-jobs-manage"></a>

以下各节旨在介绍如何帮助您管理 Amazon EMR on EKS 任务运行。其中包括在使用时配置作业运行参数 AWS CLI、配置日志数据的存储方式、运行 Spark SQL 脚本来运行查询、了解作业运行状态以及了解如何监控作业。如果要设置和完成作业运行以处理数据，通常可以按顺序浏览这些主题。

**Topics**
+ [使用管理作业运行 AWS CLI](emr-eks-jobs-CLI.md)
+ [通过 StartJobRun API 运行 Spark SQL 脚本](emr-eks-jobs-spark-sql-parameters.md)
+ [任务运行状态](emr-eks-jobs-states.md)
+ [查看 Amazon EMR 控制台中的任务](emr-eks-jobs-console.md)
+ [运行任务时的常见错误](emr-eks-jobs-error.md)

# 使用管理作业运行 AWS CLI
<a name="emr-eks-jobs-CLI"></a>

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

**Topics**
+ [配置任务运行的选项](#emr-eks-jobs-parameters)
+ [配置任务运行以使用 Amazon S3 日志](emr-eks-jobs-s3.md)
+ [将任务运行配置为使用 Amazon CloudWatch 日志](emr-eks-jobs-cloudwatch.md)
+ [列出任务运行](#emr-eks-jobs-list)
+ [描述任务运行](#emr-eks-jobs-describe)
+ [取消任务运行](#emr-eks-jobs-cancel)

## 配置任务运行的选项
<a name="emr-eks-jobs-parameters"></a>

使用以下选项配置任务运行参数：
+ `--execution-role-arn`：您必须提供用于运行任务的 IAM 角色。有关更多信息，请参阅 [将任务执行角色与 Amazon EMR on EKS 结合使用](iam-execution-role.md)。
+ `--release-label`：您可以使用 Amazon EMR 5.32.0 和 6.2.0 及更高版本部署 Amazon EMR on EKS。以前的 Amazon EMR 版本不支持 Amazon EMR on EKS。有关更多信息，请参阅 [Amazon EMR on EKS 版本](emr-eks-releases.md)。
+ `--job-driver`：任务驱动程序用于为主要任务提供输入。这是一个联合类型字段，您只能传递要运行的任务类型值之一。支持的任务类型包括：
  + Spark 提交任务 - 用于通过 Spark 提交运行命令。你可以使用这种作业类型通过 Spark Submit 运行 Scala、 PySpark、SparkR、sparkSQL 和任何其他支持的作业。此任务类型具有以下参数：
    + Entrypoint-这是对你要运行的主 jar/py 文件的 HCFS（兼容 Hadoop 的文件系统）的引用。
    + EntryPointArguments -这是您要传递给主 jar/py 文件的参数数组。您应该使用 Entrypoint 代码来处理读取这些参数。数组中的每个参数都应用逗号分隔。 EntryPointArguments 不能包含方括号或圆括号，例如 ()、\$1\$1 或 []。
    + SparkSubmitParameters -这些是您要发送给任务的其他 spark 参数。使用此参数可覆盖默认的 Spark 属性，例如驱动程序内存、—conf 或 —class 等执行程序的数量。有关更多信息，请参阅[使用 spark-submit 启动应用程序](https://spark.apache.org/docs/latest/submitting-applications.html#launching-applications-with-spark-submit)。
  + Spark SQL 任务 - 用于通过 Spark SQL 运行 SQL 查询文件。您可以使用此任务类型运行 SparkSQL 任务。此任务类型具有以下参数：
    + Entrypoint - 这是 HCFS（兼容 Hadoop 的文件系统）对要运行的 SQL 查询文件的引用。

      有关可用于 Spark SQL 任务的其他 Spark 参数的列表，请参阅 [通过 StartJobRun API 运行 Spark SQL 脚本](emr-eks-jobs-spark-sql-parameters.md)。
+ `--configuration-overrides`：您可以为应用程序提供配置对象以覆盖默认配置。您可以使用简写语法提供配置，或可引用 JSON 文件中的配置对象。配置对象包含分类、属性和可选的嵌套配置。属性由您希望在该文件中覆盖的设置组成。您可以在一个 JSON 对象中为多个应用程序指定多个分类。可用的配置分类因 Amazon EMR 发行版而异。有关 Amazon EMR 每个发行版可用的配置分类列表，请参阅[Amazon EMR on EKS 版本](emr-eks-releases.md)。

  如果在应用程序覆盖和 Spark 提交参数中传递相同的配置，则 Spark 提交参数优先。完整的配置优先级列表如下，按最高优先级到最低优先级的顺序排列。
  + 创建 `SparkSession` 时提供的配置。
  + 使用 `—conf` 作为 `sparkSubmitParameters` 的一部分提供的配置。
  + 作为应用程序覆盖的一部分提供的配置。
  + Amazon EMR 为发行版选择的优化配置。
  + 应用程序的默认开源配置。

  要使用 Amazon CloudWatch 或 Amazon S3 监控任务运行，您必须提供配置的详细信息 CloudWatch。有关更多信息，请参阅[配置任务运行以使用 Amazon S3 日志](emr-eks-jobs-s3.md)和[将任务运行配置为使用 Amazon CloudWatch 日志](emr-eks-jobs-cloudwatch.md)。如果 S3 存储桶或 CloudWatch 日志组不存在，则 Amazon EMR 会在将日志上传到存储桶之前创建该存储桶或日志组。
+ 有关 Kubernetes 配置选项的其它列表，请参阅 [Kubernetes 中的 Spark 属性](https://spark.apache.org/docs/latest/running-on-kubernetes.html#configuration)。

  不支持以下 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 镜像](docker-custom-images.md)。

# 配置任务运行以使用 Amazon S3 日志
<a name="emr-eks-jobs-s3"></a>

为了能够监控任务进度并排除故障，您必须将任务配置为向 Amazon S3、Amazon Logs 或两者发送 CloudWatch 日志信息。本主题可提供入门知识，帮助您将通过 Amazon EMR on EKS 启动的任务的应用程序日志发布到 Amazon S3。

**S3 日志 IAM policy**

任务执行角色的权限策略中必须包含以下权限，然后才能将日志数据发送到 Amazon S3。将 *amzn-s3-demo-logging-bucket* 替换为日志记录存储桶的名称。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket",
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Sid": "AllowS3Putobject"
    }
  ]
}
```

------

**注意**  
Amazon EMR on EKS 也可以创建 Amazon S3 存储桶。如果 Amazon S3 存储桶不可用，则 IAM policy 应包含 `“s3:CreateBucket”` 权限。

在您授予执行角色将日志发送到 Amazon S3 的合适权限后，只要 `s3MonitoringConfiguration` 通过 `monitoringConfiguration` 请求的 `start-job-run` 部分，您的日志数据将发送到以下 Amazon S3 位置，如 [使用管理作业运行 AWS CLI](emr-eks-jobs-CLI.md) 所示。
+ 提交者日志-*virtual-cluster-id* ///jobs/ /c *job-id* ontainers/*logUri*/(stderr.gz/ *pod-name* stdout.gz)
+ 驱动程序日志-*virtual-cluster-id* ///jobs/ /containers*logUri*//spark--driver/ (st *job-id* derr.gz/stdout.gz*spark-application-id*) *job-id*
+ 执行者日志-*virtual-cluster-id* ///jobs/ /containers*logUri*///(st *job-id* derr.gz/stdout. *spark-application-id* gz) *executor-pod-name*

# 将任务运行配置为使用 Amazon CloudWatch 日志
<a name="emr-eks-jobs-cloudwatch"></a>

要监控任务进度并排除故障，您必须将任务配置为向 Amazon S3、Amazon Logs 或两者发送 CloudWatch 日志信息。本主题可帮助您开始在 EKS 上使用 Amazon EMR 启动的任务上使用 CloudWatch 日志。有关 CloudWatch 日志的更多信息，请参阅 Amazon CloudWatch 用户指南中的[监控日志文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)。

**CloudWatch 日志 IAM 策略**

要将日志数据发送到 CloudWatch 日志，任务执行角色的权限策略中必须包含以下权限。将*my\$1log\$1group\$1name*和*my\$1log\$1stream\$1prefix*，分别替换为 CloudWatch 日志组的名称和日志流名称。如果日志组和日志流式传输不存在，只要执行角色 ARN 具有适当的权限，则 Amazon EMR on EKS 将创建这些日志组和日志流式传输。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogStream",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams"
      ],
      "Resource": [
        "arn:aws:logs:*:*:*"
      ],
      "Sid": "AllowLOGSCreatelogstream"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:PutLogEvents"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:my_log_group_name:log-stream:my_log_stream_prefix/*"
      ],
      "Sid": "AllowLOGSPutlogevents"
    }
  ]
}
```

------

**注意**  
Amazon EMR on EKS 还可以创建日志流。如果日志流不存在，IAM policy 应包含 `"logs:CreateLogGroup"` 权限。

在您为执行角色授予适当的权限后，您的应用程序会在`start-job-run`请求`monitoringConfiguration`部分中传递其 CloudWatch 日志数据时`cloudWatchMonitoringConfiguration`将其日志数据发送到 Logs，如所示[使用管理作业运行 AWS CLI](emr-eks-jobs-CLI.md)。

在 `StartJobRun` API 中，*log\$1group\$1name *是的日志组名称 CloudWatch，*log\$1stream\$1prefix*是的日志流名称前缀 CloudWatch。您可以在 AWS 管理控制台中查看和搜索这些日志。
+ 提交者日志-*virtual-cluster-id* ///jobs*logGroup*//c *job-id* ontainers*logStreamPrefix*//(stderr/ *pod-name* stdout)
+ 驱动程序日志-*virtual-cluster-id* ///jobs*logGroup*//containers*logStreamPrefix*//spark--driv *job-id* er/ (stderrstdout) *spark-application-id* *job-id*
+ 执行者日志-*virtual-cluster-id* ///jobs*logGroup*//containers*logStreamPrefix*///(st *job-id* derr/stdout*spark-application-id*) *executor-pod-name*

## 列出任务运行
<a name="emr-eks-jobs-list"></a>

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

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

## 描述任务运行
<a name="emr-eks-jobs-describe"></a>

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

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

## 取消任务运行
<a name="emr-eks-jobs-cancel"></a>

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

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

# 通过 StartJobRun API 运行 Spark SQL 脚本
<a name="emr-eks-jobs-spark-sql-parameters"></a>

Amazon EMR on EKS 6.7.0 及更高版本包含一个 Spark SQL 任务驱动程序，可让您通过 `StartJobRun` API 运行 Spark SQL 脚本。您可以提供 SQL 入口点文件，以使用 `StartJobRun` API 在 Amazon EMR on EKS 上直接运行 Spark SQL 查询，而无需对现有 Spark SQL 脚本进行任何修改。下表列出了通过 StartJobRun API 支持 Spark SQL 作业的 Spark 参数。

您可以选择以下 Spark 参数发送到 Spark SQL 任务。使用这些参数覆盖默认 Spark 属性。


| 选项 | 描述 | 
| --- | --- | 
|  --name NAME  | 应用程序名称 | 
| -jars JARS | 以逗号分隔的 jar 列表，这些元素包含在驱动程序和执行程序的类路径中。 | 
| --packages | 以逗号分隔的 jar 的 maven 坐标列表，这些坐标包含在驱动程序和执行程序的类路径中。 | 
| --exclude-packages | 以逗号分隔的 groupId:artifactId 列表，在解析 –packages 中提供的依赖项时要排除这些元素以避免依赖项冲突。 | 
| --repositories | 以逗号分隔的其他远程存储库列表，用于搜索 –packages 给出的 maven 坐标。 | 
| --files FILES | 以逗号分隔的文件列表，这些文件放置在每个执行器的工作目录中。 | 
| --conf PROP=VALUE | Spark 配置属性。 | 
| --properties-file FILE | 从中加载额外属性的文件的路径。 | 
| --driver-memory MEM | 驱动程序的内存。默认值为 1024MB。 | 
| --driver-java-options | 传递给驱动程序的额外 Java 选项。 | 
| --driver-library-path | 传递给驱动程序的额外库路径条目。 | 
| --driver-class-path | 传递给驱动程序的额外类路径条目。 | 
| --executor-memory MEM | 每个执行器的内存。默认为 1GB。 | 
| --driver-cores NUM | 驱动程序使用的内核数。 | 
| --total-executor-cores NUM | 所有执行器的内核总数。 | 
| --executor-cores NUM | 每个执行程序使用的内核数。 | 
| --num-executors NUM | 要启动的执行程序数。 | 
| -hivevar <key=value> | 适用于 Hive 命令的变量替换，例如 -hivevar A=B | 
| -hiveconf <property=value> | 用于给定属性的值。 | 

对于 Spark SQL 作业，请创建一个 start-job-run-request .json 文件并指定作业运行所需的参数，如以下示例所示：

```
{
  "name": "myjob", 
  "virtualClusterId": "123456",  
  "executionRoleArn": "iam_role_name_for_job_execution", 
  "releaseLabel": "emr-6.7.0-latest", 
  "jobDriver": {
    "sparkSqlJobDriver": {
      "entryPoint": "entryPoint_location",
       "sparkSqlParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1"
    }
  }, 
  "configurationOverrides": {
    "applicationConfiguration": [
      {
        "classification": "spark-defaults", 
        "properties": {
          "spark.driver.memory":"2G"
         }
      }
    ], 
    "monitoringConfiguration": {
      "persistentAppUI": "ENABLED", 
      "cloudWatchMonitoringConfiguration": {
        "logGroupName": "my_log_group", 
        "logStreamNamePrefix": "log_stream_prefix"
      }, 
      "s3MonitoringConfiguration": {
        "logUri": "s3://my_s3_log_location"
      }
    }
  }
}
```

# 任务运行状态
<a name="emr-eks-jobs-states"></a>

当您将一个任务运行提交到 Amazon EMR on EKS 的任务队列时，该任务运行将进入 `PENDING` 状态。随后，它将经历以下状态，直至成功（退出并返回代码 `0`）或失败（退出并返回非零代码）。

任务运行可具有以下状态：
+ `PENDING` - 将任务运行提交到 Amazon EMR on EKS 时的初始任务状态。任务正在等待提交到虚拟集群，并且 Amazon EMR on EKS 正在提交此任务。
+ `SUBMITTED` - 已成功提交到虚拟集群的任务运行。然后，集群调度器尝试在集群上运行此任务。
+ `RUNNING` - 任务运行正在虚拟集群中运行。在 Spark 应用程序中，这意味着 Spark 驱动程序进程处于 `running` 状态。
+ `FAILED` - 任务运行未能提交到虚拟集群或未成功完成提交。查看 StateDetails 并 FailureReason 查找有关此任务失败的更多信息。
+ `COMPLETED` - 任务运行已成功完成。
+ `CANCEL_PENDING` - 任务运行已请求取消。Amazon EMR on EKS 正在尝试取消虚拟集群上的任务。
+ `CANCELLED` - 任务运行已成功取消。

# 查看 Amazon EMR 控制台中的任务
<a name="emr-eks-jobs-console"></a>

您可以查看作业运行数据，从而监控每个作业的运行状态。要在 Amazon EMR 控制台中查看任务，请执行以下步骤。

1. 在 Amazon EMR 控制台左侧菜单中，从 Amazon EMR on EKS 下，选择 **Virtual clusters**（虚拟集群）。

1. 从虚拟集群列表中，选择您要查看任务的虚拟集群。

1. 在**任务运行**表中，选择 **View logs (查看日志)** 以查看任务运行的详细信息。

**注意**  
默认情况下，系统会启用一键单击体验支持。在任务提交过程中，可通过将 `monitoringConfiguration` 中的设置从 `persistentAppUI` 改为 `DISABLED`，关闭提交。有关更多信息，请参阅[查看持久性应用程序用户界面](https://docs.aws.amazon.com/emr/latest/ManagementGuide/app-history-spark-UI.html)。

# 运行任务时的常见错误
<a name="emr-eks-jobs-error"></a>

当您运行 `StartJobRun` API 时，可能会发生以下错误。表中列出了每个错误，提供了缓解措施，以便您快速解决问题。


| 错误消息 | 错误条件 | 向您建议的后续步骤 | 
| --- | --- | --- | 
|  错误：参数--*argument* 为必填项  | 缺少必需参数。 | 将缺少的实参添加到 API 请求中。 | 
| 调用 StartJobRun操作时出错 (AccessDeniedException)：用户：无权执行：emr-con ARN tainers：StartJobRun | 缺少执行角色。 | 请参阅使用 [将任务执行角色与 Amazon EMR on EKS 结合使用](iam-execution-role.md)。 | 
|  调用 StartJobRun操作时出错 (AccessDeniedException)：用户：无权执行：emr-con *ARN* tainers：StartJobRun  |  调用方没有权限通过条件键访问执行角色 [[有效/无效格式]。  | 请参阅[将任务执行角色与 Amazon EMR on EKS 结合使用](iam-execution-role.md)。 | 
|  调用 StartJobRun操作时出错 (AccessDeniedException)：用户：无权执行：emr-con *ARN* tainers：StartJobRun  |  任务提交者和执行角色 ARN 来自不同的账户。  | 确保任务提交者和执行角色 ARN 来自同一 AWS 账户。 | 
|  检测到 1 个验证错误：“executionRoleArn” *Role* 处的值未能满足 ARN 正则表达式模式：^arn :( aws [a-za-z0-9-] \$1): iam:: (\$1 d \$112\$1)？ : (角色 (\$1 u002f) \$1 (\$1 u002F [\$1 u0021-\$1 u007F] \$1\$1 u002F)) [\$1 w\$1=, .@-] \$1) [\$1 w\$1=, .@-] \$1)  |  调用方拥有通过条件键执行角色的权限，但该角色不满足 ARN 格式的约束条件。  | 提供遵循 ARN 格式的执行角色。请参阅[将任务执行角色与 Amazon EMR on EKS 结合使用](iam-execution-role.md)。 | 
|  调用 StartJobRun操作时出错 (ResourceNotFoundException)：虚拟群集*Virtual Cluster ID*不存在。  |  找不到虚拟集群 ID。  | 请提供在 Amazon EMR on EKS 上注册的虚拟集群 ID。 | 
|  调用 StartJobRun操作时出现错误 (ValidationException)：虚拟群集*state*状态对创建资源无效 JobRun。  |  虚拟集群尚未准备好执行任务。  | 请参阅[虚拟集群状态](virtual-cluster.md#virtual-cluster-states)。 | 
|  调用 StartJobRun操作时出错 (ResourceNotFoundException)：版本*RELEASE*不存在。  |  任务提交中指定的版本不正确。  | 请参阅[Amazon EMR on EKS 版本](emr-eks-releases.md)。 | 
|  调用 StartJobRun操作时出现错误 (AccessDeniedException)：用户：无权在资源StartJobRun 上执行：*ARN*emr-containers：*ARN*并明确拒绝。 调用 StartJobRun操作时出错 (AccessDeniedException)：用户：无权在资源StartJobRun 上执行：*ARN*emr-containers：*ARN*  | 用户无权拨打电话 StartJobRun。 | 请参阅[将任务执行角色与 Amazon EMR on EKS 结合使用](iam-execution-role.md)。 | 
|  调用 StartJobRun操作时出错 (ValidationException)：ConfigurationOverrides.monitoringConfiguration.s3 .log MonitoringConfiguration uri 无法满足约束条件：%s  |  S3 路径 URI 语法无效。  | logUri 的格式应为 s3://... | 

当您在任务运行之前运行 `DescribeJobRun` API 时，可能会发生以下错误。


| 错误消息 | 错误条件 | 向您建议的后续步骤 | 
| --- | --- | --- | 
|  StateDetails： JobRun 提交失败。 *classification*不支持分类。 failureReason：VALIDATION\$1ERROR state: FAILED。  | 中的 StartJobRun 参数无效。 | 请参阅[Amazon EMR on EKS 版本](emr-eks-releases.md)。 | 
|  状态详情：集群*EKS Cluster ID*不存在。 failureReason: CLUSTER\$1UNAVAILABLE state: FAILED  | EKS 集群不可用。 | 检查 EKS 集群是否存在并拥有适当的权限。有关更多信息，请参阅 [设置 Amazon EMR on EKS](setting-up.md)。 | 
|  StateDetails：集群*EKS Cluster ID*没有足够的权限。 failureReason: CLUSTER\$1UNAVAILABLE state: FAILED  |  Amazon EMR 无权访问 EKS 集群。  | 验证是否在已注册的命名空间上为 Amazon EMR 设置了权限。有关更多信息，请参阅 [设置 Amazon EMR on EKS](setting-up.md)。 | 
|  StateDetails：*EKS Cluster ID*目前无法访问集群。 failureReason: CLUSTER\$1UNAVAILABLE state: FAILED  |  无法访问 EKS 集群。  | 检查 EKS 集群是否存在并拥有适当的权限。有关更多信息，请参阅 [设置 Amazon EMR on EKS](setting-up.md)。 | 
|  StateDetails：由于内部错误， JobRun 提交失败。 failureReason: INTERNAL\$1ERROR state: FAILED  |  EKS 集群内部出现错误。  | 不适用 | 
|  状态详情：集群*EKS Cluster ID*没有足够的资源。 failureReason: USER\$1ERROR state: FAILED  |  EKS 集群中没有足够的资源来运行任务。  | 向 EKS 节点组添加更多容量或设置 EKS Autoscaler。有关更多信息，请参阅 [Cluster Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/cluster-autoscaler.html)。 | 

当您在任务运行后运行 `DescribeJobRun` API 时，会出现以下错误。


| 错误消息 | 错误条件 | 向您建议的后续步骤 | 
| --- | --- | --- | 
|  StateDetails: 无法监控您的 JobRun. 集群*EKS Cluster ID*不存在。 failureReason: CLUSTER\$1UNAVAILABLE state: FAILED  | 该 EKS 集群不存在。 | 检查 EKS 集群是否存在并拥有适当的权限。有关更多信息，请参阅 [设置 Amazon EMR on EKS](setting-up.md)。 | 
|  StateDetails: 无法监控您的 JobRun. 集群权限*EKS Cluster ID*不足。 failureReason: CLUSTER\$1UNAVAILABLE state: FAILED  | Amazon EMR 无权访问 EKS 集群。 | 验证是否在已注册的命名空间上为 Amazon EMR 设置了权限。有关更多信息，请参阅 [设置 Amazon EMR on EKS](setting-up.md)。 | 
|  StateDetails: 无法监控您的 JobRun. *EKS Cluster ID*目前无法访问集群。 failureReason: CLUSTER\$1UNAVAILABLE state: FAILED  |  无法访问 EKS 集群。  | 检查 EKS 集群是否存在并拥有适当的权限。有关更多信息，请参阅 [设置 Amazon EMR on EKS](setting-up.md)。 | 
|  StateDetails： JobRun 由于内部错误，无法监控您的状态 failureReason: INTERNAL\$1ERROR state: FAILED  |  发生了内部错误，无法进行 JobRun 监控。  | 不适用 | 

当作业无法启动且作业在“已提交”状态下等待 15 分钟时，可能会发生以下错误。这可能是由于集群资源缺失导致的。


| 错误消息 | 错误条件 | 向您建议的后续步骤 | 
| --- | --- | --- | 
|  集群超时  | 作业处于“已提交”状态已有 15 分钟或更长时间。 | 您可以使用下面所示的配置覆盖来覆盖此参数的默认设置 15 分钟。 | 

使用以下配置，将集群超时设置更改为 30 分钟。请注意，您提供的新 `job-start-timeout` 值应以秒为单位：

```
{
"configurationOverrides": {
  "applicationConfiguration": [{
      "classification": "emr-containers-defaults",
      "properties": {
          "job-start-timeout":"1800"
      }
  }]
}
```