As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configurar a escalabilidade gerenciada para a Amazon EMR
As seções a seguir explicam como iniciar um EMR cluster que usa escalabilidade gerenciada com o AWS Management Console AWS SDK for Java, o ou o. AWS Command Line Interface
Tópicos
Use o AWS Management Console para configurar o escalonamento gerenciado
Você pode usar o EMR console da Amazon para configurar a escalabilidade gerenciada ao criar um cluster ou para alterar uma política de escalabilidade gerenciada para um cluster em execução.
Use o AWS CLI para configurar o escalonamento gerenciado
Você pode usar AWS CLI comandos da Amazon EMR para configurar a escalabilidade gerenciada ao criar um cluster. Você pode usar uma sintaxe abreviada, especificando a JSON configuração em linha nos comandos relevantes, ou pode referenciar um arquivo contendo a configuração. JSON Também é possível aplicar uma política de escalabilidade gerenciada a um cluster existente e remover uma política de escalabilidade gerenciada que foi aplicada anteriormente. Além disso, você pode recuperar os detalhes da configuração de uma política de escalabilidade de um cluster em execução.
Habilitar a escalabilidade gerenciada durante a execução do cluster
É possível habilitar a escalabilidade gerenciada durante a execução do cluster, conforme demonstra o exemplo a seguir.
aws emr create-cluster \ --service-role EMR_DefaultRole \ --release-label emr-7.5.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}'
Você também pode especificar uma configuração de política gerenciada usando a managed-scaling-policy opção -- ao usarcreate-cluster
.
Aplicar uma política de escalabilidade gerenciada a um cluster existente
É possível aplicar uma política de escalabilidade gerenciada a um cluster existente, conforme demonstra o exemplo a seguir.
aws emr put-managed-scaling-policy --cluster-id
j-123456
--managed-scaling-policy ComputeLimits='{MinimumCapacityUnits=1
, MaximumCapacityUnits=10
, MaximumOnDemandCapacityUnits=10
, UnitType=Instances
}'
Também é possível aplicar uma política de escalabilidade gerenciada a um cluster existente usando o comando aws emr put-managed-scaling-policy
. O exemplo a seguir usa uma referência a um JSON arquivo,managedscaleconfig.json
, que especifica a configuração da política de escalabilidade gerenciada.
aws emr put-managed-scaling-policy --cluster-id
j-123456
--managed-scaling-policy file://./managedscaleconfig.json
O exemplo a seguir mostra o conteúdo do arquivo managedscaleconfig.json
, que define a política de escalabilidade gerenciada.
{ "ComputeLimits": { "UnitType": "
Instances
", "MinimumCapacityUnits":1
, "MaximumCapacityUnits":10
, "MaximumOnDemandCapacityUnits":10
} }
Recuperar uma configuração de política de escalabilidade gerenciada
O comando GetManagedScalingPolicy
recupera a configuração da política. Por exemplo, o comando a seguir recupera a configuração de um cluster com o ID j-123456
.
aws emr get-managed-scaling-policy --cluster-id
j-123456
Este comando gera o seguinte exemplo de saída.
{ "ManagedScalingPolicy": { "ComputeLimits": { "MinimumCapacityUnits":
1
, "MaximumOnDemandCapacityUnits":10
, "MaximumCapacityUnits":10
, "UnitType": "Instances" } } }
Para obter mais informações sobre o uso dos EMR comandos da Amazon no AWS CLI, consultehttps://docs.aws.amazon.com/cli/latest/reference/emr.
Remover a política de escalabilidade gerenciada
O comando RemoveManagedScalingPolicy
remove a configuração da política. Por exemplo, o comando a seguir remove a configuração de um cluster com o ID j-123456
.
aws emr remove-managed-scaling-policy --cluster-id
j-123456
Use AWS SDK for Java para configurar o escalonamento gerenciado
O trecho do programa a seguir mostra como configurar a escalabilidade gerenciada usando o AWS SDK for 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.5.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() { } }