使用 Amazon Step Functions 在 EKS 上创建和管理 Amazon EMR 集群
了解如何使用 Amazon EMR on EKS 服务集成 API 将 Amazon Step Functions 与 Amazon EMR on EKS 集成。服务集成 API 与相应的 Amazon EMR on EKS API 相同,但并非所有 API 都支持所有集成模式,如下表所示。
要了解如何在 Step Functions 中与 Amazon 服务集成,请参阅集成 服务和在 Step Functions 中将参数传递给服务 API。
优化的 Amazon EMR on EKS 集成与 Amazon EMR on EKS Amazon 开发工具包集成有何不同
-
支持运行作业 (.sync) 集成模式。
-
没有针对 请求响应 集成模式的特定优化。
-
不支持等待具有任务令牌的回调集成模式。
注意
为了与 Amazon EMR 集成,Step Functions 在前 10 分钟具有硬编码的 60 秒作业轮询频率,10 分钟后为 300 秒作业轮询频率。
| API | 请求响应 | 运行作业 (.sync) |
|---|---|---|
| CreateVirtualCluster | 支持 | 不支持 |
| DeleteVirtualCluster | 支持 | 支持 |
| StartJobRun | 支持 | 支持 |
支持的 Amazon EMR on EKS API
输入或结果数据的配额
在服务之间发送或接收数据时,任务的最大输入或结果为 256 KiB,且需以 UTF-8 编码字符串形式呈现。请参阅与状态机执行相关的配额。
以下内容包含一个创建虚拟集群的 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 与其它 Amazon 服务结合使用时如何配置 IAM 权限,请参阅 Step Functions 如何为集成服务生成 IAM 策略。