Perché non riesco a eseguire le applicazioni Spark sul mio notebook EMR?

4 minuti di lettura
0

Non riesco a eseguire l'applicazione Apache Spark sul mio notebook Amazon EMR

Breve descrizione

Le applicazioni Spark eseguite da un notebook EMR potrebbero non avviarsi con la seguente eccezione:

The code failed because of a fatal error:
Session 4 did not start up in 60 seconds.

Risoluzione

Di seguito sono riportati i passaggi più comuni per la risoluzione dei problemi relativi all'esecuzione delle applicazioni Spark sul notebook EMR:

Controllo delle risorse del cluster

Assicurati che Spark disponga di risorse disponibili sufficienti nel cluster per consentire a Jupyter di creare un contesto Spark. Puoi controllare le risorse disponibili utilizzando i parametri di Amazon CloudWatch o Resource Manager.

Verifica che le librerie Sparkmagic siano configurate correttamente

Contatta il tuo amministratore Jupyter per assicurarti che le librerie Sparkmagic siano configurate correttamente.

Riavvio del kernel del notebook

1.    Apri la console EMR e seleziona Notebook.

2.    Seleziona il notebook dall'elenco Notebooks (Notebook), quindi scegli Open in JupyterLab (Apri in JupyterLab) o Open in Jupyter (Apri in Jupyter). Una nuova scheda del browser si apre nell'editor JupyterLab o Notebook Jupyter.

3.    Dal menu Kernel, seleziona Restart Kernel (Riavvia il kernel).

Aumento del periodo di timeout della sessione Spark per JupyterLab

Per aumentare il periodo di timeout della sessione Spark, procedi come segue:

1.    Apri la console EMR e seleziona Notebook.

2.    Seleziona il notebook dall'elenco Notebooks (Notebook).

3.    Accedi all'interfaccia utente Web Jupyter del notebook EMR.

4.    Apri il terminale del notebook EMR.

5.    Apri il file config.json usando il seguente comando:

vi /home/notebook/.sparkmagic/config.json

5.    Aggiungi o aggiorna l'opzione livy_session_startup_timeout_seconds: xxx nel file config.json.

6.    Riavvia tutti i kernel.

Nota: se l'applicazione JupyterHub è installata nell'istanza primaria EMR, procedi come segue per aumentare il periodo di timeout della sessione Spark.

1.    Esegui il seguente comando:

vi /etc/jupyter/conf/config.json

2.    Aggiorna l'opzione livy_session_startup_timeout_seconds:60 al tuo valore, quindi riavvia il container JupyterHub.

Ottimizzazione della memoria del driver Spark

Ottimizza la memoria del driver Spark utilizzata dall'applicazione notebook Jupyter per controllare l'allocazione delle risorse. Per maggiori informazioni, consulta Come posso modificare la configurazione di Spark in un notebook Amazon EMR?

Verifica che il servizio Apache Livy sia integro

Controllo dello stato del server Livy in esecuzione sull'istanza del nodo primario

1.    Usa il seguente comando per verificare lo stato del server Livy:

sudo systemctl status livy-server

2.    Usa il seguente comando per riavviare il server Livy se lo stato è inattivo:

sudo systemctl start livy-server

Aumento della memoria del server Livy

Per impostazione predefinita, il client del notebook prova a connettersi al server Livy per 90 secondi. Se il server Livy non risponde entro 90 secondi, il client genera un timeout. Il motivo più comune per cui il server Livy non risponde è la mancanza di risorse sufficienti. Per risolvere questo problema, aumenta la memoria per il server Livy:

1.    Connettiti all'istanza del nodo primario tramite SSH.

2.    Aggiungi la seguente proprietà al file /etc/livy/conf/livy-env.sh:

export LIVY_SERVER_JAVA_OPTS="-Xmx8g" (option to your value)

3.    Riavvia il server Livy per rendere effettive le modifiche.

sudo systemctl stop livy-server
sudo systemctl start livy-server

Uso della modalità cluster anziché della modalità client in Livy

Le applicazioni Spark vengono inviate sul notebook in modalità client e il driver Spark viene eseguito come processo secondario del server Livy. L'esecuzione come processo secondario potrebbe causare una mancanza di risorse sul nodo primario. Per evitare che Livy riporti un errore a causa di risorse insufficienti, cambia la modalità di implementazione alla modalità cluster. In modalità cluster, il driver viene eseguito sull'applicazione primaria sui nodi attività e core e non sul nodo primario.

Per utilizzare la modalità cluster, procedi come segue:

1.    Connettiti al nodo primario tramite SSH.

2.    Aggiungi il seguente parametro al file /etc/livy/conf/livy.conf:

livy.spark.deploy-mode  cluster

3.    Riavvia il server Livy per rendere effettive le modifiche:

sudo systemctl stop livy-server
sudo systemctl start livy-server

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa