

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.

# Configurer le dimensionnement géré pour Amazon EMR
<a name="managed-scaling-configure"></a>

Les sections suivantes expliquent comment lancer un cluster EMR qui utilise le dimensionnement géré avec le AWS Management Console AWS SDK pour Java, le ou le. AWS Command Line Interface

**Topics**
+ [Utilisez le AWS Management Console pour configurer le dimensionnement géré](#managed-scaling-console)
+ [Utilisez le AWS CLI pour configurer le dimensionnement géré](#managed-scaling-cli)
+ [AWS SDK pour Java À utiliser pour configurer le dimensionnement géré](#managed-scaling-sdk)

## Utilisez le AWS Management Console pour configurer le dimensionnement géré
<a name="managed-scaling-console"></a>

Vous pouvez utiliser la console Amazon EMR pour configurer la mise à l'échelle gérée lorsque vous créez un cluster ou pour modifier une politique de mise à l'échelle gérée pour un cluster en cours d'exécution.

------
#### [ Console ]

**Pour configurer le dimensionnement géré lorsque vous créez un cluster à l'aide de la console**

1. [Connectez-vous au et ouvrez la AWS Management Console console Amazon EMR à l'adresse /emr. https://console.aws.amazon.com](https://console.aws.amazon.com/emr)

1. Sous **EMR sur EC2** dans le volet de navigation de gauche, choisissez **Clusters**, puis **Créer un cluster**.

1. Choisissez une version Amazon EMR **emr-5.30.0** ou ultérieure, à l'exception de la version **emr-6.0.0.** 

1. Sous l'**option de mise à l'échelle et de mise en service du cluster**, choisissez **Utiliser la mise à l'échelle gérée par EMR**. Spécifiez le nombre **minimum** et **maximum** d'instances, le nombre **maximum d'instances de nœud principal** et le nombre **maximum d'instances à la demande**.

1. Choisissez toutes les autres options qui s'appliquent à votre cluster. 

1. Pour lancer cluster, choisissez **Créer un cluster**.

**Pour configurer le dimensionnement géré sur un cluster existant à l'aide de la console**

1. [Connectez-vous au et ouvrez la AWS Management Console console Amazon EMR à l'adresse /emr. https://console.aws.amazon.com](https://console.aws.amazon.com/emr)

1. Sous **EMR sur EC2**, dans le volet de navigation de gauche, choisissez **Clusters**, puis sélectionnez le cluster que vous souhaitez mettre à jour.

1. Dans l'onglet **Instances** de la page de détails du cluster, recherchez la section **Paramètres du groupe d'instances**. Sélectionnez **Modifier la mise à l'échelle du cluster** pour spécifier de nouvelles valeurs pour le nombre **minimum** et **maximum** d'instances et la limite **à la demande**.

------

## Utilisez le AWS CLI pour configurer le dimensionnement géré
<a name="managed-scaling-cli"></a>

Vous pouvez utiliser des AWS CLI commandes pour Amazon EMR afin de configurer le dimensionnement géré lorsque vous créez un cluster. Vous pouvez utiliser une syntaxe raccourcie, en spécifiant la configuration JSON compatible avec les commandes adéquates, ou vous pouvez indiquer un fichier contenant la configuration JSON. Vous pouvez également appliquer une stratégie de dimensionnement géré à un cluster existant et supprimer une stratégie de dimensionnement géré précédemment appliquée. En outre, vous pouvez récupérer les détails de configuration d'une stratégie de dimensionnement à partir d'un cluster en cours d'exécution.

**Activation du dimensionnement géré pendant le lancement du cluster**

Vous pouvez activer le dimensionnement géré pendant le lancement du cluster, comme le montre l'exemple suivant.

```
aws emr create-cluster \
 --service-role EMR_DefaultRole \
 --release-label emr-7.12.0 \
 --name EMR_Managed_Scaling_Enabled_Cluster \
 --applications Name=Spark Name=Hbase \
 --ec2-attributes KeyName=keyName,InstanceProfile=EMR_EC2_DefaultRole \
 --instance-groups InstanceType=m4.xlarge,InstanceGroupType=MASTER,InstanceCount=1 InstanceType=m4.xlarge,InstanceGroupType=CORE,InstanceCount=2 \
 --region us-east-1 \
 --managed-scaling-policy ComputeLimits='{MinimumCapacityUnits=2,MaximumCapacityUnits=4,UnitType=Instances}'
```

Vous pouvez également spécifier une configuration de politique gérée à l'aide de l'managed-scaling-policy option -- lorsque vous utilisez`create-cluster`. 

**Application d'une stratégie de dimensionnement géré à un cluster existant**

Vous pouvez appliquer une stratégie de dimensionnement géré à un cluster existant, comme le montre l'exemple suivant.

```
aws emr put-managed-scaling-policy  
--cluster-id j-123456  
--managed-scaling-policy ComputeLimits='{MinimumCapacityUnits=1,
MaximumCapacityUnits=10,  MaximumOnDemandCapacityUnits=10, UnitType=Instances}'
```

Vous pouvez également appliquer une stratégie de dimensionnement géré à un cluster existant à l'aide de la commande `aws emr put-managed-scaling-policy`. L'exemple suivant utilise une référence à un fichier JSON, `managedscaleconfig.json`, qui spécifie la configuration de la stratégie de dimensionnement géré.

```
aws emr put-managed-scaling-policy --cluster-id j-123456 --managed-scaling-policy file://./managedscaleconfig.json
```

L'exemple suivant présente le contenu du fichier `managedscaleconfig.json`, qui définit la stratégie de dimensionnement géré.

```
{
    "ComputeLimits": {
        "UnitType": "Instances",
        "MinimumCapacityUnits": 1,
        "MaximumCapacityUnits": 10,
        "MaximumOnDemandCapacityUnits": 10
    }
}
```

**Récupération d'une configuration de stratégie de dimensionnement géré**

La commande `GetManagedScalingPolicy` récupère la configuration de la stratégie. Par exemple, la commande suivante extrait la configuration pour le cluster avec un ID de cluster de `j-123456`.

```
aws emr get-managed-scaling-policy --cluster-id j-123456
```

La commande produit l'exemple de résultat suivant.

```
 1. {
 2.    "ManagedScalingPolicy": { 
 3.       "ComputeLimits": { 
 4.          "MinimumCapacityUnits": 1,
 5.          "MaximumOnDemandCapacityUnits": 10,
 6.          "MaximumCapacityUnits": 10,
 7.          "UnitType": "Instances"
 8.       }
 9.    }
10. }
```

Pour plus d'informations sur l'utilisation des commandes Amazon EMR dans le AWS CLI, consultez. [https://docs.aws.amazon.com/cli/latest/reference/emr](https://docs.aws.amazon.com/cli/latest/reference/emr)

**Suppression d'une stratégie de dimensionnement géré**

La commande `RemoveManagedScalingPolicy` supprime la configuration de stratégie. Par exemple, la commande suivante supprime la configuration pour le cluster dont l'ID est `j-123456`.

```
aws emr remove-managed-scaling-policy --cluster-id j-123456
```

## AWS SDK pour Java À utiliser pour configurer le dimensionnement géré
<a name="managed-scaling-sdk"></a>

L'extrait de programme suivant montre comment configurer le dimensionnement géré avec AWS SDK pour Java :

```
package com.amazonaws.emr.sample;

import java.util.ArrayList;
import java.util.List;

import com.amazonaws.AmazonClientException;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduce;
import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduceClientBuilder;
import com.amazonaws.services.elasticmapreduce.model.Application;
import com.amazonaws.services.elasticmapreduce.model.ComputeLimits;
import com.amazonaws.services.elasticmapreduce.model.ComputeLimitsUnitType;
import com.amazonaws.services.elasticmapreduce.model.InstanceGroupConfig;
import com.amazonaws.services.elasticmapreduce.model.JobFlowInstancesConfig;
import com.amazonaws.services.elasticmapreduce.model.ManagedScalingPolicy;
import com.amazonaws.services.elasticmapreduce.model.RunJobFlowRequest;
import com.amazonaws.services.elasticmapreduce.model.RunJobFlowResult;

public class CreateClusterWithManagedScalingWithIG {

	public static void main(String[] args) {
		AWSCredentials credentialsFromProfile = getCreadentials("AWS-Profile-Name-Here");
		
		/**
		 * Create an Amazon EMR client with the credentials and region specified in order to create the cluster
		 */
		AmazonElasticMapReduce emr = AmazonElasticMapReduceClientBuilder.standard()
			.withCredentials(new AWSStaticCredentialsProvider(credentialsFromProfile))
			.withRegion(Regions.US_EAST_1)
			.build();
		
		/**
		 * Create Instance Groups - Primary, Core, Task
		 */
		InstanceGroupConfig instanceGroupConfigMaster = new InstanceGroupConfig()
				.withInstanceCount(1)
				.withInstanceRole("MASTER")
				.withInstanceType("m4.large")
				.withMarket("ON_DEMAND"); 
				
		InstanceGroupConfig instanceGroupConfigCore = new InstanceGroupConfig()
			.withInstanceCount(4)
			.withInstanceRole("CORE")
			.withInstanceType("m4.large")
			.withMarket("ON_DEMAND");
			
		InstanceGroupConfig instanceGroupConfigTask = new InstanceGroupConfig()
			.withInstanceCount(5)
			.withInstanceRole("TASK")
			.withInstanceType("m4.large")
			.withMarket("ON_DEMAND");

		List<InstanceGroupConfig> igConfigs = new ArrayList<>();
		igConfigs.add(instanceGroupConfigMaster);
		igConfigs.add(instanceGroupConfigCore);
		igConfigs.add(instanceGroupConfigTask);
		
        /**
         *  specify applications to be installed and configured when Amazon EMR creates the cluster
         */
		Application hive = new Application().withName("Hive");
		Application spark = new Application().withName("Spark");
		Application ganglia = new Application().withName("Ganglia");
		Application zeppelin = new Application().withName("Zeppelin");
		
		/** 
		 * Managed Scaling Configuration - 
         * Using UnitType=Instances for clusters composed of instance groups
		 *
         * Other options are: 
         * UnitType = VCPU ( for clusters composed of instance groups)
         * UnitType = InstanceFleetUnits ( for clusters composed of instance fleets)
         **/
		ComputeLimits computeLimits = new ComputeLimits()
				.withMinimumCapacityUnits(1)
				.withMaximumCapacityUnits(20)
				.withUnitType(ComputeLimitsUnitType.Instances);
		
		ManagedScalingPolicy managedScalingPolicy = new ManagedScalingPolicy();
		managedScalingPolicy.setComputeLimits(computeLimits);
		
		// create the cluster with a managed scaling policy
		RunJobFlowRequest request = new RunJobFlowRequest()
	       		.withName("EMR_Managed_Scaling_TestCluster")
	       		.withReleaseLabel("emr-7.12.0")          // Specifies the version label for the Amazon EMR release; we recommend the latest release
	       		.withApplications(hive,spark,ganglia,zeppelin)
	       		.withLogUri("s3://path/to/my/emr/logs")  // A URI in S3 for log files is required when debugging is enabled.
	       		.withServiceRole("EMR_DefaultRole")      // If you use a custom IAM service role, replace the default role with the custom role.
	       		.withJobFlowRole("EMR_EC2_DefaultRole")  // If you use a custom Amazon EMR role for EC2 instance profile, replace the default role with the custom Amazon EMR role.
	       		.withInstances(new JobFlowInstancesConfig().withInstanceGroups(igConfigs)
	       	   		.withEc2SubnetId("subnet-123456789012345")
	           		.withEc2KeyName("my-ec2-key-name") 
	           		.withKeepJobFlowAliveWhenNoSteps(true))    
	       		.withManagedScalingPolicy(managedScalingPolicy);
	   RunJobFlowResult result = emr.runJobFlow(request); 
	   
	   System.out.println("The cluster ID is " + result.toString());
	}
	
	public static AWSCredentials getCredentials(String profileName) {
		// specifies any named profile in .aws/credentials as the credentials provider
		try {
			return new ProfileCredentialsProvider("AWS-Profile-Name-Here")
					.getCredentials(); 
        } catch (Exception e) {
            throw new AmazonClientException(
                    "Cannot load credentials from .aws/credentials file. " +
                    "Make sure that the credentials file exists and that the profile name is defined within it.",
                    e);
        }
	}
	
	public CreateClusterWithManagedScalingWithIG() { }
}
```