

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 管理 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 Logs](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 - 這是對您要執行的 SQL 查詢檔案的 HCFS (Hadoop 相容檔案系統) 參考。

      如需可用於 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 Logs](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 CloudWatch Logs 或兩者。本主題可協助您開始在透過 Amazon EMR on EKS 啟動的作業上將應用程式日誌發布到 Amazon S3。

**S3 日誌 IAM 政策**

在您的作業可以傳送日誌資料到 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 政策中包含 `“s3:CreateBucket”` 許可。

在授予執行角色適當許可以便將日誌傳送到 Amazon S3 之後，當在 `start-job-run` 請求的 `monitoringConfiguration` 區段中傳遞 `s3MonitoringConfiguration` 時，會將日誌資料傳送到以下 Amazon S3 位置，如 [使用 管理任務執行 AWS CLI](emr-eks-jobs-CLI.md) 中所示。
+ 提交者日誌 - /*logUri*/*virtual-cluster-id*/jobs/*job-id*/containers/*pod-name*/(stderr.gz/stdout.gz)
+ 驅動程式日誌 - /*logUri*/*virtual-cluster-id*/jobs/*job-id*/containers/*spark-application-id*/spark-*job-id*-driver/(stderr.gz/stdout.gz)
+ 執行程式日誌 - /*logUri*/*virtual-cluster-id*/jobs/*job-id*/containers/*spark-application-id*/*executor-pod-name*/(stderr.gz/stdout.gz)

# 設定作業執行以使用 Amazon CloudWatch Logs
<a name="emr-eks-jobs-cloudwatch"></a>

若要監控作業進度並對失敗進行疑難排解，必須設定作業，以便將日誌資訊傳送到 Amazon S3、Amazon CloudWatch Logs 或兩者。本主題可協助您開始在透過 Amazon EMR on EKS 啟動的作業上使用 CloudWatch Logs。如需有關 CloudWatch Logs 的詳細資訊，請參閱《Amazon CloudWatch 使用者指南》中的[監控日誌檔案](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)。

**CloudWatch Logs IAM 政策**

為了讓作業將日誌資料傳送到 CloudWatch Logs，必須在作業執行角色的許可政策中包含下列許可。將 *my\$1log\$1group\$1name* 和 *my\$1log\$1stream\$1prefix* 分別取代為 CloudWatch 日誌群組名稱和日誌串流名稱。如果日誌群組和日誌串流不存在，只要執行角色 ARN 具有適當的許可，Amazon EMR 就會建立它們。

------
#### [ 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 政策應包含 `"logs:CreateLogGroup"` 許可。

在為執行角色提供適當的許可之後，當在 `start-job-run` 請求的 `monitoringConfiguration` 區段中傳遞 `cloudWatchMonitoringConfiguration` 時，應用程式會將其日誌資料傳送至 CloudWatch Logs，如 [使用 管理任務執行 AWS CLI](emr-eks-jobs-CLI.md) 中所示。

在 `StartJobRun` API 中，*log\$1group\$1name* 是 CloudWatch 的日誌群組名稱，而 *log\$1stream\$1prefix* 是 CloudWatch 的日誌串流名稱字首。您可以在 AWS 管理主控台中檢視及搜尋這些日誌。
+ 提交者日誌 - *logGroup*/*logStreamPrefix*/*virtual-cluster-id*/jobs/*job-id*/containers/*pod-name*/(stderr/stdout)
+ 驅動程式日誌 - *logGroup*/*logStreamPrefix*/*virtual-cluster-id*/jobs/*job-id*/containers/*spark-application-id*/spark-*job-id*-driver/(stderrstdout)
+ 執行程式日誌 - *logGroup*/*logStreamPrefix*/*virtual-cluster-id*/jobs/*job-id*/containers/*spark-application-id*/*executor-pod-name*/(stderr/stdout)

## 停止作業執行
<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 指令碼進行任何修改。下表列出了 Spark SQL 作業透過 StartJobRun API 支援的 Spark 參數。

可以從下面的 Spark 參數中選擇，以傳送到 Spark SQL 作業。使用這些參數來覆寫預設的 Spark 屬性。


| 選項 | Description | 
| --- | --- | 
|  --name NAME  | Application Name (應用程式名稱) | 
| --jars JARS | 驅動程式和執行程式 classpath 隨附的以逗號分隔的 jar 清單。 | 
| --packages | 驅動程式和執行程式 classpath 中包含以逗號分隔的 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 | 用於傳遞給驅動程式的額外 classpath 條目。 | 
| --executor-memory MEM | 每個執行程式的記憶體。預設值為 1 GB。 | 
| --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 下，選擇**虛擬叢集**。

1. 從虛擬叢集清單中，選取要檢視其作業的虛擬叢集。

1. 在**作業執行**資料表中，選取**檢視日誌**以檢視作業執行的詳細資訊。

**注意**  
預設啟用對單鍵體驗的支援 在作業提交期間，在 `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 時，可能會發生下列錯誤。資料表會列出每個錯誤並提供緩解步驟，讓您可以快速解決問題。


| 錯誤訊息 | 錯誤情況 | 建議的後續步驟 | 
| --- | --- | --- | 
|  error: argument --*argument* is required  | 缺少必要參數。 | 將缺少的引數新增到 API 請求。 | 
| 呼叫 StartJobRun 操作時發生錯誤 (AccessDeniedException)：User: ARN is not authorized to perform: emr-containers:StartJobRun | 缺少執行角色。 | 請參閱「使用 [搭配使用作業執行角色與 Amazon EMR on EKS](iam-execution-role.md)」。 | 
|  呼叫 StartJobRun 操作時發生錯誤 (AccessDeniedException)：User: *ARN* is not authorized to perform: emr-containers:StartJobRun  |  呼叫者沒有透過條件金鑰存取執行角色的許可 [有效/無效格式]。  | 請參閱 [搭配使用作業執行角色與 Amazon EMR on EKS](iam-execution-role.md)。 | 
|  呼叫 StartJobRun 操作時發生錯誤 (AccessDeniedException)：User: *ARN* is not authorized to perform: emr-containers:StartJobRun  |  作業提交者和執行角色 ARN 來自不同的帳戶。  | 確定作業提交者和執行角色 ARN 來自相同的 AWS 帳戶。 | 
|  偵測到 1 個驗證錯誤：'executionRoleArn' 的*角色*值無法滿足 ARN 規則表達式模式：^arn:(aws[a-zA-Z0-9-]\$1):iam::(\$1d\$112\$1)?:(role((\$1u002F)\$1(\$1u002F[\$1u0021-\$1u007F]\$1\$1u002F))[\$1w\$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)：User: *ARN* is not authorized to perform: emr-containers:StartJobRun on resource: *ARN* with an explicit deny。 呼叫 StartJobRun 操作時發生錯誤 (AccessDeniedException)：User: *ARN* is not authorized to perform: emr-containers:StartJobRun on resource: *ARN*  | 未授權使用者呼叫 StartJobRun。 | 請參閱 [搭配使用作業執行角色與 Amazon EMR on EKS](iam-execution-role.md)。 | 
|  呼叫 StartJobRun 操作時發生錯誤 (ValidationException)：configurationOverrides.monitoringConfiguration.s3MonitoringConfiguration.logUri failed to satisfy constraint : %s  |  S3 路徑 URI 語法無效。  | logUri 應採用 s3://... 的格式  | 

在作業執行之前執行 `DescribeJobRun` API 時，可能會發生下列錯誤。


| 錯誤訊息 | 錯誤情況 | 建議的後續步驟 | 
| --- | --- | --- | 
|  狀態詳細資訊：JobRun 提交失敗。 不支援 *classification* 分類。 失敗原因：VALIDATION\$1ERROR 狀態：FAILED。  | StartJobRun 中的參數無效。 | 請參閱 [Amazon EMR on EKS 發行版本](emr-eks-releases.md)。 | 
|  狀態詳細資訊：叢集 *EKS Cluster ID* 不存在。 失敗原因：CLUSTER\$1UNAVAILABLE 狀態：FAILED  | EKS 叢集無法使用。 | 檢查 EKS 叢集是否存在並具有正確的許可。如需詳細資訊，請參閱[設定 Amazon EMR on EKS](setting-up.md)。 | 
|  狀態詳細資訊：叢集 *EKS Cluster ID* 沒有足夠的許可。 失敗原因：CLUSTER\$1UNAVAILABLE 狀態：FAILED  |  Amazon EMR 沒有存取 EKS 叢集的許可。  | 確認已在註冊的命名空間中為 Amazon EMR 設定許可。如需詳細資訊，請參閱[設定 Amazon EMR on EKS](setting-up.md)。 | 
|  狀態詳細資訊：叢集 *EKS Cluster ID* 目前無法連線。 失敗原因：CLUSTER\$1UNAVAILABLE 狀態：FAILED  |  無法連線到 EKS 叢集。  | 檢查 EKS 叢集是否存在並具有正確的許可。如需詳細資訊，請參閱[設定 Amazon EMR on EKS](setting-up.md)。 | 
|  狀態詳細資訊：由於內部錯誤，JobRun 提交失敗。 失敗原因：INTERNAL\$1ERROR 狀態：FAILED  |  EKS 叢集發生內部錯誤。  | N/A | 
|  狀態詳細資訊：叢集 *EKS Cluster ID* 沒有足夠的資源。 失敗原因：USER\$1ERROR 狀態：FAILED  |  EKS 叢集中的資源不足，無法執行作業。  | 為 EKS 節點群組新增更多容量，或設定 EKS Autoscaler。如需詳細資訊，請參閱 [Cluster Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/cluster-autoscaler.html)。 | 

在作業執行之後執行 `DescribeJobRun` API 時，可能會發生下列錯誤。


| 錯誤訊息 | 錯誤情況 | 建議的後續步驟 | 
| --- | --- | --- | 
|  狀態詳細資訊：監控 JobRun 時出現問題。 叢集 *EKS Cluster ID* 不存在。 失敗原因：CLUSTER\$1UNAVAILABLE 狀態：FAILED  | EKS 叢集不存在。 | 檢查 EKS 叢集是否存在並具有正確的許可。如需詳細資訊，請參閱[設定 Amazon EMR on EKS](setting-up.md)。 | 
|  狀態詳細資訊：監控 JobRun 時出現問題。 叢集 *EKS Cluster ID* 沒有足夠的許可。 失敗原因：CLUSTER\$1UNAVAILABLE 狀態：FAILED  | Amazon EMR 沒有存取 EKS 叢集的許可。 | 確認已在註冊的命名空間中為 Amazon EMR 設定許可。如需詳細資訊，請參閱[設定 Amazon EMR on EKS](setting-up.md)。 | 
|  狀態詳細資訊：監控 JobRun 時出現問題。 叢集 *EKS Cluster ID* 目前無法連線。 失敗原因：CLUSTER\$1UNAVAILABLE 狀態：FAILED  |  無法連線到 EKS 叢集。  | 檢查 EKS 叢集是否存在並具有正確的許可。如需詳細資訊，請參閱[設定 Amazon EMR on EKS](setting-up.md)。 | 
|  狀態詳細資訊：由於內部錯誤，無法監控 JobRun 失敗原因：INTERNAL\$1ERROR 狀態：FAILED  |  發生內部錯誤，正在阻止 JobRun 監控。  | N/A | 

當作業無法啟動且作業處於 SUBMITTED 狀態 15 分鐘時，可能會發生下列錯誤。這可能是由於缺少叢集資源所致。


| 錯誤訊息 | 錯誤情況 | 建議的後續步驟 | 
| --- | --- | --- | 
|  叢集逾時  | 作業已處於 SUBMITTED 狀態 15 分鐘或更長時間。 | 可以使用如下所示的組態來覆寫此參數的 15 分鐘預設設定。 | 

使用下列組態將叢集逾時設定變更為 30 分鐘。請注意，提供的新 `job-start-timeout` 值的單位應為秒：

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