本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用在 EKS 上创建和管理 Amazon EMR 集群 AWS Step Functions
了解如何使用 EKS 上的 Amazon EMR 服务集成 AWS Step Functions 与 EKS 上的亚马逊 EMR 集成。 APIs服务集成与 EKS 上相应 APIs 的 Amazon EMR 相同 APIs,但并非所有集成模式都 APIs 支持所有集成模式,如下表所示。
要了解如何在 Step Functions 中与 AWS 服务集成,请参阅集成 服务和在 Step Functions 中将参数传递给服务 API。
EKS 上优化的亚马逊 EMR 集成与 EKS 上的 Amazon EMR SDK 集成有何不同 AWS
-
支持运行作业 (.sync) 集成模式。
-
没有针对请求响应集成模式的优化。
-
不支持等待具有任务令牌的回调集成模式。
注意
为了与 Amazon EMR 集成,Step Functions 在前 10 分钟具有硬编码的 60 秒作业轮询频率,10 分钟后为 300 秒作业轮询频率。
API | 请求响应 | 运行作业 (.sync) |
---|---|---|
CreateVirtualCluster | 支持 | 不支持 |
DeleteVirtualCluster | 支持 | 支持 |
StartJobRun | 支持 | 支持 |
在 EKS 上支持亚马逊 EMR: APIs
注意
在 Step Functions 中,任务的最大输入或结果数据大小有一个配额。这样,当您向其他服务发送数据或从其他服务接收数据时,您只能使用 256 KiB 的数据作为 UTF-8 编码的字符串。请参阅 与状态机执行相关的配额。
以下内容包含一个创建虚拟集群的 Task
状态。
"Create_Virtual_Cluster": {
"Type": "Task",
"Resource": "arn:aws:states:::emr-containers:createVirtualCluster",
"Parameters": {
"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",
"Parameters": {
"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",
"Parameters": {
"Id.$": "$.VirtualClusterId"
},
"End": true
}
要了解有关配置的信息 IAM 使用时的权限 Step Functions 对于其他 AWS 服务,请参阅Step Functions 如何为集成服务生成 IAM 策略。