使用 Amazon EMR on EKSAmazon Step Functions - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用 Amazon EMR on EKSAmazon Step Functions

Step Functions 可以控制某些Amazon服务直接来自亚马逊状态语言。有关使用的更多信息Amazon Step Functions及其集成,请参阅以下内容。

EKS 上优化的亚马逊 EMR 集成与 EKS 上的亚马逊 EMR 有何不同AmazonSDK 集成

集成Amazon Step Functions在 EKS 上使用 Amazon EMR 时,使用亚马逊 EMR on EKS 服务集成 API。服务集成 API on EMR KS API on EKS API on EKS API on EKS

API 请求响应 运行作业 (.sync)
CreateVirtualCluster
DeleteVirtualCluster
StartJobRun

Amazon EMR on EKS API

注意

Step Functions 中任务的最大输入或结果数据大小。这样,当您向其他服务发送数据或从其他服务接收数据时,将数据限制为 262,144 字节作为 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://<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>" } } }, "Tags": { "taskType": "jobName" } }, "End": true }

下面这个状态Task状态,用于删除虚拟群集并等待删除完成。

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

有关在将Step Functions 与其他Amazon服务,请参阅集成服务的 IAM 政策.