

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.

# Caractéristiques de l'application Spark pour les versions AMI antérieures d'Amazon EMR
<a name="emr-3x-spark"></a>

## Utilisation interactive de Spark ou en mode de traitement par lots
<a name="emr-3x-spark-interactive-batch"></a>

Amazon EMR vous permet d'exécuter des applications Spark dans deux modes : 
+ Interactive
+ Par lots

Lorsque vous lancez un cluster de longue durée à l'aide de la console ou du AWS CLI, vous pouvez vous connecter via SSH au nœud principal en tant qu'utilisateur Hadoop et utiliser le shell Spark pour développer et exécuter vos applications Spark de manière interactive. L'utilisation de Spark vous permet de façon interactive de créer un prototype ou de tester les applications Spark plus facilement que dans un environnement de traitement par lots. Après avoir révisé avec succès l'application Spark en mode interactif, vous pouvez placer le programme JAR ou Python de cette application dans le système de fichiers local du nœud principal du cluster sur Amazon S3. Vous pouvez alors soumettre l'application en tant que flux de travail de traitement par lots.

En mode de traitement par lots, chargez votre script Spark sur Amazon S3 ou le système de fichiers local du nœud principal, puis soumettez le travail au cluster en tant qu'étape. Les étapes Spark peuvent être soumises à un cluster de longue durée ou à un cluster transitoire.

## Création d'un cluster avec Spark installé
<a name="emr-3x-spark-install"></a>

**Pour lancer un cluster avec Spark installé à l'aide de la console**

1. Accédez à la nouvelle console Amazon EMR et sélectionnez **Changer pour l'ancienne console** depuis le menu latéral. Pour plus d'informations sur ce qu'implique le passage à l'ancienne console, consultez la rubrique [Utilisation de l'ancienne console](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in).

1. Choisissez **Créer un cluster**.

1. Pour **Configuration des logiciels**, choisissez la version AMI dont vous avez besoin.

1.  Pour **Applications to be installed (Applications à installer)**, choisissez **Spark** dans la liste, puis choisissez **Configurer et ajouter**.

1. Ajoutez des arguments pour modifier la configuration de Spark comme vous le souhaitez. Pour de plus amples informations, veuillez consulter [Configuration de Spark](#emr-3x-spark-configure). Choisissez **Ajouter**.

1.  Sélectionnez d'autres options si nécessaire, puis choisissez **Create cluster (Créer le cluster)**.

L'exemple suivant montre comment créer un cluster avec Spark au moyen de Java :

```
AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials);
SupportedProductConfig sparkConfig = new SupportedProductConfig()
			.withName("Spark");

RunJobFlowRequest request = new RunJobFlowRequest()
			.withName("Spark Cluster")
			.withAmiVersion("3.11.0")
			.withNewSupportedProducts(sparkConfig)
			.withInstances(new JobFlowInstancesConfig()
				.withEc2KeyName("myKeyName")
				.withInstanceCount(1)
				.withKeepJobFlowAliveWhenNoSteps(true)
				.withMasterInstanceType("m3.xlarge")
				.withSlaveInstanceType("m3.xlarge")
			);			
RunJobFlowResult result = emr.runJobFlow(request);
```

## Configuration de Spark
<a name="emr-3x-spark-configure"></a>

Vous configurez Spark lorsque vous créez un cluster en exécutant l'action bootstrap située dans le [awslabs/emr-bootstrap-actions/sparkréférentiel sur Github](https://github.com/awslabs/emr-bootstrap-actions/tree/master/spark). Pour savoir quels arguments sont acceptés par l'action d'amorçage, consultez le fichier [README](https://github.com/aws-samples/emr-bootstrap-actions/blob/master/spark/examples/README.md)dans ce référentiel. L'action d'amorçage configure les propriétés dans le fichier `$SPARK_CONF_DIR/spark-defaults.conf`. Pour plus d'informations sur les paramètres, consultez la rubrique Spark Configuration dans la documentation Spark. Vous pouvez remplacer « latest » dans l'URL suivante avec le numéro de la version de Spark que vous installez, par exemple, `2.2.0` [http://spark.apache.org/docs/latest/configuration.html](http://spark.apache.org/docs/latest/configuration.html).

Vous pouvez également configurer Spark dynamiquement au moment de l'envoi de chaque application. Un paramètre permettant d'optimiser automatiquement l'allocation de ressources pour un exécuteur est disponible dans le fichier de configuration `spark`. Pour de plus amples informations, veuillez consulter [Remplacement des paramètres de configuration par défaut de Spark](#emr-3x-spark-dynamic-configuration).

### Modification des paramètres Spark par défaut
<a name="emr-3x-spark-default-settings"></a>

L'exemple suivant montre comment créer un cluster avec `spark.executor.memory` défini sur 2G au moyen de l' AWS CLI.

**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 "Spark cluster" --ami-version 3.11.0 \
--applications Name=Spark, Args=[-d,spark.executor.memory=2G] --ec2-attributes KeyName=myKey \
--instance-type m3.xlarge --instance-count 3 --use-default-roles
```

### Soumission d'un travail à Spark
<a name="emr-3x-spark-submit-work"></a>

Pour soumettre du travail à un cluster, utilisez une étape pour exécuter le script `spark-submit` sur votre cluster EMR. Ajoutez l'étape en utilisant la `addJobFlowSteps` méthode dans [AmazonElasticMapReduceClient](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/elasticmapreduce/AmazonElasticMapReduceClient.html):

```
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials);
StepFactory stepFactory = new StepFactory();
AddJobFlowStepsRequest req = new AddJobFlowStepsRequest();
req.withJobFlowId("j-1K48XXXXXXHCB");

List<StepConfig> stepConfigs = new ArrayList<StepConfig>();
		
StepConfig sparkStep = new StepConfig()
	.withName("Spark Step")
	.withActionOnFailure("CONTINUE")
	.withHadoopJarStep(stepFactory.newScriptRunnerStep("/home/hadoop/spark/bin/spark-submit","--class","org.apache.spark.examples.SparkPi","/home/hadoop/spark/lib/spark-examples-1.3.1-hadoop2.4.0.jar","10"));

stepConfigs.add(sparkStep);
req.withSteps(stepConfigs);
AddJobFlowStepsResult result = emr.addJobFlowSteps(req);
```

### Remplacement des paramètres de configuration par défaut de Spark
<a name="emr-3x-spark-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 :

```
/home/hadoop/spark/bin/spark-submit --executor-memory 1g --class org.apache.spark.examples.SparkPi /home/hadoop/spark/lib/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 /home/hadoop/spark/lib/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.