Reconfigurar um grupo de instâncias de 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á.

Reconfigurar um grupo de instâncias de um cluster em execução

Com a Amazon EMR versão 5.21.0 e posterior, você pode reconfigurar aplicativos de cluster e especificar classificações de configuração adicionais para cada grupo de instâncias em um cluster em execução. Para fazer isso, você pode usar o EMR console da Amazon, o AWS Command Line Interface (AWS CLI) ou AWS SDK o.

Quando você atualiza uma configuração de aplicativo para um grupo de instâncias no novo EMR console da Amazon, o console tenta mesclar a nova configuração com a configuração existente para criar uma configuração nova e ativa. No caso incomum em que a Amazon não EMR consegue mesclar a configuração, o console alerta você.

Depois de enviar uma solicitação de reconfiguração para um grupo de instâncias, a Amazon EMR atribui um número de versão à nova especificação de configuração. Você pode acompanhar o número da versão de uma configuração ou o estado de um grupo de instâncias visualizando os CloudWatch eventos. Para obter mais informações, consulte Monitorar CloudWatch eventos.

nota

Só é possível substituir, e não excluir, as configurações do cluster que foram especificadas durante a criação do cluster. Se houver diferenças entre a configuração existente e o arquivo que você fornece, a Amazon EMR redefine as configurações modificadas manualmente, como as que você modificou enquanto estava conectado ao seu cluster usandoSSH, para os padrões do cluster para o grupo de instâncias especificado.

Considerações ao reconfigurar um grupo de instâncias

Ações de reconfiguração

Quando você envia uma solicitação de reconfiguração usando o EMR console da Amazon, o AWS Command Line Interface (AWS CLI) ou o AWS SDK, a Amazon EMR verifica o arquivo de configuração existente no cluster. Se houver diferenças entre a configuração existente e o arquivo que você fornece, a Amazon EMR inicia ações de reconfiguração, reinicia alguns aplicativos e redefine todas as configurações modificadas manualmente, como as que você modificou enquanto estava conectado ao seu cluster usandoSSH, de acordo com os padrões do cluster para o grupo de instâncias especificado.

nota

A Amazon EMR executa algumas ações padrão durante cada reconfiguração do grupo de instâncias. Essas ações padrão podem entrar em conflito com as personalizações do cluster feitas por você e resultar em falhas de reconfiguração. Para obter mais informações sobre como solucionar falhas de reconfiguração, consulte Solucionar problemas de reconfiguração do grupo de instâncias.

A Amazon EMR também inicia ações de reconfiguração para as classificações de configuração que você especifica em sua solicitação. Para obter uma lista completa dessas ações, consulte a seção Classificações de configuração da versão da Amazon EMR que você usa. Por exemplo, Classificações de configuração do 6.2.0.

nota

O Amazon EMR Release Guide lista apenas ações de reconfiguração a partir das EMR versões 5.32.0 e 6.2.0 da Amazon.

Interrupção do serviço

A Amazon EMR segue um processo contínuo para reconfigurar instâncias nos grupos de instâncias Task e Core. Somente 10% das instâncias em um grupo de instâncias são modificadas e reiniciadas por vez. Esse processo leva mais tempo para ser concluído, mas reduz a chance de possíveis falhas de aplicativo em um cluster em execução.

Para executar YARN trabalhos durante uma YARN reinicialização, você pode criar um EMR cluster da Amazon com vários nós principais ou yarn.resourcemanager.recovery.enabled definir isso true na sua classificação de yarn-site configuração. Para obter mais informações sobre o uso de vários nós principais, consulte Alta disponibilidade YARN ResourceManager.

Validação da aplicação

A Amazon EMR verifica se cada aplicativo no cluster está em execução após o processo de reinicialização da reconfiguração. Se alguma aplicação não estiver disponível, a operação geral de reconfiguração falhará. Se uma operação de reconfiguração falhar, a Amazon EMR reverte os parâmetros de configuração para a versão de trabalho anterior.

nota

Para evitar falhas na reconfiguração, é recomendável instalar somente as aplicações que planeja usar no cluster. Também é recomendável verificar se todas as aplicações do cluster estão íntegras e em execução antes de enviar uma solicitação de reconfiguração.

Tipos de reconfiguração

