Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Chiama Amazon EMR con Step Functions
Step Functions può controllare determinati AWS servizi direttamente da Amazon States Language (ASL). Per ulteriori informazioni, consultare Uso di altri servizi e Passa i parametri a un'API di servizio.
In che modo l'integrazione ottimizzata di Amazon EMR è diversa dall'integrazione con Amazon EMR SDK AWS
L'integrazione ottimizzata del servizio Amazon EMR include un set personalizzato di API che racchiudono le API Amazon EMR sottostanti, descritte di seguito. Per questo motivo, si differenzia in modo significativo dall'integrazione del servizio SDK Amazon AWS EMR. Inoltre, è supportato il modello di Esegui un processo (.sync) integrazione.
Per l'integrazione AWS Step Functions con Amazon EMR, utilizzi le API di integrazione del servizio Amazon EMR fornite. Le API di integrazione dei servizi sono simili alle corrispondenti API di Amazon EMR, con alcune differenze nei campi che vengono passati e nelle risposte restituite.
Step Functions non termina automaticamente un cluster Amazon EMR se l'esecuzione viene interrotta. Se la tua macchina a stati si arresta prima che il cluster Amazon EMR sia terminato, il cluster potrebbe continuare a funzionare a tempo indeterminato e potrebbe comportare costi aggiuntivi. Per evitare ciò, assicurati che tutti i cluster Amazon EMR che crei siano terminati correttamente. Per ulteriori informazioni, consultare:
-
Controlla la terminazione del cluster nella Guida per l'utente di Amazon EMR.
-
La sezione Service Integration Patterns. Esegui un processo (.sync)
Nota
A partire da emr-5.28.0
ora, puoi specificare il parametro StepConcurrencyLevel
durante la creazione di un cluster per consentire l'esecuzione di più passaggi in parallelo su un singolo cluster. È possibile utilizzare Step Functions Map
e Parallel
gli stati per inviare il lavoro in parallelo al cluster.
La disponibilità dell'integrazione del servizio Amazon EMR è soggetta alla disponibilità delle API di Amazon EMR. Consulta la documentazione di Amazon EMR per le limitazioni nelle regioni speciali.
Nota
Per l'integrazione con Amazon EMR, Step Functions utilizza una frequenza di polling dei job codificata di 60 secondi per i primi 10 minuti e per i 300 secondi successivi.
La tabella seguente descrive le differenze tra ogni API di integrazione dei servizi e la corrispondente API Amazon EMR.
API di integrazione del servizio Amazon EMR e API Amazon EMR corrispondenti | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
API di integrazione dei servizi Amazon EMR | API EMR corrispondente | Differenze | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createCluster Crea e avvia l'esecuzione di un cluster (flusso di lavoro). Amazon EMR è collegato direttamente a un tipo unico di ruolo IAM noto come ruolo collegato ai servizi. Perché |
runJobFlow | createCluster utilizza la stessa sintassi di richiesta di runJobFlow, ad eccezione di quanto segue:
Amazon EMR utilizza questo:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createCluster.sync Crea e avvia l'esecuzione di un cluster (flusso di lavoro). |
runJobFlow | Lo stesso di createCluster , ma attende che il cluster raggiunga lo stato WAITING . |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
setClusterTerminationProtezione Blocca un cluster (flusso di lavoro) in modo che le istanze EC2 nel cluster non possano essere terminate dall'intervento dell'utente, da una chiamata API o in caso di errore del flusso di lavoro. |
setTerminationProtection | La richiesta utilizza questo: Amazon EMR utilizza questo:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
terminateCluster Arresta un cluster (flusso di lavoro). |
terminateJobFlows | La richiesta utilizza questo: Amazon EMR utilizza questo:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
terminateCluster.sync Arresta un cluster (flusso di lavoro). |
terminateJobFlows | Lo stesso di terminateCluster , ma attende che il cluster venga terminato. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
addStep Aggiunge un nuovo passaggio a un cluster in esecuzione. Facoltativamente, puoi anche specificare il |
La richiesta utilizza la chiave"ClusterId" . Usi di Amazon EMR. "JobFlowId" La richiesta utilizza un singolo passaggio. Amazon EMR utilizza questo: La risposta è: Amazon EMR restituisce questo:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
addStep.sync Aggiunge un nuovo passaggio a un cluster in esecuzione. Facoltativamente, puoi anche specificare il |
Come addStep , ma attende il completamento del passaggio. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cancelStep Annulla un passaggio in sospeso in un cluster in esecuzione. |
cancelSteps | La richiesta utilizza questo: Amazon EMR utilizza questo: La risposta è: Amazon EMR utilizza questo:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
modifyInstanceFleetByName
Modifica le capacità Spot target e on demand per il parco di istanze con il |
modifyInstanceFleet | La richiesta è la stessa di quella di modifyInstanceFleet , ad eccezione di quanto segue:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
modifyInstanceGroupByName
Modifica il numero di nodi e le impostazioni di configurazione di un gruppo di istanze. |
modifyInstanceGroups | La richiesta è questa: Amazon EMR utilizza un elenco:
All'interno dell'oggetto È stato aggiunto un nuovo campo, |
L'esempio seguente include uno stato Task
che crea un cluster.
"Create_Cluster": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:createCluster.sync",
"Parameters": {
"Name": "MyWorkflowCluster",
"VisibleToAllUsers": true,
"ReleaseLabel": "emr-5.28.0",
"Applications": [
{
"Name": "Hive"
}
],
"ServiceRole": "EMR_DefaultRole",
"JobFlowRole": "EMR_EC2_DefaultRole",
"LogUri": "s3n://aws-logs-123456789012-us-east-1/elasticmapreduce/",
"Instances": {
"KeepJobFlowAliveWhenNoSteps": true,
"InstanceFleets": [
{
"InstanceFleetType": "MASTER",
"Name": "MASTER",
"TargetOnDemandCapacity": 1,
"InstanceTypeConfigs": [
{
"InstanceType": "m4.xlarge"
}
]
},
{
"InstanceFleetType": "CORE",
"Name": "CORE",
"TargetOnDemandCapacity": 1,
"InstanceTypeConfigs": [
{
"InstanceType": "m4.xlarge"
}
]
}
]
}
},
"End": true
}
Di seguito è riportato uno stato Task
che consente la protezione di terminazione.
"Enable_Termination_Protection": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:setClusterTerminationProtection",
"Parameters": {
"ClusterId.$": "$.ClusterId",
"TerminationProtected": true
},
"End": true
}
Di seguito è riportato uno stato Task
che invia un passaggio a un cluster.
"Step_One": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:addStep.sync",
"Parameters": {
"ClusterId.$": "$.ClusterId",
"ExecutionRoleArn": "arn:aws:iam::123456789012
:role/myEMR-execution-role
",
"Step": {
"Name": "The first step",
"ActionOnFailure": "CONTINUE",
"HadoopJarStep": {
"Jar": "command-runner.jar",
"Args": [
"hive-script",
"--run-hive-script",
"--args",
"-f",
"s3://<region>
.elasticmapreduce.samples/cloudfront/code/Hive_CloudFront.q",
"-d",
"INPUT=s3://<region>
.elasticmapreduce.samples",
"-d",
"OUTPUT=s3://<mybucket>
/MyHiveQueryResults/"
]
}
}
},
"End": true
}
Di seguito è riportato uno stato Task
che annulla un passaggio.
"Cancel_Step_One": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:cancelStep",
"Parameters": {
"ClusterId.$": "$.ClusterId",
"StepId.$": "$.AddStepsResult.StepId"
},
"End": true
}
Di seguito è riportato uno stato Task
che termina un cluster.
"Terminate_Cluster": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:terminateCluster.sync",
"Parameters": {
"ClusterId.$": "$.ClusterId"
},
"End": true
}
Di seguito è riportato uno stato Task
che consente di scalare un cluster verso l'alto o verso il basso per un gruppo di istanze.
"ModifyInstanceGroupByName": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:modifyInstanceGroupByName",
"Parameters": {
"ClusterId": "j-1234567890123",
"InstanceGroupName": "MyCoreGroup",
"InstanceGroup": {
"InstanceCount": 8
}
},
"End": true
}
Di seguito è riportato uno stato Task
che consente di scalare un cluster verso l'alto o verso il basso per un parco di istanze.
"ModifyInstanceFleetByName": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:modifyInstanceFleetByName",
"Parameters": {
"ClusterId": "j-1234567890123",
"InstanceFleetName": "MyCoreFleet",
"InstanceFleet": {
"TargetOnDemandCapacity": 8,
"TargetSpotCapacity": 0
}
},
"End": true
}
Per informazioni su come configurare le IAM autorizzazioni quando vengono utilizzate Step Functions con altri AWS servizi, consulta. Politiche IAM per servizi integrati