

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Ajout d'une étape Spark
<a name="emr-spark-submit-step"></a>

Vous pouvez utiliser des étapes Amazon EMR pour envoyer des tâches à l'infrastructure Spark installée sur un cluster EMR. Pour plus d'informations, consultez [Étapes](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-overview.html#emr-overview-data-processing) dans le Guide de gestion d'Amazon EMR. Dans la console et l'interface de ligne de commande, vous faites cela en utilisant une étape d'application Spark, qui exécute le script `spark-submit` comme une étape en votre compte. Avec l'API, vous utilisez une étape pour appeler `spark-submit` à l'aide de `command-runner.jar`.

Pour plus d'informations sur la soumission des applications à Spark, consultez la rubrique [Soumission d'applications](https://spark.apache.org/docs/latest/submitting-applications.html) dans la documentation Apache Spark.

**Pour soumettre une étape Spark à l'aide de la console**

1. [Ouvrez la console Amazon EMR à l'adresse /emr. https://console.aws.amazon.com](https://console.aws.amazon.com/emr/)

1. Dans la **Liste de clusters**, choisissez le nom de votre cluster.

1. Faites défiler l'affichage jusqu'à la section **Étapes** et développez-la, puis choisissez **Ajouter une étape**.

1. Dans la boîte de dialogue **Ajouter une étape** :
   + Pour **Type d'étape**, choisissez **Spark application**.
   + Pour **Nom**, acceptez le nom par défaut (application Spark) ou saisissez un nouveau nom.
   + Pour le **Mode de déploiement**, choisissez **Client** ou **Cluster**. Le mode client lance le programme pilote sur l'instance principale du cluster, tandis que le mode cluster lance votre programme pilote sur le cluster. Pour le mode client, la sortie du journal du pilote apparaît dans les journaux d'étape, tandis que pour le mode cluster, la sortie du journal du pilote apparaît dans les journaux du premier conteneur YARN. Pour plus d'informations, consultez [Présentation du mode cluster](https://spark.apache.org/docs/latest/cluster-overview.html) dans la documentation Apache Spark.
   + Spécifiez le paramètre **Spark-submit options (Options Spark-envoi)** souhaité. Pour plus d'informations sur les options `spark-submit`, consultez [Lancement d'applications avec spark-submit](https://spark.apache.org/docs/latest/submitting-applications.html#launching-applications-with-spark-submit).
   + Pour **Application location (Emplacement d'application)**, spécifiez le chemin d'accès local d'URI local ou S3 de l'application.
   + Pour **Arguments**, laissez le champ vide.
   + Pour **Action sur échec**, acceptez l'option par défaut (**Continuer**).

1. Choisissez **Ajouter**. L'étape s'affiche dans la console avec le statut En suspens. 

1. Le statut de l'étape passe de **Pending (En suspens)** à **Running (En cours d'exécution)** puis à **Completed (Terminé)**, au fur et à mesure de son exécution. Pour mettre à jour l'état, choisissez l'icône d'**Actualisation** au-dessus de la colonne **Actions**. 

1. Les résultats de l'étape se trouvent sur la page Détails de cluster de la console Amazon EMR, à côté de l'étape elle-même et sous **Fichiers de journaux** si vous avez configuré la journalisation. Vous trouverez le cas échéant les informations sur l'étape dans le compartiment de journaux que vous avez configuré lorsque vous avez lancé le cluster. 

**Pour soumettre un travail à Spark à l'aide du AWS CLI**

Soumettez une étape lorsque vous créez le cluster ou utilisez la sous-commande `aws emr add-steps` dans un cluster existant. 

1. Utilisez `create-cluster` comme illustré dans l'exemple suivant.
**Note**  
Les caractères de continuation de ligne Linux (\$1) sont inclus pour des raisons de lisibilité. Ils peuvent être supprimés ou utilisés dans les commandes Linux. Pour Windows, supprimez-les ou remplacez-les par un caret (^).

   ```
   aws emr create-cluster --name "Add Spark Step Cluster" --release-label emr-7.12.0 --applications Name=Spark \
   --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \
   --steps Type=Spark,Name="Spark Program",ActionOnFailure=CONTINUE,Args=[--class,org.apache.spark.examples.SparkPi,/usr/lib/spark/examples/jars/spark-examples.jar,10] --use-default-roles
   ```

   Comme alternative, vous pouvez utiliser `command-runner.jar` comme illustré dans l'exemple suivant.

   ```
   aws emr create-cluster --name "Add Spark Step Cluster" --release-label emr-7.12.0 \
   --applications Name=Spark --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \
   --steps Type=CUSTOM_JAR,Name="Spark Program",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[spark-example,SparkPi,10] --use-default-roles
   ```
**Note**  
Les caractères de continuation de ligne Linux (\$1) sont inclus pour des raisons de lisibilité. Ils peuvent être supprimés ou utilisés dans les commandes Linux. Pour Windows, supprimez-les ou remplacez-les par un caret (^).

1. Vous pouvez également ajouter des étapes à un cluster déjà en cours d'exécution. Utilisez `add-steps`.

   ```
   aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=Spark,Name="Spark Program",ActionOnFailure=CONTINUE,Args=[--class,org.apache.spark.examples.SparkPi,/usr/lib/spark/examples/jars/spark-examples.jar,10]
   ```

   Comme alternative, vous pouvez utiliser `command-runner.jar` comme illustré dans l'exemple suivant.

   ```
   aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=CUSTOM_JAR,Name="Spark Program",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[spark-example,SparkPi,10]
   ```

**Pour soumettre un travail à Spark à l'aide du kit SDK pour Java**

1. L'exemple suivant montre comment ajouter une étape à un cluster avec Spark à l'aide de Java.

   ```
   AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
   AmazonElasticMapReduce emr = new AmazonElasticMapReduceClient(credentials);
    
   StepFactory stepFactory = new StepFactory();
   AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials);
   AddJobFlowStepsRequest req = new AddJobFlowStepsRequest();
   req.withJobFlowId("j-1K48XXXXXXHCB");
   
   List<StepConfig> stepConfigs = new ArrayList<StepConfig>();
   		
   HadoopJarStepConfig sparkStepConf = new HadoopJarStepConfig()
   			.withJar("command-runner.jar")
   			.withArgs("spark-submit","--executor-memory","1g","--class","org.apache.spark.examples.SparkPi","/usr/lib/spark/examples/jars/spark-examples.jar","10");			
   		
   StepConfig sparkStep = new StepConfig()
   			.withName("Spark Step")
   			.withActionOnFailure("CONTINUE")
   			.withHadoopJarStep(sparkStepConf);
   
   stepConfigs.add(sparkStep);
   req.withSteps(stepConfigs);
   AddJobFlowStepsResult result = emr.addJobFlowSteps(req);
   ```

1. Affichez les résultats de l'étape en examinant les journaux de l'étape. Vous pouvez le faire AWS Management Console si vous avez activé la journalisation en choisissant **Étapes**, en sélectionnant votre étape, puis, pour les **fichiers journaux**, en choisissant l'une `stdout` ou l'autre`stderr`. Choisissez **Afficher les journaux** pour afficher les journaux disponibles.

## Remplacement des paramètres de configuration par défaut de Spark
<a name="dynamic-configuration"></a>

Vous souhaiterez probablement remplacer les valeurs de configuration par défaut de Spark indépendamment pour chaque application. Vous pouvez faire cela lorsque vous soumettez des applications à l'aide d'une étape, ce qui transmet essentiellement des options à `spark-submit`. Par exemple, vous pouvez changer la mémoire allouée à un processus d'exécuteur en modifiant `spark.executor.memory`. Vous pouvez fournir le commutateur `--executor-memory` avec un argument tel que :

```
spark-submit --executor-memory 1g --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 10
```

De même, vous pouvez ajuster `--executor-cores` et `--driver-memory`. Dans une étape, vous pouvez fournir les arguments suivants à l'étape :

```
--executor-memory 1g --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 10
```

Vous pouvez également ajuster les paramètres qui n'ont peut-être pas de commutateur intégré à l'aide de l'option `--conf`. Pour plus d'informations sur les autres paramètres ajustables, consultez la rubrique [Chargement dynamique de propriétés Spark](https://spark.apache.org/docs/latest/configuration.html#dynamically-loading-spark-properties) dans la documentation Apache Spark.