

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

# 使用在 EKS 上创建和管理 Amazon EMR 集群 AWS Step Functions
<a name="connect-emr-eks"></a>

了解如何使用 EKS 上的 Amazon EMR 服务集成 AWS Step Functions 与 EKS 上的亚马逊 EMR 集成。 APIs服务集成与 EKS 上相应 APIs 的 Amazon EMR 相同 APIs，但并非所有集成模式都 APIs 支持所有集成模式，如下表所示。

要了解如何在 Step Functions 中与 AWS 服务集成，请参阅[集成 服务](integrate-services.md)和[在 Step Functions 中将参数传递给服务 API](connect-parameters.md)。

**EKS 上优化的亚马逊 EMR 集成与 EKS 上的 Amazon EMR SDK 集成有何不同 AWS**  
支持[运行作业 (.sync)](connect-to-resource.md#connect-sync) 集成模式。
没有针对 [请求响应](connect-to-resource.md#connect-default) 集成模式的特定优化。
不支持[等待具有任务令牌的回调](connect-to-resource.md#connect-wait-token)集成模式。

**注意**  
为了与 Amazon EMR 集成，Step Functions 在前 10 分钟具有硬编码的 60 秒作业轮询频率，10 分钟后为 300 秒作业轮询频率。


| API | 请求响应 | 运行作业 (.sync) | 
| --- | --- | --- | 
| CreateVirtualCluster | 支持 | 不支持 | 
| DeleteVirtualCluster | 支持 | 支持 | 
| StartJobRun | 支持 | 支持 | 

在 EKS 上支持亚马逊 EMR： APIs

**输入或结果数据的配额**  
在服务之间发送或接收数据时，任务的最大输入或结果为 256 KiB，且需以 UTF-8 编码字符串形式呈现。请参阅[与状态机执行相关的配额](service-quotas.md#service-limits-state-machine-executions)。


+ [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html)
  + [请求语法](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_RequestSyntax)
  + [支持的参数](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_RequestBody)
  + [响应语法](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_ResponseSyntax)
+ [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html)
  + [请求语法](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html#API_DeleteVirtualCluster_RequestSyntax)
  + [支持的参数](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html#API_DeleteVirtualCluster_RequestParameters)
  + [响应语法](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_ResponseSyntax)
+ [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html)
  + [请求语法](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html#API_StartJobRun_RequestSyntax)
  + [支持的参数](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html#API_StartJobRun_RequestParameters)
  + [响应语法](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html#API_StartJobRun_ResponseSyntax)

以下内容包含一个创建虚拟集群的 `Task` 状态。

```
"Create_Virtual_Cluster": {
  "Type": "Task",
  "Resource": "arn:aws:states:::emr-containers:createVirtualCluster",
  "Arguments": {
    "Name": "MyVirtualCluster",
    "ContainerProvider": {
      "Id": "EKSClusterName",
      "Type": "EKS",
      "Info": {
        "EksInfo": {
          "Namespace": "Namespace"
        }
      }
    }
  },
  "End": true
}
```

下面包括一个将作业提交到虚拟集群并等待完成的 `Task` 状态。

```
"Submit_Job": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-containers:startJobRun.sync",
    "Arguments": {
      "Name": "MyJobName",
      "VirtualClusterId": "{% $VirtualClusterId %}",
      "ExecutionRoleArn": "arn:aws:iam::<accountId>:role/job-execution-role",
      "ReleaseLabel": "emr-6.2.0-latest",
      "JobDriver": {
        "SparkSubmitJobDriver": {
          "EntryPoint": "s3://<amzn-s3-demo-bucket>/jobs/trip-count.py",
          "EntryPointArguments": [
            "60"
          ],
          "SparkSubmitParameters": "--conf spark.driver.cores=2 --conf spark.executor.instances=10 --conf spark.kubernetes.pyspark.pythonVersion=3 --conf spark.executor.memory=10G --conf spark.driver.memory=10G --conf spark.executor.cores=1 --conf spark.dynamicAllocation.enabled=false"
        }
      },
      "ConfigurationOverrides": {
        "ApplicationConfiguration": [
          {
            "Classification": "spark-defaults",
            "Properties": {
              "spark.executor.instances": "2",
              "spark.executor.memory": "2G"
            }
          }
        ],
        "MonitoringConfiguration": {
          "PersistentAppUI": "ENABLED",
          "CloudWatchMonitoringConfiguration": {
            "LogGroupName": "MyLogGroupName",
            "LogStreamNamePrefix": "MyLogStreamNamePrefix"
          },
          "S3MonitoringConfiguration": {
            "LogUri": "s3://<amzn-s3-demo-logging-bucket1>"
          }
        }
      },
      "Tags": {
        "taskType": "jobName"
      }
    },
    "End": true
}
```

下面包括一个删除虚拟集群并等待删除完成的 `Task` 状态。

```
"Delete_Virtual_Cluster": {
  "Type": "Task",
  "Resource": "arn:aws:states:::emr-containers:deleteVirtualCluster.sync",
  "Arguments": {
    "Id": "{% $states.input.VirtualClusterId %}",
  },
  "End": true
}
```

要了解有关在使用Step Functions其他 AWS 服务时配置IAM权限的信息，请参阅[Step Functions 如何为集成服务生成 IAM 策略](service-integration-iam-templates.md)。