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 del cluster e specificare classificazioni di configurazione aggiuntive per ogni gruppo di istanze in un cluster in esecuzione. A tale scopo, puoi utilizzare la console Amazon EMR, AWS Command Line Interface (AWS CLI) o l' AWS SDK.

Quando aggiorni la configurazione di un'applicazione per un gruppo di istanze nella nuova console di Amazon EMR, la console tenta di unire la nuova configurazione con quella esistente per creare una nuova configurazione attiva. Nel caso insolito in cui Amazon EMR non riesca a unire la configurazione, ricevi un avviso da parte della console.

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 vi sono differenze tra la configurazione esistente e il file fornito, Amazon EMR avvia le operazioni di riconfigurazione, riavvia alcune applicazioni e reimposta tutte le configurazioni modificate manualmente, ad esempio le configurazioni modificate durante la connessione al cluster tramite SSH, ai valori di default 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 console Amazon EMR,AWS CLI() o AWS Command Line Interface l'SDK, Amazon EMR verifica AWS il file di configurazione esistente sul cluster. Se vi sono differenze tra la configurazione esistente e il file fornito, Amazon EMR avvia le operazioni di riconfigurazione, riavvia alcune applicazioni e reimposta tutte le configurazioni modificate manualmente, ad esempio le configurazioni modificate durante la connessione al cluster tramite SSH, ai valori di default per il gruppo di istanze specificato.

Nota

Amazon EMR esegue alcune operazioni 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 EMR avvia anche operazioni di riconfigurazione per le classificazioni di configurazione specificate nella richiesta. Per un elenco completo di queste operazioni, consulta la sezione Classificazioni di configurazione per la versione di Amazon EMR in uso. Per esempio, Classificazioni di configurazione 6.2.0.

Nota

La Guida ai rilasci di Amazon EMR elenca solo le operazioni di riconfigurazione a partire dalle versioni di Amazon EMR 5.32.0 e 6.2.0.

Interruzione del servizio

Amazon EMR segue un processo in sequenza per riconfigurare le istanze nei gruppi di istanze attività e principali. 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 processi YARN durante un riavvio di YARN, è possibile creare un cluster Amazon EMR con più nodi master o impostare yarn.resourcemanager.recovery.enabled su true nella classificazione di configurazione yarn-site. Per ulteriori informazioni sull'utilizzo di più nodi master, consulta High availability YARN. ResourceManager

Convalida dell'applicazione

Amazon EMR verifica che ogni applicazione nel 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 ha esito negativo, Amazon EMR ripristina i parametri di configurazione a quelli della versione di lavoro 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. Il metodo di riconfigurazione predefinito e l'unico disponibile nei rilasci di Amazon EMR precedenti alla versione 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. Inoltre, cancella qualsiasi modifica ai file di configurazione effettuata al di fuori dell'API di riconfigurazione.

  • Unione. Metodo di riconfigurazione supportato per le release 5.35.0 e 6.6.0 o successive di Amazon EMR, tranne la console Amazon EMR, nella quale non è supportato da nessuna versione. 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 essenziali di Hadoop di cui necessita per garantire la corretta esecuzione del servizio.

Limitazioni

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

  • Le applicazioni non YARN possono avere esito negativo durante il riavvio o causare problemi al cluster, soprattutto se le applicazioni non sono configurate correttamente. I cluster che si avvicinano al massimo utilizzo della memoria e della CPU potrebbero essere interessati da 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 la riconfigurazione di un gruppo di istanze, Amazon EMR riavvia le applicazioni per consentire alle nuove configurazioni di diventare effettive. 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 ha esito negativo, Amazon EMR ripristina i parametri di configurazione a quelli della versione di lavoro 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 in Amazon EMR versione 5.23.0 e successive e non in Amazon EMR versione 5.21.0 o 5.22.0.

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

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

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

  • Amazon EMR attualmente non supporta alcune 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 console Amazon EMR non supporta le riconfigurazioni di tipo Merge (Unione).

  1. Apri la console Amazon EMR in /emr https://console.aws.amazon.com

  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 Reconfigure (Riconfigura), scegli Edit in table (Modifica nella tabella) o Edit in JSON file (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.

    • Edit in JSON file (Modifica nel file JSON): è possibile immettere la configurazione direttamente in formato JSON o utilizzare una sintassi abbreviata illustrata nel testo oscurato. In caso contrario, fornisci un URI Amazon S3 per un file con un oggetto Configurations JSON.

    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.

Riconfigurazione di un gruppo di istanze utilizzando la 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, sostituiscila <j-2AL4XXXXXX5T9> con l'ID del cluster e sostituiscila <ig-1xxxxxxx9> con l'ID del gruppo di istanze.

Esempio – Sostituzione di una configurazione per un gruppo di istanze

L'esempio seguente fa riferimento a un file JSON di configurazione chiamato instanceGroups.json per modificare la proprietà del controllore dello stato del NodeManager disco YARN 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 virtuale YARN. NodeManager La configurazione include anche i valori specificati in precedenza per il controllo dello stato del NodeManager disco YARN 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 virtuale YARN. NodeManager Poiché si tratta di una riconfigurazione di tipo Merge, non sovrascrive i valori precedentemente specificati per il controllo dello stato del disco YARN. NodeManager

  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 NodeManager disco YARN dell'esempio precedente, inviane una nuova con il seguente contenuto. instanceGroups.json

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

Il JSON di esempio seguente illustra 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" } } ] } ]

Riconfigurazione di un gruppo di istanze utilizzando Java SDK

Nota

Negli esempi seguenti, sostituiscilo <j-2AL4XXXXXX5T9> con il tuo ID del cluster e sostituiscilo <ig-1xxxxxxx9> con l'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. Utilizza SSH per connetterti al nodo sul quale 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'istanza Amazon EC2 e al timestamp. Ogni report è un file YAML 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:

    amzn-s3-demo-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'istanza Amazon EC2 e al timestamp. Ogni report è un file YAML 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 del report dipende dalla versione di Amazon EMR sul cluster.

L'esempio seguente mostra informazioni sugli errori per le versioni di Amazon EMR 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 versioni di Amazon EMR 5.32.0, 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: