

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à.

# Configurazione della scalabilità gestita per Amazon EMR
<a name="managed-scaling-configure"></a>

Le sezioni seguenti spiegano come avviare un cluster EMR che utilizza la scalabilità gestita con Console di gestione AWS AWS SDK per Java, the o. AWS Command Line Interface

**Topics**
+ [Utilizzare il per configurare la Console di gestione AWS scalabilità gestita](#managed-scaling-console)
+ [Utilizza il per configurare la scalabilità AWS CLI gestita](#managed-scaling-cli)
+ [AWS SDK per Java Da utilizzare per configurare la scalabilità gestita](#managed-scaling-sdk)

## Utilizzare il per configurare la Console di gestione AWS scalabilità gestita
<a name="managed-scaling-console"></a>

Puoi utilizzare la console Amazon EMR per configurare il dimensionamento gestito quando crei un cluster o per modificare una policy di dimensionamento gestita per un cluster in esecuzione.

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

**Per configurare la scalabilità gestita quando crei un cluster con la console**

1. [Accedi a e apri Console di gestione AWS la console Amazon EMR su https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr)

1. In **EMR on EC2** (EMR su EC2), nel riquadro di navigazione a sinistra, scegli **Clusters** (Cluster) e seleziona **Create cluster** (Crea cluster).

1. Scegli una versione di Amazon EMR **emr-5.30.0** o successiva, tranne quella **emr-6.0.0**. 

1. In **Cluster scaling and provisioning option** (Opzione di dimensionamento e provisioning del cluster), scegli **Use EMR-managed scaling** (Utilizza dimensionamento gestito da EMR). Specifica il numero **Minimum** (Minimo) e **Maximum** (Massimo) di istanze, il numero di istanze **Maximum core node** (Massimo del nodo core) e il numero di istanze **Maximum On-Demand** (Massimo on demand).

1. Scegli qualsiasi altra opzione applicabile al cluster. 

1. Per avviare il cluster, scegli **Create cluster** (Crea cluster).

**Per configurare la scalabilità gestita su un cluster esistente con la console**

1. [Accedi a e apri Console di gestione AWS la console Amazon EMR su https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr)

1. In **EMR on EC2** (EMR su EC2), nel riquadro di navigazione a sinistra, scegli **Clusters** (Cluster) e seleziona il cluster da aggiornare.

1. Nella scheda **Instances** (Istanze) della pagina dei dettagli del cluster, cerca la sezione **Instance group settings** (Impostazioni del gruppo di istanze). Seleziona **Edit cluster scaling** (Modifica dimensionamento del cluster) per specificare nuovi valori per il numero **Minimum** (Minimo) e **Maximum** (Massimo) di istanze e per il limite **On-Demand** (On demand).

------

## Utilizza il per configurare la scalabilità AWS CLI gestita
<a name="managed-scaling-cli"></a>

Puoi usare AWS CLI i comandi per Amazon EMR per configurare la scalabilità gestita quando crei un cluster. È possibile utilizzare una sintassi abbreviata, specificando la configurazione JSON inline all'interno dei relativi comandi, oppure si può fare riferimento a un file contenente la configurazione JSON. Inoltre puoi applicare una policy di dimensionamento gestito a un cluster esistente e rimuovere una policy di dimensionamento gestito applicata in precedenza. Inoltre, è possibile recuperare i dettagli di una configurazione di policy di dimensionamento da un cluster in esecuzione.

**Abilitazione del dimensionamento gestito durante l'avvio del cluster**

Puoi abilitare il dimensionamento gestito durante l'avvio del cluster, come illustrato nell'esempio seguente.

```
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}'
```

Puoi anche specificare una configurazione di policy gestita utilizzando l'managed-scaling-policy opzione -- quando usi. `create-cluster` 

**Applicazione di una policy di dimensionamento gestito a un cluster esistente**

Puoi applicare una policy di dimensionamento gestito a un cluster esistente come illustrato nell'esempio seguente.

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

Inoltre puoi applicare una policy di dimensionamento gestito a un cluster esistente utilizzando il comando `aws emr put-managed-scaling-policy`. L'esempio seguente utilizza un riferimento a un file JSON, `managedscaleconfig.json`, che specifica la configurazione della policy di dimensionamento gestito.

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

Nell'esempio seguente viene illustrato il contenuto del file `managedscaleconfig.json` che definisce la policy di dimensionamento gestito.

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

**Recupero di una configurazione di policy di dimensionamento gestito**

Il comando `GetManagedScalingPolicy` recupera la configurazione della policy. Ad esempio, il seguente comando recupera la configurazione per il cluster con un ID cluster pari a `j-123456`.

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

Il comando produce il seguente esempio di output.

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

Per ulteriori informazioni sull'utilizzo dei comandi Amazon EMR in AWS CLI, consulta. [https://docs.aws.amazon.com/cli/latest/reference/emr](https://docs.aws.amazon.com/cli/latest/reference/emr)

**Rimozione della policy di dimensionamento gestito**

Il comando `RemoveManagedScalingPolicy` rimuove la configurazione della policy. Ad esempio, il seguente comando recupera la configurazione per il cluster con ID cluster `j-123456`.

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

## AWS SDK per Java Da utilizzare per configurare la scalabilità gestita
<a name="managed-scaling-sdk"></a>

Il seguente estratto di programma mostra come configurare il dimensionamento gestito utilizzando AWS SDK per 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() { }
}
```