Reconfigurar frotas de instâncias para o seu cluster do Amazon EMR - 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 frotas de instâncias para o seu cluster do Amazon EMR

Com o Amazon EMR versão 5.21.0 e posteriores, você pode reconfigurar as aplicações do cluster e especificar classificações de configuração adicionais para cada frota de instâncias em um cluster em execução. Para fazer isso, você pode usar a interface de linha de AWS comando (AWS CLI) ou o AWS SDK.

Você pode acompanhar o estado de uma frota de instâncias visualizando os CloudWatch eventos. Para obter mais informações, consulte Eventos de reconfiguração da frota de instâncias.

nota

Você só pode substituir o objeto Configurações do cluster especificado durante a criação do cluster. Para obter mais informações sobre objetos de configurações, consulte a sintaxe da RunJobFlow solicitação. Se há diferenças entre a configuração atual e o arquivo que você forneceu, o Amazon EMR redefine as configurações modificadas manualmente, como as que você modificou enquanto estava conectado ao cluster usando SSH, para os padrões do cluster da frota de instâncias especificada.

Quando você envia uma solicitação de reconfiguração usando o console do Amazon EMR, AWS a interface da linha de comando AWS CLI() ou o SDK, AWS o Amazon EMR verifica o arquivo de configuração existente no cluster. Se há diferenças entre a configuração atual e o arquivo que você forneceu, o Amazon EMR inicia ações de reconfiguração, reinicia algumas aplicações e redefine as configurações modificadas manualmente, como as que você modificou enquanto estava conectado ao cluster usando SSH, para os padrões do cluster da frota de instâncias especificada.

Comportamentos de reconfiguração

A reconfiguração substitui a configuração no cluster pelo conjunto de configurações recém-enviado e pode sobrescrever as alterações de configuração feitas fora da API de reconfiguração.

O Amazon EMR segue um processo contínuo para reconfigurar as instâncias na frota de instâncias centrais e de tarefas. Apenas uma porcentagem das instâncias de um único tipo de instância é modificada e reiniciada por vez. Se a sua frota de instâncias tiver várias configurações de tipos de instância diferentes, elas serão reconfiguradas em paralelo.

As reconfigurações são declaradas no InstanceTypeConfignível. Para um exemplo de elemento visual, consulte Reconfigurar uma frota de instâncias. Você pode enviar solicitações de reconfiguração que contenham configurações atualizadas para um ou mais tipos de instância em uma única solicitação. É necessário incluir todos os tipos de instância que fazem parte da sua frota de instâncias na solicitação de modificação. No entanto, os tipos de instância com campos de configuração preenchidos passarão por reconfiguração, enquanto outras instâncias InstanceTypeConfig na frota permanecerão inalteradas. Uma reconfiguração é considerada bem-sucedida somente ao ser concluída por todas as instâncias dos tipos de instância especificados. Se a reconfiguração falhar para alguma instância, toda a frota de instâncias será automaticamente revertida para a última configuração estável conhecida.

Limitações

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

  • Aplicações que não sejam do Yarn podem falhar durante a reinicialização ou causar problemas no cluster, sobretudo se as aplicações não estiverem configuradas corretamente. Ao se aproximarem demais do uso máximo de memória e CPU, os clusters poderão ter problemas após o processo de reinicialização. Isso é especialmente verdadeiro para a frota de instâncias primárias. Consulte a seção Solucionar problemas de reconfiguração da frota de instâncias.

  • Operações de redimensionamento e reconfiguração não acontecem paralelamente. Solicitações de reconfiguração aguardam um redimensionamento contínuo, e vice-versa.

  • Operações de redimensionamento e reconfiguração não acontecem paralelamente. Solicitações de reconfiguração aguardam um redimensionamento contínuo, e vice-versa.

  • Depois de reconfigurar uma frota de instâncias, o Amazon EMR reiniciará as aplicações 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 houver falha na reconfiguração de qualquer configuração de tipo de instância em uma frota de instâncias, o Amazon EMR reverterá os parâmetros de configuração para a versão anterior válida de toda a frota de instâncias, além de emitir eventos e atualizar detalhes do estado. Se também houver falha no processo de reversão, você deverá enviar uma nova solicitação ModifyInstanceFleet para recuperar a frota de instâncias a partir do estado ARRESTED. Falhas de reversão resultam em eventos de reconfiguração da frota de instâncias e mudança de estado.

  • As solicitações de reconfiguração para classificações de configuração do Phoenix são compatíveis com as versões 5.23.0 e posteriores do Amazon EMR, e não são compatíveis com a versão 5.21.0 ou 5.22.0 do Amazon EMR.

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

  • Não há suporte para reconfigurar a classificação hdfs-encryption-zones ou qualquer uma das classificações de configuração em um cluster do Amazon EMR com múltiplos nós primários.

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

  • Quando o YARN precisa ser reiniciado, todos os trabalhos do YARN em execução geralmente são encerrados e perdidos. Isso pode causar atrasos no processamento de dados. Para executar trabalhos do YARN durante uma reinicialização do YARN, você pode criar um cluster do Amazon EMR com vários nós primários ou definir yarn.resourcemanager.recovery.enabled como true na classificação de configuração do seu yarn-site. Para obter mais informações sobre o uso de vários nós principais, consulte YARN ResourceManager de alta disponibilidade.

Reconfigurar uma frota de instâncias

Using the AWS CLI

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

nota

Nos exemplos a seguir, substitua j-2 AL4 XXXXXX5 T9 pelo ID do cluster e if-1xxxxxxx9 pelo ID da frota da instância.

Exemplo: substituir uma configuração de uma frota de instâncias

Atenção

Especifique todos os campos InstanceTypeConfig que você usou na inicialização. A não inclusão de campos pode resultar na substituição das especificações que você declarou no lançamento. Consulte InstanceTypeConfigpara obter uma lista.

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

JSON de modificação da frota de instâncias

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

    { "InstanceFleetId":"if-1xxxxxxx9", "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", other InstanceTypeConfig fields "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" } } ] }, { "InstanceType": "r5.xlarge", other InstanceTypeConfig fields "Configurations": [ { "Classification": "yarn-site", "Properties": { "yarn.nodemanager.disk-health-checker.enable":"false", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"70.0" } } ] } ]
  2. Execute o comando a seguir.

    aws emr modify-instance-fleet \ --cluster-id j-2AL4XXXXXX5T9 \ --region us-west-2 \ --instance-fleet instanceFleet.json

Exemplo: adicionar uma configuração a uma frota de instâncias

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

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

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

    { "InstanceFleetId":"if-1xxxxxxx9", "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", other InstanceTypeConfig fields "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" } } ] }, { "InstanceType": "r5.xlarge", other InstanceTypeConfig fields "Configurations": [ { "Classification": "yarn-site", "Properties": { "yarn.nodemanager.disk-health-checker.enable":"false", "yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"70.0" } } ] } ] }
  2. Execute o comando a seguir.

    aws emr modify-instance-fleet \ --cluster-id j-2AL4XXXXXX5T9 \ --region us-west-2 \ --instance-fleet instanceFleet.json
using the Java SDK
nota

Nos exemplos a seguir, substitua j-2 AL4 XXXXXX5 T9 pelo ID do cluster e if-1xxxxxxx9 pelo ID da frota da instância.

O trecho de código a seguir fornece uma nova configuração para uma frota 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 newConfiguration = new Configuration() .withClassification("hive-site") .withProperties(hiveProperties); List<InstanceTypeConfig> instanceTypeConfigList = new ArrayList<>(); for (InstanceTypeConfig instanceTypeConfig : currentInstanceTypeConfigList) { instanceTypeConfigList.add(new InstanceTypeConfig() .withInstanceType(instanceTypeConfig.getInstanceType()) .withBidPrice(instanceTypeConfig.getBidPrice()) .withWeightedCapacity(instanceTypeConfig.getWeightedCapacity()) .withConfigurations(newConfiguration) ); } InstanceFleetModifyConfig instanceFleetModifyConfig = new InstanceFleetModifyConfig() .withInstanceFleetId("if-1xxxxxxx9") .withInstanceTypeConfigs(instanceTypeConfigList); ModifyInstanceFleetRequest modifyInstanceFleetRequest = new ModifyInstanceFleetRequest() .withInstanceFleet(instanceFleetModifyConfig) .withClusterId("j-2AL4XXXXXX5T9"); emrClient.modifyInstanceFleet(modifyInstanceFleetRequest);

Solucionar problemas de reconfiguração da frota de instâncias

Se o processo de reconfiguração de qualquer tipo de instância dentro de uma frota de instâncias falhar, o Amazon EMR reverterá a reconfiguração em andamento e registrará uma mensagem de falha usando um Events events. AAmazon 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.

Amazon EMR couldn't revert the instance fleet if-1xxxxxxx9 in the Amazon EMR cluster j-2AL4XXXXXX5T9 (ExampleClusterName) to the previously successful configuration at 2021-01-01 00:00 UTC. The reconfiguration reversion failed because of Instance i-xxxxxxx1, i-xxxxxxx2, i-xxxxxxx3 failed with message "This is an example failure message"...

Para acessar logs de provisionamento de nós

Use o SSH para se conectar ao nó em que a reconfiguração falhou. Para obter instruções, consulte Conectar-se à sua instância Linux no Amazon Elastic Compute Cloud..

Accessing logs by connecting to a node
  1. Navegue até o diretório a seguir, que contém os arquivos de log de provisionamento do nó.

    /mnt/var/log/provision-node/
  2. Abra o subdiretório de relatórios e pesquise o relatório de provisionamento do nó para a reconfiguração. O diretório de relatórios organiza os registros por número de versão de reconfiguração, identificador único universal (UUID), endereço IP da instância EC2 Amazon e data e hora. Cada relatório é um arquivo YAML compactado contendo 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
  3. Você pode examinar um relatório usando um visualizador de arquivos como o zless, como no exemplo a seguir.

    zless 202104061715.yaml.gz
Accessing logs using Amazon S3

Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/ Abra o bucket do Amazon S3 especificado quando você configurou o cluster para arquivar arquivos de log.

  1. 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/
  2. Abra a pasta de relatórios e pesquise o relatório de provisionamento do nó para a reconfiguração. A pasta de relatórios organiza os registros por número de versão de reconfiguração, identificador único universal (UUID), endereço IP da instância EC2 Amazon e data e hora. Cada relatório é um arquivo YAML compactado contendo 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

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 do Amazon EMR no cluster. O exemplo a seguir mostra informações de erro para as versões 5.32.0 e 6.2.0 do Amazon EMR e versões posteriores que utilizam 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: