

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

# Configuração de grupos de instância uniformes no cluster do Amazon EMR
<a name="emr-uniform-instance-group"></a>

Com a configuração dos grupos de instâncias, cada tipo de nó (mestre, principal ou tarefa) consiste no mesmo tipo de instância e na mesma opção de compra para instâncias: On-Demand ou spot. Você especifica essas configurações ao criar um grupo de instâncias. Não é possível alterá-las depois. No entanto, você pode adicionar instâncias do mesmo tipo e opção de compra a grupos de instâncias core e de tarefas. Você também pode remover instâncias.

Se as On-Demand instâncias do cluster corresponderem aos atributos das reservas de capacidade aberta (tipo de instância, plataforma, locação e zona de disponibilidade) disponíveis em sua conta, as reservas de capacidade serão aplicadas automaticamente. É possível usar reservas de capacidade aberta para nós primários, centrais e de tarefa. No entanto, você não poderá usar reservas de capacidade direcionadas nem impedir que instâncias sejam iniciadas em reservas de capacidade abertas com atributos correspondentes ao provisionar clusters usando grupos de instâncias. Para usar reservas de capacidade direcionadas ou evitar que instâncias sejam iniciadas em reservas de capacidade abertas, use frotas de instâncias. Para obter mais informações, consulte [Uso de reservas de capacidade com frotas de instância no Amazon EMR](on-demand-capacity-reservations.md).

Para adicionar tipos de instâncias diferentes depois que um cluster for criado, é possível adicionar outros grupos de instâncias de tarefas. Você pode escolher diferentes tipos de instância e opções de compra para cada grupo de instância. Para obter mais informações, consulte [Use o ajuste de escala de cluster do Amazon EMR para se ajustar às mudanças nas workloads](emr-scale-on-demand.md).

Ao iniciar instâncias, a preferência de reserva de capacidade da On-Demand instância é padronizada para`open`, o que permite que ela seja executada em qualquer reserva de capacidade aberta que tenha atributos correspondentes (tipo de instância, plataforma, zona de disponibilidade). Para obter mais informações sobre reservas On-Demand de capacidade, consulte[Uso de reservas de capacidade com frotas de instância no Amazon EMR](on-demand-capacity-reservations.md).

Esta seção discute a criação de um cluster com grupos de instâncias uniformes. Para obter mais informações sobre como modificar um grupo de instâncias existente, adicionando ou removendo instâncias manualmente ou com escalabilidade automática, consulte [Gerenciamento de clusters do Amazon EMR](emr-manage.md).

## Usar o console para configurar grupos de instâncias uniformes
<a name="emr-uniform-instance-group-console"></a>

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

**Criar um cluster com grupos de instâncias usando o novo console**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon EMR em. [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr)

1. Em **EMR no EC2** no painel de navegação esquerdo, escolha **Clusters** e **Criar cluster**.

1. Em **Configuração do cluster**, escolha **Grupos de instâncias**.

1. Em **Grupos de nós**, há uma seção para cada tipo de grupo de nós. Para o grupo de nós primários, marque a caixa de seleção **Usar múltiplos nós primários** se quiser ter três nós primários. Marque a caixa de seleção **Usar a opção de compra spot** se quiser usar a compra spot.

1. Para os grupos de nós primários e centrais, selecione **Adicionar tipo de instância** e escolha até cinco tipos de instância. Para o grupo de tarefa, selecione **Adicionar tipo de instância** e escolha até 15 tipos de instância. O Amazon EMR poderá provisionar qualquer combinação desses tipos de instância ao executar o cluster.

1. Para alterar essas configurações, em cada tipo de grupo de nós, escolha o menu suspenso **Ações** ao lado de cada instância:  
**Adicionar volumes do EBS**  
Especifique os volumes do EBS a serem anexados ao tipo de instância após o provisionamento do Amazon EMR.  
**Editar preço máximo spot**  
Especifique um preço spot máximo para cada tipo de instância da frota. Você pode definir esse preço como uma porcentagem do On-Demand preço ou como um valor específico em dólares. Caso o preço spot atual em uma zona de disponibilidade esteja abaixo do preço spot máximo, o Amazon EMR provisiona instâncias spot. Você paga o preço spot e não necessariamente o preço spot máximo.

1. Opcionalmente, expanda a **Configuração do nó** para inserir uma configuração JSON ou carregar o JSON do Amazon S3.

1. Escolha qualquer outra opção que se aplique ao cluster. 

1. Para iniciar o cluster, escolha **Criar cluster**.

------

## Use o AWS CLI para criar um cluster com grupos de instâncias uniformes
<a name="emr-uniform-instance-group-cli"></a>

