Configurar grupos de instâncias uniformes - Amazon EMR

Configurar grupos de instâncias uniformes

Com a configuração de grupos de instâncias, cada tipo de nó (principal, core ou tarefa) consiste no mesmo tipo de instância e na mesma opção de compra para instâncias: Sob demanda 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 instâncias sob demanda do cluster corresponderem aos atributos das reservas de capacidade aberta (tipo de instância, plataforma, locação e zona de disponibilidade) disponíveis na 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 Usar reservas de capacidade com a frotas de instância.

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 Usar ajuste de escala de clusters.

Ao iniciar instâncias, a preferência da reserva de capacidade da instância sob demanda será padronizada como open, o que permitirá que ela seja executada em qualquer reserva de capacidade em aberto que tenha atributos correspondentes (tipo de instância, plataforma, zona de disponibilidade). Para obter mais informações sobre reservas de capacidade sob demanda, consulte Usar reservas de capacidade com a frotas de instância.

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 Gerenciar clusters.

Usar o console para configurar grupos de instâncias uniformes

nota

Reformulamos o console do Amazon EMR para torná-lo mais fácil de usar. Consulte O que há de novo no console? para conhecer as diferenças entre as experiências do console antigo e novo.

New console
Criar um cluster com grupos de instâncias usando o novo console
  1. Faça login no AWS Management Console e abra o console do Amazon EMR em https://console.aws.amazon.com/emr.

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

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

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

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

  6. 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 preço sob demanda ou como uma quantia em dólar. 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.

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

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

  9. Para iniciar o cluster, escolha Criar cluster.

Old console

O procedimento a seguir discute Advanced options (Opções avançadas) quando você cria um cluster. Usar Quick options (Opções rápidas) também cria um cluster com a configuração de grupos de instâncias.

Criar um cluster com grupos de instâncias uniformes usando o console antigo
  1. Navegue até o novo console do Amazon EMR e selecione Alternar para o console antigo na navegação lateral. Para obter mais informações sobre o que esperar ao alternar para o console antigo, consulte Usar o console antigo.

  2. Selecione Create cluster (Criar cluster).

  3. Escolha Go to advanced options (Ir para opções avançadas), insira opções de Software Configuration (Configuração do software) e, em seguida, escolha Next (Próximo).

  4. Na tela Hardware Configuration (Configuração do hardware), deixe a opção Uniform instance groups (Grupos de instâncias uniformes) selecionada.

  5. Escolha Network (Rede) e depois escolha a opção de EC2 Subnet (Sub-rede de EC2) para executar seu cluster. A sub-rede que você escolher é associada a um grupo de disponibilidade, que é listado em cada sub-rede. Para obter mais informações, consulte Configurar redes.

    nota

    Sua conta e região podem lhe dar a opção de escolher Iniciar no EC2-Classic para Rede. Se você escolher essa opção, escolha uma zona de disponibilidade do EC2 em EC2 Availability Zone (Zona de disponibilidade do EC2), ao invés de uma sub-rede do EC2 em EC2 Subnet (Sub-rede do EC2). Para obter mais informações, consulte Amazon EC2 and Amazon VPC no Guia do usuário do Amazon EC2 para instâncias do Linux.

  6. Em cada linha de Node type (Tipo de nó):

    • Em Tipo de nó, se você quiser alterar o nome padrão de um grupo de instâncias, escolha o ícone de lápis e insira um nome amigável. Se quiser remover o grupo de instâncias Tarefa, escolha o ícone X. Escolha Add task instance group (Adicionar grupo de instâncias de tarefa) para adicionar outros grupos de instâncias Task (Tarefa).

    • Em Tipo de instância, escolha o ícone de lápis e escolha o tipo de instância que você deseja usar para esse tipo de nó.

      Importante

      Quando você escolhe um tipo de instância usando o AWS Management Console, o número de vCPUs exibido para cada tipo de instância é o número de vcores do YARN para esse tipo de instância, não o número de vCPUs do EC2 para esse tipo de instância. Para obter mais informações sobre o número de vCPUs para o seu tipo de instância, consulte os tipos de instância do Amazon EC2.

    • Em Tipo de instância, escolha o ícone de lápis de Configurações e edite as configurações de aplicações para cada grupo de instâncias.

    • Em Instance count (Contagem de instâncias), digite o número de instâncias em que você deseja executar esse tipo de nó.

    • Em Opção de compra, escolha Sob demand ou Spot. Se você escolher Spot, selecione uma opção para o preço máximo de instâncias spot. Por padrão, a opção Usar sob demanda como o preço máximo é selecionada. Você pode selecionar Set max $/hr (Definir max $/hr) e, em seguida, inserir o preço máximo. Zona de disponibilidade da EC2 Subnet (Sub-rede de EC2) que você escolheu está abaixo do Maximum Spot price (Preço spot máximo).

      dica

      Pare na dica de ferramenta de Spot para ver o preço spot atual para as zonas de disponibilidade na região atual. O menor preço Spot está em verde. Talvez você queira usar essas informações para alterar sua seleção de EC2 Subnet (Sub-rede do EC2).

    • Em Auto Scaling for Core and Task node types (Escalabilidade automática para tipos de nós core e de tarefa), escolha o ícone de lápis e configure as opções de escalabilidade automática. Para obter mais informações, consulte Usar o ajuste de escala automático com uma política personalizada para grupos de instâncias .

  7. Escolha Add task instance group (Adicionar grupo de instâncias de tarefa) conforme desejado e defina as configurações conforme descrito na etapa anterior.

  8. Escolha Next (Próximo), modifique outras configurações de cluster e execute o cluster.

Usar a AWS CLI para criar um cluster com grupos de instâncias uniformes

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 supõe a opção de instância sob demanda, a menos que você especifique o argumento BidPrice para um grupo de instâncias. Para obter exemplos de comandos create-cluster que executam grupos de instâncias uniformes com instâncias sob demanda 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 Command Reference.

Você pode usar a AWS CLI para criar grupos de instâncias uniformes em um cluster que usar 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 argumento AvailabilityZone (se estiver usando uma rede EC2-classic) ou o SubnetID argumento do parâmetro --ec2-attributes . 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. Substitua myKey pelo nome do 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-5.36.1 \ --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

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");