本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 EKS 致电 Amazon EMRAmazon Step Functions
Step Functions 可以控制某些Amazon直接来自 Amazon 状态语言的服务。有关使用的更多信息Amazon Step Functions及其集成,请参阅下面这些内容:
-
这些区域有:运行作业 (.sync)支持集成模式。
-
没有针对请求响应集成模式。
-
这些区域有:等待具有任务令牌的回调不支持集成模式。
要集成Amazon Step Functions使用 EKS 上的亚马逊 EMR,在 EKS 服务集成 API 上使用亚马逊 EMR。服务集成 API 与 EKS API 上的相应 Amazon EMR 相同,但并非所有 API 都支持所有集成模式,如下表所示。
API | 请求响应 | 运行作业 (.sync) |
---|---|---|
CreateVirtualCluster | ✓ | |
DeleteVirtualCluster | ✓ | ✓ |
StartJobRun | ✓ | ✓ |
Amazon EMR 在 EKS API 中受支持:
Step Functions 中任务的最大输入或结果数据大小有一个配额。当您向另一个服务发送或接收其他服务的数据时,这限制了您作为 UTF-8 编码字符串的 262,144 字节的数据。请参阅与状态机执行相关的配额。
下面这个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://<mybucket>
/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://<mylogsbucket>
"
}
}
}
},
"End": true
}
下面这个Task
状态:删除虚拟集群并等待删除完成。
"Delete_Virtual_Cluster": {
"Type": "Task",
"Resource": "arn:aws:states:::emr-containers:deleteVirtualCluster.sync",
"Parameters": {
"Id.$": "$.VirtualClusterId"
},
"End": true
}
有关在将 Step Functions 与其他一起使用时如何配置 IAM 的信息Amazon服务,请参阅针对集成服务的 IAM 策略.