Para especificar a configuração de grupos de instâncias para um cluster usando a AWS CLI, use o comando `create-cluster` junto com o parâmetro `--instance-groups`. O Amazon EMR assume a opção On-Demand Instância, a menos que você especifique o `BidPrice` argumento para um grupo de instâncias. *Para ver exemplos de `create-cluster` comandos que iniciam grupos de On-Demand instâncias uniformes com instâncias e uma variedade de opções de cluster, digite `aws emr create-cluster help ` na linha de comando ou consulte [create-cluster na AWS CLI Referência de](https://docs.aws.amazon.com/cli/latest/reference/emr/create-cluster.html) comandos.*

Você pode usar o AWS CLI para criar grupos de instâncias uniformes em um cluster que usa instâncias spot. O preço Spot oferecido depende da zona de disponibilidade. Ao usar a CLI ou a API, você pode especificar a zona de disponibilidade com o `AvailabilityZone` argumento (se estiver usando uma EC2-classic rede) ou com o `SubnetID ` argumento do `--ec2-attributes ` parâmetro. A zona de disponibilidade ou sub-rede selecionada se aplica ao cluster e, portanto, é usada para todos os grupos de instâncias. Se você não especificar uma zona de disponibilidade ou sub-rede explicitamente, o Amazon EMR selecionará a zona de disponibilidade com o menor preço spot quando iniciar o cluster.

O exemplo a seguir demonstra um comando `create-cluster` que cria um grupo de instâncias primárias, um grupo de instâncias centrais e dois grupos de instâncias de tarefa, todos usando instâncias spot. {{myKey}}Substitua pelo nome do seu par de chaves do Amazon EC2. 

**nota**  
Os caracteres de continuação de linha do Linux (\\) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

```
aws emr create-cluster --name "{{MySpotCluster}}" \
  --release-label {{emr-7.13.0}} \
  --use-default-roles \
  --ec2-attributes KeyName={{myKey}} \
  --instance-groups \
    InstanceGroupType={{MASTER}},InstanceType={{m5.xlarge}},InstanceCount={{1}},BidPrice={{0.25}} \
    InstanceGroupType={{CORE}},InstanceType={{m5.xlarge}},InstanceCount={{2}},BidPrice={{0.03}} \
    InstanceGroupType={{TASK}},InstanceType={{m5.xlarge}},InstanceCount={{4}},BidPrice={{0.03}} \
    InstanceGroupType={{TASK}},InstanceType={{m5.xlarge}},InstanceCount={{2}},BidPrice={{0.04}}
```

Usando a CLI, é possível criar clusters de grupos de instâncias uniformes que especificam uma AMI personalizada exclusiva para cada tipo de instância do grupo de instâncias. Assim, você pode usar arquiteturas de instância diferentes no mesmo grupo de instâncias. Todo tipo de instância deve usar uma AMI personalizada com uma arquitetura correspondente. Por exemplo, você configuraria um tipo de instância m5.xlarge com uma AMI personalizada de arquitetura x86\_64 e um tipo de instância m6g.xlarge com uma AMI personalizada de arquitetura `AWS AARCH64` (ARM) correspondente. 

O exemplo a seguir mostra um cluster uniforme de grupos de instâncias criado com dois tipos de instância, cada um com a própria AMI personalizada. As AMIs personalizadas são especificadas somente no nível do tipo de instância, não no nível do cluster. Isso evita conflitos entre AMIs do tipo de instância e uma AMI no nível do cluster, o que faria com que a inicialização do cluster falhasse. 

```
aws emr create-cluster
  --release-label emr-5.30.0 \
  --service-role EMR_DefaultRole \
  --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \
  --instance-groups \
    InstanceGroupType=MASTER,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456 \
    InstanceGroupType=CORE,InstanceType=m6g.xlarge,InstanceCount=1,CustomAmiId=ami-234567
```

É possível adicionar múltiplas AMIs personalizadas a um grupo de instâncias que você adiciona a um cluster em execução. O argumento `CustomAmiId` pode ser usado com o comando `add-instance-groups`, conforme mostrado no exemplo a seguir.

```
aws emr add-instance-groups --cluster-id j-123456 \
  --instance-groups \
    InstanceGroupType=Task,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456
```

## Usar o SDK para Java para criar um grupo de instâncias
<a name="emr-instance-group-sdk"></a>

Você instancia um objeto `InstanceGroupConfig` que especifica a configuração de um grupo de instâncias para um cluster. Para usar instâncias Spot, defina as propriedades `withBidPrice` e `withMarket` no objeto `InstanceGroupConfig`. O código a seguir mostra como definir grupos de instância primários, centrais e de tarefa que executam instâncias Spot.

```
InstanceGroupConfig instanceGroupConfigMaster = new InstanceGroupConfig()
	.withInstanceCount(1)
	.withInstanceRole("MASTER")
	.withInstanceType("m4.large")
	.withMarket("SPOT")
	.withBidPrice("0.25"); 
	
InstanceGroupConfig instanceGroupConfigCore = new InstanceGroupConfig()
	.withInstanceCount(4)
	.withInstanceRole("CORE")
	.withInstanceType("m4.large")
	.withMarket("SPOT")
	.withBidPrice("0.03");
	
InstanceGroupConfig instanceGroupConfigTask = new InstanceGroupConfig()
	.withInstanceCount(2)
	.withInstanceRole("TASK")
	.withInstanceType("m4.large")
	.withMarket("SPOT")
	.withBidPrice("0.10");
```