Redimensionar manualmente um cluster 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 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 a 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 AWS Management Console e abra 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 escala do cluster.

  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 principais e de tarefas, você também pode adicionar um ou mais grupos de instâncias de tarefas a um cluster em execução com o AWS CLI.

Para redimensionar um cluster alterando a contagem de instâncias com 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-groupssubcomando 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 da tarefa de 3 para 4, digite o comando a seguir e substitua ig-31JXXXXXXBTO com o 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 substitua j-2AXXXXXXGAPLF com o ID do cluster.

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

    do AWS CLI, você também pode encerrar uma instância no grupo principal de instâncias 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, substitua ig-6RXXXXXX07SA com o ID do grupo de instâncias e substitua i-f9XXXXf2 com o 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, consulte https://docs.aws.amazon.com/cli/latest/reference/emr.

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

do 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. Quando você usa 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 substitua j-JXBXXXXXX37R com o 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 substitua j-JXBXXXXXX37R com o 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, consulte https://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 um 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 painel, 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 substitua j-3KVXXXXXXY7UG com o 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.