É possível reconfigurar um grupo de instâncias de duas maneiras:

  • Substituir. Método de reconfiguração padrão e o único disponível nas EMR versões anteriores à 5.35.0 e 6.6.0 da Amazon. Esse método de reconfiguração substitui indiscriminadamente todo arquivo no cluster pelo conjunto de configurações recém-enviado. O método apaga todas as alterações nos arquivos de configuração feitas fora da API reconfiguração.

  • Mesclar. Método de reconfiguração compatível com as EMR versões 5.35.0 e 6.6.0 e posteriores da Amazon, exceto no EMR console da Amazon, onde nenhuma versão é compatível. Esse método de reconfiguração mescla as configurações recém-enviadas com as configurações já existentes no cluster. Essa opção só adicionará ou modificará as novas configurações que você enviar. Ela preserva as configurações atuais.

nota

EMRA Amazon continua substituindo algumas configurações essenciais do Hadoop necessárias para garantir que o serviço esteja funcionando corretamente.

Limitações

Ao reconfigurar um grupo de instâncias de um cluster em execução, considere estas limitações:

  • YARNOs não-aplicativos podem falhar durante a reinicialização ou causar problemas no cluster, especialmente se os aplicativos não estiverem configurados corretamente. Clusters que se aproximam do máximo de memória e CPU uso podem ter problemas após o processo de reinicialização. Isso se aplica principalmente ao grupo de instâncias principal.

  • Não é possível enviar uma solicitação de reconfiguração quando o grupo de instâncias está sendo redimensionado. Se uma reconfiguração for iniciada enquanto um grupo de instâncias estiver sendo redimensionado, a reconfiguração não poderá ser iniciada até que o redimensionamento do grupo de instâncias tenha sido concluído e vice-versa.

  • Depois de reconfigurar um grupo de instâncias, a Amazon EMR reinicia os aplicativos para permitir que as novas configurações entrem em vigor. Uma falha no trabalho ou outro comportamento inesperado do aplicativo poderão ocorrer se os aplicativos estiverem em uso durante a reconfiguração.

  • Se a reconfiguração de um grupo de instâncias falhar, a Amazon EMR reverte os parâmetros de configuração para a versão de trabalho anterior. Se também houver falha no processo de reversão, você deverá enviar uma nova solicitação ModifyInstanceGroup para recuperar o grupo de instâncias a partir do estado SUSPENDED.

  • Solicitações de reconfiguração para classificações de configuração do Phoenix são suportadas somente na Amazon EMR versão 5.23.0 e posterior, e não são suportadas na Amazon EMR versão 5.21.0 ou 5.22.0.

  • Solicitações de HBase reconfiguração para classificações de configuração são suportadas somente na Amazon EMR versão 5.30.0 e posterior, e não são suportadas nas EMR versões 5.23.0 a 5.29.0 da Amazon.

  • A Amazon EMR suporta solicitações de reconfiguração de aplicativos em um EMR cluster da Amazon com vários nós primários somente nas EMR versões 5.27.0 e posteriores da Amazon.

  • A reconfiguração da hdfs-encryption-zones classificação ou de qualquer uma das classificações de KMS configuração do Hadoop não é suportada em um EMR cluster da Amazon com vários nós primários.

  • EMRAtualmente, a Amazon não oferece suporte a determinadas solicitações de reconfiguração para o agendador de capacidade que exijam a reinicialização do. YARN ResourceManager Por exemplo, não é possível remover uma fila completamente.

Reconfigurar um grupo de instâncias no console

nota

