Redimensionar manualmente um cluster da Amazon EMR em execução - Amazon EMR

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

Redimensionar manualmente um cluster da Amazon EMR em execução

Você pode adicionar e remover instâncias de grupos de instâncias principais e de tarefas e frotas de instâncias em um cluster em execução com o AWS Management Console AWS CLI, ou o Amazon EMRAPI. Se um cluster usa grupos de instâncias, você altera explicitamente a contagem de instâncias. Se o cluster usa frotas de instâncias, você pode alterar as unidades de destino para instâncias sob demanda e instâncias spot. A frota de instâncias, em seguida, adiciona e remove instâncias para corresponder ao novo destino. Para obter mais informações, consulte Opções de frotas de instâncias. Os aplicativos podem usar EC2 instâncias Amazon recém-provisionadas para hospedar nós assim que as instâncias estiverem disponíveis. Quando as instâncias são removidas, a Amazon EMR encerra as tarefas de uma forma que não interrompe os trabalhos e protege contra a perda de dados. Para obter mais informações, consulte Terminar na conclusão de tarefas.

Redimensionar um cluster usando o console

Você pode usar o EMR console da Amazon para redimensionar um cluster em execução.

Console
Alterar a contagem de instâncias para um cluster existente usando o novo console
  1. Faça login no e abra AWS Management Console o EMR console da Amazon em https://console.aws.amazon.com/emr.

  2. EMREC2Em Ativado, no painel de navegação esquerdo, escolha Clusters e selecione o cluster que você deseja atualizar. O cluster deve estar em execução, e não é possível redimensionar um cluster provisionado ou terminado.

  3. Na guia Instâncias da página de detalhes do cluster, visualize o painel Grupos de instâncias.

  4. Para redimensionar um grupo de instâncias já existente, selecione o botão de opção ao lado do grupo de instâncias central ou de tarefa que você deseja redimensionar e escolha Redimensionar grupo de instâncias. Especifique o novo número de instâncias do grupo de instâncias e selecione Redimensionar.

    nota

    Se você optar por reduzir o tamanho de um grupo de instâncias em execução, a Amazon EMR selecionará de forma inteligente as instâncias a serem removidas do grupo para perda mínima de dados. Para um controle mais granular da ação de redimensionamento, você pode selecionar o ID do grupo de instâncias, escolher as instâncias que deseja remover e usar a opção Terminar. Para obter mais informações sobre o comportamento inteligente de redução da escala verticalmente, consulte Opções de redução de clusters para clusters da Amazon EMR.

  5. Para cancelar a ação de redimensionamento, selecione o botão de opção para um grupo de instâncias com o status Resizing e escolha Interromper redimensionamento na lista de ações.

  6. Para adicionar um ou mais grupos de instâncias de tarefa ao cluster em resposta ao aumento da workload, escolha Adicionar grupo de instâncias de tarefa na lista de ações. Escolha o tipo de EC2 instância da Amazon, insira o número de instâncias para o grupo de tarefas e selecione Adicionar grupo de instâncias de tarefas para retornar ao painel Grupos de instâncias do seu cluster.

Quando você altera o número de nós, o Status do grupo de instâncias é atualizado. Quando a alteração solicitada estiver concluída, o Status muda para Running (Em execução).

Redimensionar um cluster com o AWS CLI

Você pode usar o AWS CLI para redimensionar um cluster em execução. Você pode aumentar ou diminuir o número de nós de tarefa, e pode aumentar o número de nós core de um cluster em execução. Também é possível encerrar uma instância no grupo de instâncias principal com o AWS CLI ou API o. Isso deve ser feito com cuidado. Desativar uma instância no grupo de instâncias centrais expõe você ao risco de perda de dados, e a instância não é substituída automaticamente.

Além de redimensionar os grupos centrais e de tarefa, você também pode adicionar um ou mais grupos de instâncias de tarefa a um cluster em execução usando a AWS CLI.

Para redimensionar um cluster alterando a contagem de instâncias com o AWS CLI

Você pode adicionar instâncias ao grupo principal ou ao grupo de tarefas e remover instâncias do grupo de tarefas com o AWS CLI modify-instance-groups subcomando com o InstanceCount parâmetro. Para adicionar instâncias aos grupos core ou de tarefas, aumente o InstanceCount. Para reduzir o número de instâncias no grupo de tarefas, diminua o InstanceCount. Alterar o número de instâncias do grupo de tarefas para 0 remove todas as instâncias, mas não o grupo de instâncias.

  • Para aumentar o número de instâncias no grupo de instâncias de tarefas de 3 para 4, digite o comando a seguir e ig-31JXXXXXXBTO substitua pelo ID do grupo de instâncias.

    aws emr modify-instance-groups --instance-groups InstanceGroupId=ig-31JXXXXXXBTO,InstanceCount=4

    Para recuperar o InstanceGroupId, use o subcomando describe-cluster. A saída é um JSON objeto chamado Cluster que contém o ID de cada grupo de instâncias. Para usar esse comando, você precisa do ID do cluster (que pode ser recuperado usando o comando aws emr list-clusters ou pelo console). Para recuperar o ID do grupo de instâncias, digite o comando a seguir e j-2AXXXXXXGAPLF substitua-o pelo ID do cluster.

    aws emr describe-cluster --cluster-id j-2AXXXXXXGAPLF

    Com o AWS CLI, você também pode encerrar uma instância no grupo de instâncias principal com o --modify-instance-groups subcomando.

    Atenção

    A especificação de EC2InstanceIdsToTerminate deve ser feita com cuidado. As instâncias são encerradas imediatamente, independentemente do status dos aplicativos em execução nelas, e as instâncias não são substituídas automaticamente. Isso é verdadeiro, independentemente da configuração de Scale down behavior (Comportamento da escalabilidade vertical) do cluster. O encerramento de uma instância dessa forma tem o risco de perda de dados e de comportamento imprevisível do cluster.

    Para encerrar uma instância específica, você precisa do ID do grupo de instâncias (retornado pelo aws emr describe-cluster --cluster-id subcomando) e do ID da instância (retornado pelo aws emr list-instances --cluster-id subcomando), digite o comando a seguir, ig-6RXXXXXX07SA substitua pelo ID do grupo de instâncias e i-f9XXXXf2 substitua pelo ID da instância.

    aws emr modify-instance-groups --instance-groups InstanceGroupId=ig-6RXXXXXX07SA,EC2InstanceIdsToTerminate=i-f9XXXXf2

    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.

Para redimensionar um cluster adicionando grupos de instâncias de tarefas com o AWS CLI

Com o AWS CLI, você pode adicionar de 1 a 48 grupos de instâncias de tarefas a um cluster com o --add-instance-groups subcomando. Os grupos de instâncias de tarefa só podem ser adicionados a um cluster contendo um grupo de instâncias primárias e um grupo de instâncias centrais. Ao usar o AWS CLI, você pode adicionar até cinco grupos de instâncias de tarefas sempre que usar o --add-instance-groups subcomando.

  1. Para adicionar um único grupo de instâncias de tarefas a um cluster, digite o comando a seguir e j-JXBXXXXXX37R substitua pelo ID do cluster.

    aws emr add-instance-groups --cluster-id j-JXBXXXXXX37R --instance-groups InstanceCount=6,InstanceGroupType=task,InstanceType=m5.xlarge
  2. Para adicionar vários grupos de instâncias de tarefas a um cluster, digite o comando a seguir e j-JXBXXXXXX37R substitua pelo ID do cluster. Você pode adicionar até cinco grupos de instâncias de tarefas em um único comando.

    aws emr add-instance-groups --cluster-id j-JXBXXXXXX37R --instance-groups InstanceCount=6,InstanceGroupType=task,InstanceType=m5.xlarge InstanceCount=10,InstanceGroupType=task,InstanceType=m5.xlarge

    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.

Interromper um redimensionamento

Usando a EMR versão 4.1.0 ou posterior da Amazon, você pode emitir um redimensionamento em meio a uma operação de redimensionamento existente. Além disso, você pode interromper uma solicitação de redimensionamento enviada anteriormente ou enviar uma nova solicitação para substituir uma solicitação anterior, antes mesmo que ela seja concluída. Você também pode interromper um redimensionamento existente no console ou com a ModifyInstanceGroups API chamada com a contagem atual como a contagem de destino do cluster.

A imagem a seguir mostra um grupo de instâncias de tarefas que está sendo redimensionado mas pode ser interrompido pela opção de Stop (Interromper).

Task instance group showing resizing status with options to resize or stop.
Para interromper um redimensionamento com o AWS CLI

Você pode usar o AWS CLI para interromper o redimensionamento com o modify-instance-groups subcomando. Suponha que você tem seis instâncias em um grupo de instâncias e deseja aumentar este número para 10. E mais tarde você decide cancelar essa solicitação:

  • A solicitação inicial:

    aws emr modify-instance-groups --instance-groups InstanceGroupId=ig-myInstanceGroupId,InstanceCount=10

    A segunda solicitação para interromper a primeira solicitação:

    aws emr modify-instance-groups --instance-groups InstanceGroupId=ig-myInstanceGroupId,InstanceCount=6
nota

Como esse processo é assíncrono, você pode ver a contagem de instâncias mudar em relação às API solicitações anteriores antes que as solicitações subsequentes sejam atendidas. Em caso de redução, se você tiver um trabalho em execução nos nós, é possível que o grupo de instâncias não seja reduzido até que os nós tenham concluído seu trabalho.

Estado suspenso

Um grupo de instâncias entra em estado suspenso se encontrar muitos erros durante a tentativa de iniciar os novos nós do cluster. Por exemplo, se novos nós falharem ao realizar ações de bootstrap, o grupo de instâncias entrará em um SUSPENDEDestado, em vez de provisionar continuamente novos nós. Depois de resolver o problema básico, redefina o número desejado de nós no grupo de instâncias do cluster e, em seguida, o grupo de instâncias reiniciará a alocação de nós. A modificação de um grupo de instâncias instrui EMR a Amazon a tentar provisionar nós novamente. Os nós em execução não são reiniciados ou encerrados.

No AWS CLI, o list-instances subcomando retorna todas as instâncias e seus estados, assim como o describe-cluster subcomando. Se a Amazon EMR detectar uma falha em um grupo de instâncias, ela mudará o estado do grupo paraSUSPENDED.

Para redefinir um cluster em um SUSPENDED estado com o AWS CLI

Digite o subcomando describe-cluster com o parâmetro --cluster-id para visualizar o estado das instâncias no cluster.

  • Para ver informações sobre todas as instâncias e grupos de instâncias em um cluster, digite o comando a seguir e j-3KVXXXXXXY7UG substitua pelo ID do cluster.

    aws emr describe-cluster --cluster-id j-3KVXXXXXXY7UG

    A saída exibe informações sobre os grupos de instâncias e o estado das instâncias:

    { "Cluster": { "Status": { "Timeline": { "ReadyDateTime": 1413187781.245, "CreationDateTime": 1413187405.356 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting after step completed" } }, "Ec2InstanceAttributes": { "Ec2AvailabilityZone": "us-west-2b" }, "Name": "Development Cluster", "Tags": [], "TerminationProtected": false, "RunningAmiVersion": "3.2.1", "NormalizedInstanceHours": 16, "InstanceGroups": [ { "RequestedInstanceCount": 1, "Status": { "Timeline": { "ReadyDateTime": 1413187775.749, "CreationDateTime": 1413187405.357 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "Name": "MASTER", "InstanceGroupType": "MASTER", "InstanceType": "m5.xlarge", "Id": "ig-3ETXXXXXXFYV8", "Market": "ON_DEMAND", "RunningInstanceCount": 1 }, { "RequestedInstanceCount": 1, "Status": { "Timeline": { "ReadyDateTime": 1413187781.301, "CreationDateTime": 1413187405.357 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "Name": "CORE", "InstanceGroupType": "CORE", "InstanceType": "m5.xlarge", "Id": "ig-3SUXXXXXXQ9ZM", "Market": "ON_DEMAND", "RunningInstanceCount": 1 } ... }

    Para exibir as informações sobre um grupo de instâncias específico, digite o subcomando list-instances com os parâmetros --cluster-id e --instance-group-types. Você pode visualizar as informações para grupos primários, centrais ou de tarefa.

    aws emr list-instances --cluster-id j-3KVXXXXXXY7UG --instance-group-types "CORE"

    Use o subcomando modify-instance-groups com o parâmetro --instance-groups para redefinir um cluster no estado SUSPENDED. O ID do grupo de instâncias é obtido pelo subcomando describe-cluster.

    aws emr modify-instance-groups --instance-groups InstanceGroupId=ig-3SUXXXXXXQ9ZM,InstanceCount=3

Considerações ao reduzir o tamanho do cluster

Se você optar por reduzir o tamanho de um cluster em execução, considere o seguinte EMR comportamento e as melhores práticas da Amazon:

  • Para reduzir o impacto nas tarefas em andamento, a Amazon seleciona de EMR forma inteligente as instâncias a serem removidas. Para obter mais informações sobre o comportamento de redução da escala de clusters, consulte Terminar na conclusão de tarefas o Amazon EMR Management Guide.

  • Quando você reduz o tamanho de um cluster, a Amazon EMR copia os dados das instâncias que ela remove para as instâncias que permanecem. Verifique se há capacidade de armazenamento suficiente para esses dados nas instâncias que permanecem no grupo.

  • A Amazon EMR tenta HDFS descomissionar as instâncias do grupo. Antes de reduzir o tamanho de um cluster, recomendamos que você minimize a E/S de HDFS gravação.

  • Para obter o controle mais granular ao reduzir o tamanho de um cluster, é possível visualizar o cluster no console e navegar até a guia Instâncias. Selecione o ID do grupo de instâncias que você deseja redimensionar. Em seguida, use a opção Terminar para as instâncias específicas que você deseja remover.