Riconfigurazione di un gruppo di istanze in un cluster in esecuzione - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Riconfigurazione di un gruppo di istanze in un cluster in esecuzione

Con Amazon EMR versione 5.21.0 e successive, puoi riconfigurare le applicazioni cluster e specificare classificazioni di configurazione aggiuntive per ogni gruppo di istanze in un cluster in esecuzione. A tale scopo, puoi utilizzare la EMR console Amazon, il AWS Command Line Interface (AWS CLI) o il AWS SDK.

Quando aggiorni una configurazione dell'applicazione per un gruppo di istanze nella nuova EMR console Amazon, la console tenta di unire la nuova configurazione con la configurazione esistente per creare una nuova configurazione attiva. Nel caso insolito in cui Amazon non EMR riesca a unire la configurazione, la console ti avvisa.

Dopo aver inviato una richiesta di riconfigurazione per un gruppo di istanze, Amazon EMR assegna un numero di versione alla nuova specifica di configurazione. Puoi tenere traccia del numero di versione di una configurazione o dello stato di un gruppo di istanze visualizzando gli CloudWatch eventi. Per ulteriori informazioni, consulta Monitorare CloudWatch gli eventi.

Nota

È possibile limitarsi a sovrascrivere, e non eliminare, le configurazioni cluster specificate durante la creazione del cluster. Se ci sono differenze tra la configurazione esistente e il file fornito, Amazon EMR reimposta le configurazioni modificate manualmente, ad esempio le configurazioni che hai modificato durante la connessione al cluster utilizzandoSSH, ai valori predefiniti del cluster per il gruppo di istanze specificato.

Considerazioni sulla riconfigurazione di un gruppo di istanze

Operazioni di riconfigurazione

Quando invii una richiesta di riconfigurazione utilizzando la EMR console Amazon, AWS Command Line Interface (AWS CLI) o Amazon EMR controlla il AWS SDK file di configurazione esistente sul cluster. Se ci sono differenze tra la configurazione esistente e il file fornito, Amazon EMR avvia azioni di riconfigurazione, riavvia alcune applicazioni e ripristina le configurazioni modificate manualmente, ad esempio le configurazioni modificate durante la connessione al cluster utilizzandoSSH, ai valori predefiniti del cluster per il gruppo di istanze specificato.

Nota

Amazon EMR esegue alcune azioni predefinite durante ogni riconfigurazione del gruppo di istanze. Queste azioni predefinite potrebbero entrare in conflitto con le personalizzazioni del cluster eseguite e causare errori di riconfigurazione. Per informazioni su come risolvere gli errori di riconfigurazione, consulta Risoluzione dei problemi relativi alla configurazione del gruppo di istanze.

Amazon avvia EMR anche azioni di riconfigurazione per le classificazioni di configurazione specificate nella richiesta. Per un elenco completo di queste azioni, consulta la sezione Classificazioni di configurazione per la versione di Amazon EMR che usi. Per esempio, Classificazioni di configurazione 6.2.0.

Nota

L'Amazon EMR Release Guide elenca solo le azioni di riconfigurazione a partire dalle EMR versioni Amazon 5.32.0 e 6.2.0.

Interruzione del servizio

Amazon EMR segue un processo progressivo per riconfigurare le istanze nei gruppi di istanze Task e Core. Ogni volta, solo il 10% delle istanze in un gruppo di istanze vengono modificate e riavviate. Questo processo richiede più tempo per il completamento, ma riduce la possibilità di errori applicazione potenziali in un cluster in esecuzione.

Per eseguire i YARN job durante un YARN riavvio, puoi creare un EMR cluster Amazon con più nodi master o yarn.resourcemanager.recovery.enabled impostarlo true nella tua classificazione di yarn-site configurazione. Per ulteriori informazioni sull'utilizzo di più nodi master, consulta Alta disponibilità YARN ResourceManager.

Convalida dell'applicazione

Amazon EMR verifica che ogni applicazione sul cluster sia in esecuzione dopo il processo di riavvio della riconfigurazione. Se un'applicazione non è disponibile, l'operazione di riconfigurazione complessiva ha esito negativo. Se un'operazione di riconfigurazione fallisce, Amazon EMR ripristina i parametri di configurazione alla versione funzionante precedente.

Nota

Per evitare errori di riconfigurazione, si consiglia di installare solo le applicazioni nel cluster che si prevede di utilizzare. Si consiglia inoltre di assicurarsi che tutte le applicazioni cluster siano integre e in esecuzione prima di inviare una richiesta di riconfigurazione.

Tipi di riconfigurazione