O EMR console da Amazon não suporta reconfigurações do tipo Merge.

  1. Abra o EMR console da Amazon em https://console.aws.amazon.com/emr

  2. Na lista de clusters, m Nome, escolha o cluster ativo que você deseja reconfigurar.

  3. Abra a página de detalhes do cluster e acesse a guia Configurações.

  4. Na lista suspensa Filter (Filtro), selecione o grupo de instâncias que você deseja reconfigurar.

  5. No menu suspenso Reconfigurar, escolha Editar na tabela ou Editar no arquivo. JSON

    • Editar na tabela: na tabela de classificações de configuração, edite a propriedade e o valor das configurações atuais ou escolha Adicionar configuração para fornecer a propriedade e o valor para outras classificações de configuração.

    • Editar no JSON arquivo - insira a configuração diretamente ou use a sintaxe abreviada (demonstrada em texto sombreado). JSON Caso contrário, forneça um Amazon S3 URI para um arquivo com um JSON Configurations objeto.

    nota

    A coluna Origem na tabela de classificações de configuração indica se a configuração é fornecida quando você cria um cluster ou quando você especifica configurações adicionais para esse grupo de instâncias. Você pode editar as configurações para um grupo de instâncias de ambas as origens. Não é possível excluir as configurações iniciais do cluster, mas você pode substituí-las por um grupo de instâncias.

    Você também pode adicionar ou editar classificações de configuração aninhadas diretamente na tabela. Por exemplo, para fornecer uma sub-classificação de export adicional de hadoop-env, adicione uma classificação de configuração hadoop.export na tabela. Em seguida, forneça uma propriedade específica e um valor para essa classificação.

  6. (Opcional) Selecione Apply this configuration to all active instance groups (Aplicar essa configuração a todos os grupos de instâncias ativas).

  7. Salve as alterações.

Reconfigure um grupo de instâncias usando o CLI

Você pode usar o comando modify-instance-groups para especificar configurações para cada grupo de instâncias em um cluster em execução.

nota

Nos exemplos a seguir, <j-2AL4XXXXXX5T9> substitua pelo ID do cluster e pelo <ig-1xxxxxxx9> ID do grupo de instâncias.

exemplo : substituir uma configuração para um grupo de instâncias

O exemplo a seguir faz referência a um JSON arquivo de configuração chamado instanceGroups.json para editar a propriedade do verificador de integridade do YARN NodeManager disco para um grupo de instâncias.

  1. Prepare a classificação da configuração e salve-a como instanceGroups.json no mesmo diretório em que você executará o comando.

    [ { "InstanceGroupId":"<ig-1xxxxxxx9>", "Configurations":[ { "Classification":"yarn-site", "Properties":{ "yarn.nodemanager.disk-health-checker.enable":"true", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0" }, "Configurations":[] } ] } ]
  2. Execute o seguinte comando.

    aws emr modify-instance-groups --cluster-id <j-2AL4XXXXXX5T9> \ --instance-groups file://instanceGroups.json
exemplo — Adicionar uma configuração a um grupo de instâncias

Se deseja adicionar uma configuração a um grupo de instâncias, você deverá incluir todas as configurações especificadas anteriormente para aquele grupo de instâncias em sua nova solicitação ModifyInstanceGroup. Caso contrário, as configurações especificadas anteriormente serão removidas.

O exemplo a seguir adiciona uma propriedade para o verificador de memória YARN NodeManager virtual. A configuração também inclui valores previamente especificados para o verificador de integridade do YARN NodeManager disco, para que os valores não sejam substituídos.

  1. Prepare o conteúdo a seguir em instanceGroups.json e salve-o no mesmo diretório onde você executará o comando.

    [ { "InstanceGroupId":"<ig-1xxxxxxx9>", "Configurations":[ { "Classification":"yarn-site", "Properties":{ "yarn.nodemanager.disk-health-checker.enable":"true", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0", "yarn.nodemanager.vmem-check-enabled":"true", "yarn.nodemanager.vmem-pmem-ratio":"3.0" }, "Configurations":[] } ] } ]
  2. Execute o seguinte comando.

    aws emr modify-instance-groups --cluster-id <j-2AL4XXXXXX5T9> \ --instance-groups file://instanceGroups.json
exemplo — Adicionar uma configuração a um grupo de instâncias com uma reconfiguração do tipo Merge

Quando quiser usar o método padrão de reconfiguração Overwrite para adicionar uma configuração, é necessário incluir todas as configurações especificadas anteriormente para esse grupo de instâncias em sua nova solicitação ModifyInstanceGroup. Caso contrário, Overwrite removerá as configurações que você especificou anteriormente. Não é necessário fazer isso com a reconfiguração Merge. Em vez disso, garanta que sua solicitação inclua apenas as novas configurações.

O exemplo a seguir adiciona uma propriedade para o verificador de memória YARN NodeManager virtual. Como essa é uma reconfiguração do tipo Merge, ela não substitui os valores especificados anteriormente para o verificador de integridade do YARN NodeManager disco.

  1. Prepare o conteúdo a seguir em instanceGroups.json e salve-o no mesmo diretório onde você executará o comando.

    [ {"InstanceGroupId":"<ig-1xxxxxxx9>", "ReconfigurationType" :"MERGE", "Configurations":[ {"Classification":"yarn-site", "Properties":{ "yarn.nodemanager.vmem-check-enabled":"true", "yarn.nodemanager.vmem-pmem-ratio":"3.0" }, "Configurations":[] } ] } ]
  2. Execute o seguinte comando.

    aws emr modify-instance-groups --cluster-id <j-2AL4XXXXXX5T9> \ --instance-groups file://instanceGroups.json
exemplo : excluir uma configuração de um grupo de instâncias

Para excluir uma configuração para um grupo de instâncias, envie uma nova solicitação de reconfiguração que exclua a configuração anterior.

nota

Só é possível substituir a configuração inicial do cluster. Você não pode excluí-la.

Por exemplo, para excluir a configuração do verificador de integridade do YARN NodeManager disco do exemplo anterior, envie uma nova instanceGroups.json com o conteúdo a seguir.

[ { "InstanceGroupId":"<ig-1xxxxxxx9>", "Configurations":[ { "Classification":"yarn-site", "Properties":{ "yarn.nodemanager.vmem-check-enabled":"true", "yarn.nodemanager.vmem-pmem-ratio":"3.0" }, "Configurations":[] } ] } ]
nota

Para excluir todas as configurações na última solicitação de reconfiguração, envie uma solicitação de reconfiguração com uma matriz de configurações. Por exemplo,

[ { "InstanceGroupId":"<ig-1xxxxxxx9>", "Configurations":[] } ]
exemplo — Reconfigurar e redimensionar um grupo de instâncias em uma solicitação

O exemplo a seguir JSON demonstra como reconfigurar e redimensionar um grupo de instâncias na mesma solicitação.

[ { "InstanceGroupId":"<ig-1xxxxxxx9>", "InstanceCount":5, "EC2InstanceIdsToTerminate":["i-123"], "ForceShutdown":true, "ShrinkPolicy":{ "DecommissionTimeout":10, "InstanceResizePolicy":{ "InstancesToTerminate":["i-123"], "InstancesToProtect":["i-345"], "InstanceTerminationTimeout":20 } }, "Configurations":[ { "Classification":"yarn-site", "Configurations":[], "Properties":{ "yarn.nodemanager.disk-health-checker.enable":"true", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"100.0" } } ] } ]

Reconfigurar um grupo de instâncias usando o Java SDK

nota

Nos exemplos a seguir, <j-2AL4XXXXXX5T9> substitua pelo ID do cluster e pelo <ig-1xxxxxxx9> ID do grupo de instâncias.

O trecho de código a seguir fornece uma nova configuração para um grupo de instâncias usando o AWS SDK for Java.

AWSCredentials credentials = new BasicAWSCredentials("access-key", "secret-key"); AmazonElasticMapReduce emr = new AmazonElasticMapReduceClient(credentials); Map<String,String> hiveProperties = new HashMap<String,String>(); hiveProperties.put("hive.join.emit.interval","1000"); hiveProperties.put("hive.merge.mapfiles","true"); Configuration configuration = new Configuration() .withClassification("hive-site") .withProperties(hiveProperties); InstanceGroupModifyConfig igConfig = new InstanceGroupModifyConfig() .withInstanceGroupId("<ig-1xxxxxxx9>") .withReconfigurationType("MERGE"); .withConfigurations(configuration); ModifyInstanceGroupsRequest migRequest = new ModifyInstanceGroupsRequest() .withClusterId("<j-2AL4XXXXXX5T9>") .withInstanceGroups(igConfig); emr.modifyInstanceGroups(migRequest);

O trecho de código a seguir exclui uma configuração especificada anteriormente para um grupo de instâncias fornecendo uma matriz vazia de configurações.

List<Configuration> configurations = new ArrayList<Configuration>(); InstanceGroupModifyConfig igConfig = new InstanceGroupModifyConfig() .withInstanceGroupId("<ig-1xxxxxxx9>") .withConfigurations(configurations); ModifyInstanceGroupsRequest migRequest = new ModifyInstanceGroupsRequest() .withClusterId("<j-2AL4XXXXXX5T9>") .withInstanceGroups(igConfig); emr.modifyInstanceGroups(migRequest);

Solucionar problemas de reconfiguração do grupo de instâncias

Se o processo de reconfiguração de um grupo de instâncias falhar, a Amazon EMR reverterá a reconfiguração e registrará uma mensagem de falha usando um evento da Amazon. CloudWatch O evento fornece um breve resumo da falha de reconfiguração. Ele lista as instâncias em que a reconfiguração falhou e as mensagens de falha correspondentes. Veja a seguir um exemplo de mensagem de falha.

The reconfiguration operation for instance group ig-1xxxxxxx9 in Amazon EMR cluster j-2AL4XXXXXX5T9 (ExampleClusterName) failed at 2021-01-01 00:00 UTC and took 2 minutes to fail. Failed configuration version is example12345. Failure message: Instance i-xxxxxxx1, i-xxxxxxx2, i-xxxxxxx3 failed with message "This is an example failure message".

Para coletar mais dados sobre uma falha de reconfiguração, verifique os logs de provisionamento do nó. Isso serve principalmente quando você recebe a mensagem a seguir.

i-xxxxxxx1 failed with message “Unable to complete transaction and some changes were applied.”
On the node
Acessar os logs de provisionamento do nó conectando-se a um nó
  1. Use SSH para se conectar ao nó no qual a reconfiguração falhou. Para obter instruções, consulte Connect to your Linux instance no Amazon EC2 User Guide for Linux Instances.

  2. Navegue até o diretório a seguir, que contém os arquivos de log de provisionamento do nó.

    /mnt/var/log/provision-node/
  3. Abra o subdiretório reports e pesquise o relatório de provisionamento do nó para a reconfiguração. O reports diretório organiza os registros por número da versão de reconfiguração, identificador universal exclusivo ()UUID, endereço IP da EC2 instância Amazon e data e hora. Cada relatório é um YAML arquivo compactado que contém informações detalhadas sobre o processo de reconfiguração.

    Veja a seguir um exemplo de nome e caminho do arquivo de relatório.

    /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz
  4. Você pode examinar um relatório usando um visualizador de arquivos como zless, como no exemplo a seguir.

    zless 202104061715.yaml.gz
Amazon S3
Acessar logs de provisionamento do nó usando o Amazon S3
  1. Faça login no AWS Management Console e abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/

  2. Abra o bucket do Amazon S3 especificado quando você configurou o cluster para arquivar arquivos de log.

  3. Navegue até esta pasta, que contém os arquivos de log de provisionamento do nó:

    amzn-s3-demo-bucket/elasticmapreduce/<cluster id>/node/<instance id>/provision-node/
  4. Abra a pasta reports e pesquise o relatório de provisionamento do nó para a reconfiguração. A reports pasta organiza os registros por número da versão de reconfiguração, identificador universal exclusivo ()UUID, endereço IP da EC2 instância Amazon e data e hora. Cada relatório é um YAML arquivo compactado que contém informações detalhadas sobre o processo de reconfiguração.

    Veja a seguir um exemplo de nome e caminho do arquivo de relatório.

    /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz
  5. Para visualizar um arquivo de log, você pode baixá-lo no Amazon S3 para a máquina local como arquivo de texto. Para obter instruções, consulte Fazer download de um objeto.

Cada arquivo de log contém um relatório detalhado de provisionamento para a reconfiguração associada. Para encontrar informações sobre mensagens de erro, pesquise o nível do log err de um relatório. O formato do relatório depende da versão da Amazon EMR em seu cluster.

O exemplo a seguir mostra informações de erro para versões de EMR lançamento da Amazon anteriores à 5.32.0 e 6.2.0.

- !ruby/object:Puppet::Util::Log level: !ruby/sym err tags: - err message: "Example detailed error message." source: Puppet time: 2021-01-01 00:00:00.000000 +00:00

Em vez disso, as EMR versões 5.32.0 e 6.2.0 e posteriores da Amazon usam o seguinte formato.

- level: err message: 'Example detailed error message.' source: Puppet tags: - err time: '2021-01-01 00:00:00.000000 +00:00' file: line: