As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Criar e gerenciar clusters do Amazon EMR no EKS com o AWS Step Functions
Saiba como integrar o AWS Step Functions ao Amazon EMR no EKS utilizando as APIs de integração de serviços do Amazon EMR no EKS. As APIs de integração de serviços são iguais às APIs correspondentes do Amazon EMR no EKS, mas nem todas as APIs oferecem suporte a todos os padrões de integração, conforme mostrado na tabela a seguir.
Para saber mais sobre a integração com serviços da AWS no Step Functions, consulte Integração de produtos da e Transmitir parâmetros a uma API de serviço no Step Functions.
Como a integração otimizada do Amazon EMR no EKS é diferente da integração do SDK do Amazon EMR no EKS da AWS
-
O padrão de integração Executar um trabalho (.sync) é compatível.
-
Não há otimizações específicas para o padrão de integração Resposta de solicitação.
-
O padrão de integração Aguardar um retorno de chamada com um token de tarefa não é compatível.
nota
Para integração com o Amazon EMR, o Step Functions tem uma frequência de pesquisa de trabalhos de codificação rígida de 60 segundos para os primeiros 10 minutos e 300 segundos depois disso.
| API | Resposta de solicitação | Executar um trabalho (.sync) |
|---|---|---|
| CreateVirtualCluster | Compatível | Não compatível |
| DeleteVirtualCluster | Compatível | Compatível |
| StartJobRun | Compatível | Compatível |
Compatível com as APIs do Amazon EMR no EKS:
Cota para dados de entrada ou resultado
Ao enviar ou receber dados entre serviços, o máximo de entrada ou resultado de uma tarefa é 256 KiB de dados como uma string codificada em UTF-8. Consulte Cotas relacionadas a execuções de máquina de estado.
Veja a seguir um estado Task que cria um cluster virtual.
"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
}Veja a seguir um Task estado que envia um trabalho a um cluster virtual e aguarde até que ele seja concluído.
"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
}Veja a seguir um Task estado que exclui um cluster virtual e aguarde a conclusão da exclusão.
"Delete_Virtual_Cluster": {
"Type": "Task",
"Resource": "arn:aws:states:::emr-containers:deleteVirtualCluster.sync",
"Arguments": {
"Id": "{% $states.input.VirtualClusterId %}",
},
"End": true
}Para saber mais sobre como configurar as permissões do IAM ao usar o Step Functions com outros serviços da AWS, consulte Como o Step Functions gera políticas do IAM para serviços integrados.