Configurazione del logging e del debug dei EMR cluster Amazon - 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à.

Configurazione del logging e del debug dei EMR cluster Amazon

Quando pianifichi il cluster, devi determinare la quantità di supporto di debug che vuoi rendere disponibile. Durante lo sviluppo iniziale dell'applicazione di elaborazione dati, ti consigliamo di testare l'applicazione su un cluster che elabora un piccolo, ma rappresentativo, sottoinsieme dei tuoi dati. In questo modo, probabilmente vorrai sfruttare tutti gli strumenti di debug EMR offerti da Amazon, come l'archiviazione dei file di registro su Amazon S3.

Una volta terminata la fase di sviluppo dell'applicazione di elaborazione dati e avviata quella di produzione, puoi scegliere di ridurre il debug. In questo modo, azzeri il costo relativo all'archiviazione degli archivi di file di log in Amazon S3 e riduci il carico di elaborazione sul cluster in quanto non è più necessario scrivere lo stato su Amazon S3. L'inconveniente di questa scelta è che in caso di problemi avrai a disposizione un minor numero di strumenti per gestirli.

File di log di default

Per impostazione predefinita, ogni cluster scrive file di log sul nodo primario. Questi file sono scritti nella directory /mnt/var/log/. Puoi accedervi utilizzando per connetterti SSH al nodo primario come descritto in. Connect al nodo primario EMR del cluster Amazon tramite SSH Amazon EMR raccoglie determinati log di sistema e applicazioni generati dai EMR daemon Amazon e da altri EMR processi Amazon per garantire operazioni di servizio efficaci.

Nota

Se utilizzi Amazon EMR release 6.8.0 o precedente, i file di log vengono salvati su Amazon S3 durante la chiusura del cluster, quindi non puoi accedere ai file di log una volta terminato il nodo primario. Amazon EMR rilascia i log di archivio 6.9.0 e versioni successive su Amazon S3 durante la scalabilità del cluster, in modo che i file di log generati sul cluster persistano anche dopo la chiusura del nodo.

Non è necessario attivare alcuna opzione affinché i file di log siano scritti sul nodo primario. Questo è il comportamento predefinito di Amazon EMR e Hadoop.

Un cluster genera vari tipi di file di log, tra cui:

  • Registri dei passaggi: questi log sono generati dal EMR servizio Amazon e contengono informazioni sul cluster e i risultati di ogni passaggio. I file di log sono archiviati nella directory /mnt/var/log/hadoop/steps/ nel nodo primario. Ogni fase registra i risultati a essa relativi in una sottodirectory numerata distinta: /mnt/var/log/hadoop/steps/s-stepId1/ per la prima fase, /mnt/var/log/hadoop/steps/s-stepId2/, per la seconda e così via. Gli identificatori di fase a 13 caratteri (ad esempio stepId 1, stepId 2) sono univoci per un cluster.

  • Hadoop e log YARN dei componenti: i log dei componenti associati sia ad YARN Apache che, ad esempio MapReduce, sono contenuti in cartelle separate in. /mnt/var/log Le posizioni dei file di log per i componenti Hadoop in /mnt/var/log sono le seguenti: hadoop-hdfs, hadoop-mapreduce, hadoop-httpfs e hadoop-yarn. La hadoop-state-pusher directory serve per l'output del processo Hadoop state pusher.

  • Bootstrap action logs (Log delle operazioni di bootstrap): se il processo utilizza operazioni di bootstrap, i risultati di queste operazioni sono registrati. I file di registro sono memorizzati in/mnt/var/log/bootstrap-actions/ sul nodo primario. Ogni operazione di bootstrap registra i risultati a essa relativi in una sottodirectory numerata distinta: /mnt/var/log/bootstrap-actions/1/ per la prima operazione di bootstrap, /mnt/var/log/bootstrap-actions/2/ per la seconda e così via.

  • Registri dello stato delle istanze: questi registri forniscono informazioni sullo stato della memoria e sui thread del CPU garbage collector del nodo. I file di log sono archiviati in /mnt/var/log/instance-state/ nel nodo primario.

Archiviazione di file di log in Amazon S3

Nota

Non è al momento possibile utilizzare l'aggregazione dei log in Amazon S3 con l'utility yarn logs.

Amazon EMR rilascia i log di archivio 6.9.0 e versioni successive su Amazon S3 durante la scalabilità del cluster, in modo che i file di log generati sul cluster persistano anche dopo la chiusura del nodo. Questo comportamento è abilitato automaticamente, quindi non devi fare nulla per attivarlo. Per le EMR versioni 6.8.0 e precedenti di Amazon, puoi configurare un cluster per archiviare periodicamente i file di log archiviati sul nodo primario su Amazon S3. In questo modo, i file di log saranno disponibili anche dopo la terminazione del cluster, indipendentemente dalla causa della stessa (arresto normale, errore, ecc.). Amazon EMR archivia i file di log su Amazon S3 a intervalli di 5 minuti.

Per archiviare i file di log su Amazon S3 per Amazon S3 per le versioni 6.8.0 e precedenti, devi abilitare questa funzionalità all'avvio del cluster. EMR È possibile eseguire questa operazione utilizzando la console, il, o ilCLI. API Per impostazione predefinita, l'archiviazione dei log è abilitata per i cluster avviati utilizzando la console. Per i cluster avviati utilizzando CLI oAPI, la registrazione su Amazon S3 deve essere abilitata manualmente.

Console
Archiviazione dei file di log in Amazon S3 con la nuova console
  1. Accedi a e apri AWS Management Console la EMR console Amazon all'indirizzo https://console.aws.amazon.com/emr.

  2. EC2Nel riquadro di navigazione a sinistra, scegli Cluster, quindi scegli Crea cluster. EMR

  3. In Cluster logs (Log del cluster), seleziona la casella di controllo Publish cluster-specific logs to Amazon S3 (Pubblica log specifici del cluster su Amazon S3).

  4. Nel campo Amazon S3 location (Posizione Amazon S3), digita o cerca il percorso Amazon S3 in cui archiviare i log. Se digiti il nome di una cartella che non esiste nel bucket, Amazon S3 crea tale cartella.

    Quando imposti questo valore, Amazon EMR copia i file di log dalle EC2 istanze del cluster su Amazon S3. In questo modo si evita la perdita dei file di registro alla chiusura del cluster e si EC2 interrompono le istanze che ospitano il cluster. Questi log sono utili per la risoluzione dei problemi. Per ulteriori informazioni, consulta Visualizzazione dei file di log.

  5. Facoltativamente, seleziona la casella di controllo Encrypt cluster-specific logs (Crittografa log specifici del cluster). Quindi, seleziona una AWS KMS chiave dall'elenco, inserisci una chiave ARN o crea una nuova chiave. Questa opzione è disponibile solo con la EMR versione Amazon 5.30.0 e successive, esclusa la versione 6.0.0. Per utilizzare questa opzione, aggiungi l'autorizzazione al AWS KMS profilo dell'EC2istanza e al EMR ruolo Amazon. Per ulteriori informazioni, consulta Per crittografare i file di registro archiviati in Amazon S3 con AWS KMS una chiave gestita dal cliente.

  6. Scegli qualsiasi altra opzione applicabile al cluster.

  7. Per avviare il cluster, scegli Create cluster (Crea cluster).

CLI
Per archiviare i file di registro su Amazon S3 con AWS CLI

Per archiviare i file di log su Amazon S3 utilizzando AWS CLI, digita il create-cluster comando e specifica il percorso di log di Amazon S3 utilizzando il parametro. --log-uri

  1. Per registrare i file su Amazon S3, digita il seguente comando e sostituisci myKey con il nome della tua EC2 key pair.

    aws emr create-cluster --name "Test cluster" --release-label emr-7.3.0 --log-uri s3://DOC-EXAMPLE-BUCKET/logs --applications Name=Hadoop Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3
  2. Quando si specifica il numero di istanze senza utilizzare il parametro --instance-groups, viene avviato un singolo nodo primario e le istanze rimanenti vengono avviate come nodi core. Tutti i nodi utilizzeranno il tipo di istanza specificato nel comando.

    Nota

    Se in precedenza non hai creato il ruolo di EMR servizio e il profilo di EC2 istanza di Amazon predefiniti, inserisci aws emr create-default-roles per crearli prima di digitare il create-cluster sottocomando.

Per crittografare i file di registro archiviati in Amazon S3 con AWS KMS una chiave gestita dal cliente

Con Amazon EMR versione 5.30.0 e successive (eccetto Amazon EMR 6.0.0), puoi crittografare i file di log archiviati in Amazon S3 con una chiave gestita dal cliente. AWS KMS Per abilitare questa opzione nella console, segui le fasi in Archiviazione di file di log in Amazon S3. Il tuo profilo di EC2 istanza Amazon e il tuo EMR ruolo Amazon devono soddisfare i seguenti prerequisiti:

  • Il profilo di EC2 istanza Amazon utilizzato per il tuo cluster deve essere autorizzato all'usokms:GenerateDataKey.

  • Il EMR ruolo Amazon utilizzato per il tuo cluster deve avere l'autorizzazione per l'usokms:DescribeKey.

  • Il profilo dell'EC2istanza Amazon e il EMR ruolo Amazon devono essere aggiunti all'elenco degli utenti chiave per la chiave gestita AWS KMS dal cliente specificata, come dimostrano i seguenti passaggi:

    1. Apri la console AWS Key Management Service (AWS KMS) in https://console.aws.amazon.com/kms.

    2. Per cambiare la AWS regione, usa il selettore della regione nell'angolo in alto a destra della pagina.

    3. Seleziona l'alias della chiave da modificare. KMS

    4. Nella pagina dei dettagli della chiave, in Key Users (Utenti di chiavi), scegli Add (Aggiungi).

    5. Nella finestra di dialogo Aggiungi utenti chiave, seleziona il profilo dell'EC2istanza Amazon e il EMR ruolo Amazon.

    6. Scegli Aggiungi.

Per ulteriori informazioni, consulta i ruoli di IAM servizio utilizzati da Amazon EMR e Utilizzo delle politiche chiave nella guida per gli sviluppatori di AWS Key Management Service.

Aggregazione di log in Amazon S3 mediante la AWS CLI

Nota

Non è al momento possibile utilizzare l'aggregazione dei log con l'utility yarn logs. È possibile utilizzare soltanto l'aggregazione supportata da questa procedura.

L'aggregazione di log (Hadoop 2.x) compila i log di tutti i container di una singola applicazione in un unico file. Per abilitare l'aggregazione dei log su Amazon S3 utilizzando AWS CLI il, è necessario utilizzare un'azione bootstrap all'avvio del cluster per abilitare l'aggregazione dei log e specificare il bucket in cui archiviare i log.

  • Per abilitare l'aggregazione di log, crea il file di configurazione denominato myConfig.json, che contiene quanto segue:

    [ { "Classification": "yarn-site", "Properties": { "yarn.log-aggregation-enable": "true", "yarn.log-aggregation.retain-seconds": "-1", "yarn.nodemanager.remote-app-log-dir": "s3:\/\/DOC-EXAMPLE-BUCKET\/logs" } } ]

    Digita il seguente comando e sostituiscilo myKey con il nome della tua EC2 key pair. Puoi inoltre sostituire il testo in rosso con le configurazioni desiderate.

    aws emr create-cluster --name "Test cluster" \ --release-label emr-7.3.0 \ --applications Name=Hadoop \ --use-default-roles \ --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge \ --instance-count 3 \ --configurations file://./myConfig.json

    Quando si specifica il numero di istanze senza utilizzare il parametro --instance-groups, viene avviato un singolo nodo primario e le istanze rimanenti vengono avviate come nodi core. Tutti i nodi utilizzeranno il tipo di istanza specificato nel comando.

    Nota

    Se non hai creato in precedenza il ruolo di EMR servizio e il profilo di EC2 istanza predefiniti, aws emr create-default-roles esegui per crearli prima di eseguire il create-cluster sottocomando.

Per ulteriori informazioni sull'utilizzo dei EMR comandi Amazon in AWS CLI, consulta AWS CLI Command Reference.

Posizione dei log

L'elenco seguente include tutti i tipi di log e le relative posizioni in Amazon S3. Puoi utilizzarli per risolvere i problemi di AmazonEMR.

Log delle fasi

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/steps/<step-id>/

Log di applicazioni

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/containers/

Questa posizione include i log del container stderr e stdout, directory.info, prelaunch.out e launch_container.sh.

Log del gestore delle risorse

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<leader-instance-id>/applications/hadoop-yarn/

Hadoop HDFS

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<all-instance-id>/applications/hadoop-hdfs/

Questa posizione include NameNode DataNode, e YARN TimelineServer registri.

Log del gestore dei nodi

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<all-instance-id>/applications/hadoop-yarn/

Log degli stati istanza

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<all-instance-id>/daemons/instance-state/

Registri di EMR approvvigionamento di Amazon

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<leader-instance-id>/provision-node/*

Log Hive

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<leader-instance-id>/applications/hive/*

  • Per trovare i log di Hive sul tuo cluster, rimuovi l'asterisco (*) e aggiungi /var/log/hive/ al link precedente.

  • Per trovare HiveServer 2 log, rimuovi l'asterisco (*) e var/log/hive/hiveserver2.log aggiungilo al link precedente.

  • Per trovare CLI i log di Hive, rimuovi l'asterisco (*) e aggiungilo al link precedente. /var/log/hive/user/hadoop/hive.log

  • Per trovare i log di Hive Metastore Server, rimuovi l'asterisco (*) e aggiungi /var/log/hive/user/hive/hive.log al link precedente.

Se l'errore si trova nel nodo primario o nel nodo attività dell'applicazione Tez, fornisci i log del container Hadoop appropriato.