È possibile riconfigurare un gruppo di istanze attraverso uno dei due metodi descritti di seguito:

  • Sovrascrittura. Metodo di riconfigurazione predefinito e l'unico disponibile nelle EMR versioni di Amazon precedenti alla 5.35.0 e 6.6.0. Questo metodo di riconfigurazione sovrascrive in modo indiscriminato qualsiasi file sul cluster con il set di configurazione appena inviato. Il metodo cancella tutte le modifiche ai file di configurazione apportate al di fuori della riconfigurazione. API

  • Unione. Metodo di riconfigurazione supportato per le EMR versioni di Amazon 5.35.0 e 6.6.0 e successive, ad eccezione della EMR console Amazon, dove nessuna versione lo supporta. Questo metodo di riconfigurazione unisce le configurazioni appena inviate con configurazioni già esistenti sul cluster. Questa opzione si limita ad aggiungere o modificare le nuove configurazioni che invii. Conserva le configurazioni esistenti.

Nota

Amazon EMR continua a sovrascrivere alcune configurazioni Hadoop essenziali di cui ha bisogno per garantire il corretto funzionamento del servizio.

Limitazioni

Quando riconfiguri un gruppo di istanze in un cluster in esecuzione, considera le limitazioni seguenti:

  • YARNLe applicazioni diverse possono fallire durante il riavvio o causare problemi al cluster, soprattutto se le applicazioni non sono configurate correttamente. I cluster che si avvicinano alla quantità massima di memoria e CPU utilizzo possono riscontrare problemi dopo il processo di riavvio. Ciò vale soprattutto per il gruppo di istanze master.

  • Non è possibile inviare una richiesta di riconfigurazione quando un gruppo di istanze viene ridimensionato. Se viene avviata una riconfigurazione durante il ridimensionamento di un gruppo di istanze, la riconfigurazione non può iniziare finché il ridimensionamento del gruppo di istanze non è terminato, e viceversa.

  • Dopo aver riconfigurato un gruppo di istanze, Amazon EMR riavvia le applicazioni per consentire alle nuove configurazioni di avere effetto. Errori del processo o altri comportamenti dell'applicazione imprevisti possono verificarsi se le applicazioni sono in uso durante la riconfigurazione.

  • Se una riconfigurazione per un gruppo di istanze fallisce, Amazon EMR ripristina i parametri di configurazione alla versione funzionante precedente. Se il processo di ripristino ha esito negativo, è necessario inviare una nuova richiesta ModifyInstanceGroup per ripristinare il gruppo di istanze dallo stato SUSPENDED.

  • Le richieste di riconfigurazione per le classificazioni di configurazione Phoenix sono supportate solo nella EMR versione Amazon 5.23.0 e successive e non sono supportate nella EMR versione Amazon 5.21.0 o 5.22.0.

  • Le richieste di HBase riconfigurazione per le classificazioni di configurazione sono supportate solo nella EMR versione Amazon 5.30.0 e successive e non nelle EMR versioni di Amazon da 5.23.0 a 5.29.0.

  • Amazon EMR supporta le richieste di riconfigurazione delle applicazioni su un EMR cluster Amazon con più nodi primari solo nelle EMR versioni Amazon 5.27.0 e successive.

  • La riconfigurazione della hdfs-encryption-zones classificazione o di una qualsiasi delle classificazioni di KMS configurazione Hadoop non è supportata su un EMR cluster Amazon con più nodi primari.

  • Amazon EMR attualmente non supporta determinate richieste di riconfigurazione per lo scheduler di capacità che richiedono il riavvio di. YARN ResourceManager Ad esempio, non è possibile rimuovere completamente una coda.

Riconfigurazione di un gruppo di istanze nella console

Nota

La EMR console Amazon non supporta le riconfigurazioni di tipo Merge.

  1. Apri la EMR console Amazon all'indirizzo https://console.aws.amazon.com/emr

  2. Nell'elenco di cluster sotto Name (Nome), scegli il cluster attivo che desideri riconfigurare.

  3. Apri la pagina dei dettagli del cluster per il cluster e passa alla scheda Configurations (Configurazioni).

  4. Nell'elenco a discesa Filter (Filtro), selezionare il gruppo di istanze da riconfigurare.

  5. Nel menu a discesa Riconfigura, scegli Modifica nella tabella o Modifica nel file. JSON

    • Edit in table (Modifica nella tabella): nella tabella di classificazioni di configurazione, modifica la proprietà e il valore per configurazioni esistenti o scegli Add configuration (Aggiungi configurazione) per specificare classificazioni di configurazione aggiuntive.

    • Modifica nel JSON file: inserisci la configurazione direttamente in JSON o usa una sintassi abbreviata (illustrata nel testo ombra). Altrimenti, fornisci un Amazon S3 URI per un file con un JSON Configurations oggetto.

    Nota

    La colonna Source (Origine) nella tabella di classificazioni di configurazione indica se la configurazione viene specificata al momento della creazione di un cluster o quando vengono specificate configurazioni aggiuntive per questo gruppo di istanze. È possibile modificare le configurazioni per un gruppo di istanze da entrambe le origini. Non è possibile eliminare le configurazioni cluster iniziali, ma è possibile sovrascriverle per un gruppo di istanze.

    È anche possibile aggiungere o modificare classificazioni di configurazione nidificate direttamente nella tabella. Ad esempio, per fornire una classificazione secondaria export aggiuntiva di hadoop-env, aggiungere una classificazione di configurazione hadoop.export nella tabella. Quindi, fornire proprietà e valore specifici per questa classificazione.

  6. (Facoltativo) Selezionare Apply this configuration to all active instance groups (Applica questa configurazione a tutti i gruppi di istanze attivi).

  7. Salvare le modifiche.

Riconfigura un gruppo di istanze utilizzando il CLI

Utilizza il comando modify-instance-groups per specificare una nuova configurazione per un gruppo di istanze in un cluster in esecuzione.

Nota

Negli esempi seguenti, sostituite <j-2AL4XXXXXX5T9> con il tuo ID del cluster e sostituisci <ig-1xxxxxxx9> con il tuo ID del gruppo di istanze.

Esempio – Sostituzione di una configurazione per un gruppo di istanze

L'esempio seguente fa riferimento a un JSON file di configurazione chiamato instanceGroups.json per modificare la proprietà del correttore dello stato del YARN NodeManager disco per un gruppo di istanze.

  1. Prepara la classificazione della configurazione e salvala come instanceGroups.json nella stessa directory in cui esegui il 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. Esegui il comando seguente.

    aws emr modify-instance-groups --cluster-id <j-2AL4XXXXXX5T9> \ --instance-groups file://instanceGroups.json
Esempio – Aggiunta di una configurazione a un gruppo di istanze

Se desideri aggiungere una configurazione a un gruppo di istanze, devi includere le configurazioni specificate in precedenza per il gruppo di istanze nella nuova richiesta ModifyInstanceGroup. In caso contrario, le configurazioni specificate in precedenza vengono rimosse.

L'esempio seguente aggiunge una proprietà per il controllo della memoria YARN NodeManager virtuale. La configurazione include anche i valori specificati in precedenza per il controllo dello stato del YARN NodeManager disco in modo che i valori non vengano sovrascritti.

  1. Prepara i seguenti contenuti in instanceGroups.json e salvali nella stessa directory in cui esegui il 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. Esegui il comando seguente.

    aws emr modify-instance-groups --cluster-id <j-2AL4XXXXXX5T9> \ --instance-groups file://instanceGroups.json
Esempio - Aggiunta di una configurazione a un gruppo di istanze con una riconfigurazione di tipo Unione

Se intendi utilizzare il metodo di riconfigurazione predefinito Overwrite (Sovrascrittura) per aggiungere una configurazione, devi includere tutte le configurazioni specificate in precedenza per tale gruppo di istanze nella nuova richiesta ModifyInstanceGroup. Altrimenti, Overwrite (Sovrascrittura) rimuove le configurazioni precedentemente specificate. Questa operazione non è necessaria per la riconfigurazione Merge (Unione). Piuttosto devi accertarti che la tua richiesta includa solo le nuove configurazioni.

L'esempio seguente aggiunge una proprietà per il controllo della memoria YARN NodeManager virtuale. Poiché si tratta di una riconfigurazione di tipo Merge, non sovrascrive i valori specificati in precedenza per il controllo dello stato del YARN NodeManager disco.

  1. Prepara i seguenti contenuti in instanceGroups.json e salvali nella stessa directory in cui esegui il 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. Esegui il comando seguente.

    aws emr modify-instance-groups --cluster-id <j-2AL4XXXXXX5T9> \ --instance-groups file://instanceGroups.json
Esempio – Eliminazione di una configurazione per un gruppo di istanze

Per eliminare una configurazione per un gruppo di istanze, invia una nuova richiesta di riconfigurazione che esclude la configurazione precedente.

Nota

Puoi solo sostituire la configurazione del cluster iniziale. Non puoi eliminarla.

Ad esempio, per eliminare la configurazione per il controllo dello stato del YARN NodeManager disco dall'esempio precedente, inviane una nuova instanceGroups.json con i seguenti contenuti.

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

Per eliminare tutte le configurazioni nell'ultima richiesta di riconfigurazione, invia una richiesta di riconfigurazione con un array di configurazioni vuoto. Ad esempio,

[ { "InstanceGroupId":"<ig-1xxxxxxx9>", "Configurations":[] } ]
Esempio – Riconfigurazione e ridimensionamento di un gruppo di istanze in un'unica richiesta

L'esempio seguente JSON mostra come riconfigurare e ridimensionare un gruppo di istanze nella stessa richiesta.

[ { "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" } } ] } ]

Riconfigurare un gruppo di istanze utilizzando Java SDK

Nota

Negli esempi seguenti, sostituisci <j-2AL4XXXXXX5T9> con il tuo ID del cluster e sostituisci <ig-1xxxxxxx9> con il tuo ID del gruppo di istanze.

Il frammento di codice seguente fornisce una nuova configurazione per un gruppo di istanze utilizzando 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);

Il frammento di codice seguente elimina una configurazione specificata in precedenza per un gruppo di istanze specificando un array di configurazioni vuoto.

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

Risoluzione dei problemi relativi alla configurazione del gruppo di istanze

Se il processo di riconfigurazione per un gruppo di istanze fallisce, Amazon EMR ripristina la riconfigurazione e registra un messaggio di errore utilizzando un evento Amazon. CloudWatch L'evento fornisce un breve riepilogo dell'errore di riconfigurazione. Elenca le istanze per le quali la riconfigurazione non è riuscita e i messaggi di errore corrispondenti. Di seguito è riportato un esempio di messaggio di errore.

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

Per raccogliere ulteriori dati su un errore di riconfigurazione, è possibile controllare i log di provisioning dei nodi. Ciò risulta particolarmente utile quando si riceve un messaggio come il seguente.

i-xxxxxxx1 failed with message “Unable to complete transaction and some changes were applied.”
On the node
Accesso ai registri di provisioning dei nodi mediante connessione a un nodo
  1. Utilizzalo SSH per connetterti al nodo su cui la riconfigurazione non è riuscita. Per istruzioni, consulta Connect to your Linux istances nella Amazon EC2 User Guide for Linux Instances.

  2. Passa alla directory seguente, che contiene i file di log di provisioning dei nodi.

    /mnt/var/log/provision-node/
  3. Apri la sottodirectory reports e cerca il report di provisioning dei nodi per la riconfigurazione. La reports directory organizza i log in base al numero di versione di riconfigurazione, all'identificatore univoco universale ()UUID, all'indirizzo IP dell'EC2istanza Amazon e al timestamp. Ogni report è un YAML file compresso che contiene informazioni dettagliate sul processo di riconfigurazione.

    Di seguito è riportato un esempio di nome del file di report e relativo percorso.

    /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz
  4. Puoi esaminare un report utilizzando un visualizzatore di file quale zless, come nel seguente esempio.

    zless 202104061715.yaml.gz
Amazon S3
Accesso ai log di provisioning dei nodi tramite Amazon S3
  1. Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Apri il bucket Amazon S3 specificato quando il cluster è stato configurato per archiviare i file di log.

  3. Passa alla cartella seguente, che contiene i file di log di provisioning dei nodi:

    DOC-EXAMPLE-BUCKET/elasticmapreduce/<cluster id>/node/<instance id>/provision-node/
  4. Apri la cartella reports e cerca il report di provisioning dei nodi per la riconfigurazione. La reports cartella organizza i log in base al numero di versione di riconfigurazione, all'identificatore univoco universale ()UUID, all'indirizzo IP dell'EC2istanza Amazon e al timestamp. Ogni report è un YAML file compresso che contiene informazioni dettagliate sul processo di riconfigurazione.

    Di seguito è riportato un esempio di nome del file di report e relativo percorso.

    /reports/2/ca598xxx-cxxx-4xxx-bxxx-6dbxxxxxxxxx/ip-10-73-xxx-xxx.ec2.internal/202104061715.yaml.gz
  5. Per visualizzare un file di log, puoi scaricarlo da Amazon S3 sul tuo computer come file di testo. Per istruzioni, consulta Download di un oggetto.

Ogni file di log contiene un report di provisioning dettagliato per la riconfigurazione associata. Per trovare informazioni sui messaggi di errore, cerca il livello di log err di un report. Il formato dei report dipende dalla versione di Amazon EMR presente nel cluster.

L'esempio seguente mostra informazioni sugli errori per le versioni di EMR rilascio di Amazon precedenti alla 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

Le EMR versioni di Amazon 5.32.0 e 6.2.0 e successive utilizzano invece il seguente formato.

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