Warum kann ich Spark-Anwendungen auf meinem EMR-Notebook nicht ausführen?

Lesedauer: 4 Minute
0

Ich kann meine Apache-Spark-Anwendung auf meinem Amazon-EMR-Notebook nicht ausführen

Kurzbeschreibung

Spark-Anwendungen, die von einem EMR-Notebook aus ausgeführt werden, können mit der folgenden Ausnahme möglicherweise nicht gestartet werden:

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

Lösung

Im Folgenden finden Sie allgemeine Schritte zur Fehlerbehebung für die Ausführung von Spark-Anwendungen auf Ihrem EMR-Notebook:

Ressourcen im Cluster überprüfen

Stellen Sie sicher, dass Spark über genügend Ressourcen im Cluster verfügt, damit Jupyter einen Spark-Kontext erstellen kann. Sie können die verfügbaren Ressourcen mithilfe von Amazon-CloudWatch-Metriken oder dem Resource Manager überprüfen.

Sicherstellen, dass die Sparkmagic-Bibliotheken korrekt konfiguriert sind

Wenden Sie sich an Ihren Jupyter-Administrator, um sicherzustellen, dass die Sparkmagic-Bibliotheken korrekt konfiguriert sind.

Starten Sie den Notebook-Kernel neu

1.    Öffnen Sie die EMR-Konsole und wählen Sie dann Notebook aus.

2.    Wählen Sie das Notebook aus der Notebookliste aus und wählen Sie dann In JupyterLab öffnen oder In Jupyter öffnen. Ein neuer Browser-Tab öffnet sich für den JupyterLab- oder Jupyter-Notebook-Editor.

3.    Wählen Sie im Menü Kernel die Option Kernel neu starten aus.

Erhöhen Sie das Zeitlimit für die Spark-Sitzung für JupyterLab

Gehen Sie wie folgt vor, um das Zeitlimit für die Spark-Sitzung zu verlängern:

1.    Öffnen Sie die EMR-Konsole und wählen Sie Notebook.

2.    Wählen Sie das Notebook aus der Notebookliste aus.

3.    Greifen Sie auf die Jupyter-Webbenutzeroberfläche des EMR-Notebooks zu.

4.    Öffnen Sie das EMR-Notebookterminal.

5.    Öffnen Sie die Datei config.json mit dem folgenden Befehl:

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

5.    Fügen Sie die Option livy_session_startup_timeout_seconds: xxx in der Datei config.json hinzu oder aktualisieren Sie sie.

6.    Starte alle Kernel neu.

Hinweis: Wenn die JupyterHub-Anwendung in der EMR-Primärinstanz installiert ist, gehen Sie wie folgt vor, um den Timeoutzeitraum der Spark-Sitzung zu verlängern.

1.    Führen Sie den folgenden Befehl aus:

vi /etc/jupyter/conf/config.json

2.    Aktualisieren Sie die Option livy_session_startup_timeout_seconds:60 auf Ihren Wert und starten Sie dann den JupyterHub-Container neu.

Tune-Spark-Treiberspeicher

Optimieren Sie den Spark-Treiberspeicher, der von der Jupyter-Notebook-Anwendung verwendet wird, um die Ressourcenzuweisung zu steuern. Wie kann ich die Spark-Konfiguration in einem Amazon-EMR-Notebook ändern?

Sicherstellen, dass der Apache-Livy-Service fehlerfrei ist

Überprüfen Sie den Status des Livy-Servers, der auf der Primärknoteninstance läuft

1.    Verwenden Sie den folgenden Befehl, um den Status des Livy-Servers zu überprüfen:

sudo systemctl status livy-server

2.    Verwenden Sie den folgenden Befehl, um den Live-Server neu zu starten, wenn der Status inaktiv ist:

sudo systemctl start livy-server

Livy-Server-Speicher erhöhen

Standardmäßig versucht der Notebook-Client 90 Sekunden lang, eine Verbindung zum Livy-Server herzustellen. Wenn der Livy-Server nicht innerhalb von 90 Sekunden antwortet, generiert der Client ein Timeout. Der häufigste Grund, warum der Livy-Server nicht reagiert, ist der Mangel an ausreichenden Ressourcen. Um dies zu beheben, erhöhen Sie den Speicher für den Livy-Server:

1.    Stellen Sie mithilfe von SSH eine Verbindung zur Primärknoten-Instance her.

2.    Fügen Sie der Datei /etc/livy/conf/livy-env.sh die folgende Eigenschaft hinzu:

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

3.    Damit die Änderungen wirksam werden, starten Sie den Livy-Server neu.

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

In Livy den Cluster-Modus verwenden anstelle des Client-Modus

Spark-Anwendungen werden im Client-Modus auf dem Notebook eingereicht und der Spark-Treiber wird als Unterprozess des Livy-Servers ausgeführt. Die Ausführung als Unterprozess kann zu einem Mangel an Ressourcen auf dem Primärknoten führen. Um zu verhindern, dass Livy aufgrund unzureichender Ressourcen ausfällt, ändern Sie den Bereitstellungsmodus in den Cluster-Modus. Der Treiber wird im Cluster-Modus auf der primären Anwendung in den Kern- und Aufgabenknoten und nicht auf dem Primärknoten ausgeführt.

Gehen Sie wie folgt vor, um den Cluster-Modus zu verwenden:

1.    Stellen Sie mithilfe von SSH eine Verbindung zum Primärknoten her.

2.    Fügen Sie der Datei /etc/livy/conf/livy.conf den folgenden Parameter hinzu:

livy.spark.deploy-mode  cluster

3.    Damit die Änderungen wirksam werden, starten Sie den Livy-Server neu.

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

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr