Direkt zum Inhalt

Wie behebe ich Spark-Anwendungen, die in meinem Amazon-EMR-Notebook nicht ausgeführt werden können?

Lesedauer: 4 Minute
0

Ich möchte Probleme mit Apache-Spark-Anwendungen beheben, die in meinem Amazon-EMR-Notebook nicht ausgeführt werden können.

Kurzbeschreibung

Spark-Anwendungen, die in einem Amazon-EMR-Notebook ausgeführt werden, können möglicherweise mit dem folgenden Fehler nicht gestartet werden:

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

Lösung

Ressourcen auf dem Cluster überprüfen

Stelle sicher, dass Spark über genügend verfügbare Ressourcen im Cluster verfügt, damit Jupyter einen Spark-Kontext erstellen kann. Verwende Amazon-CloudWatch-Metriken oder den Ressourcen-Manager, um die verfügbaren Ressourcen zu überprüfen.

Sicherstellen, dass die Sparkmagic-Bibliotheken richtig konfiguriert sind

Wende dich an deinen Jupyter-Administrator, um sicherzustellen, dass die Sparkmagic-Bibliotheken richtig konfiguriert sind.

Den Notebook-Kernel neu starten

Gehe wie folgt vor:

  1. Öffne die Amazon-EMR-Konsole.
  2. Wähle in der Navigationsleiste Workspaces (Notebooks) aus.
  3. Wähle den Workspace aus der Liste Workspaces (Notebooks) aus und wähle dann Schnellstart aus. Oder wähle den Workspace aus der Liste und wähle Anfügen und dann In JupyterLab starten oder In Jupyter starten.
  4. Wähle Kernel und dann Restart Kernel (Kernel neu starten).

Den Timeout-Zeitraum für die Spark-Sitzung für JupyterLab erhöhen

Gehe wie folgt vor:

  1. Öffne die Amazon-EMR-Konsole.

  2. Wähle in der Navigationsleiste Workspaces (Notebooks) aus.

  3. Wähle den Workspace aus der Liste Workspaces (Notebooks) aus und wähle dann Schnellstart aus. Ein neuer Browser-Tab öffnet sich mit dem JupyterLab-Editor.

  4. Öffne das Notebook-Terminal.

  5. Führe den folgenden Befehl aus, um die Datei config.json zu öffnen:

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

    Hinweis: Wenn du die JupyterHub-Anwendung in der primären Amazon-EMR-Instance installiert hast, führe den folgenden Befehl aus:

    vi /etc/jupyter/conf/config.json
  6. Füge die Option livy_session_startup_timeout_seconds: ### in der Datei config.json hinzu oder aktualisiere sie.

  7. Starte alle Kernels neu.
    Hinweis: Wenn du die JupyterHub-Anwendung in der primären Amazon-EMR-Instance installiert hast, starte den JupyterHub-Container neu.

Den Spark-Treiberspeicher optimieren

Ändere den Spark-Treiberspeicher, den die Jupyter-Notebook-Anwendung zur Steuerung der Ressourcenzuweisung verwendet. Weitere Informationen findest du unter Wie ändere ich die Spark-Konfiguration in meinem Amazon-EMR-Studio-Workspace?

Sicherstellen, dass der Livy-Service fehlerfrei ist

Den Status des Livy-Servers überprüfen, der auf der Primärknoten-Instance läuft

Gehe wie folgt vor:

  1. Um den Status des Livy-Servers zu überprüfen, führe den folgenden Befehl aus:

    sudo systemctl status livy-server
  2. Wenn der Server in einem inaktiven Status ist, führe den folgenden Befehl aus, um den Livy-Server neu zu starten:

    sudo systemctl start livy-server

Den Livy Server-Speicher erhöhen

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

Gehe wie folgt vor:

  1. Verwende SSH, um eine Verbindung zur Primärknoten-Instance herzustellen.

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

    export LIVY_SERVER_JAVA_OPTS="-Xmx8g" (option to your value)
  3. Starte den Livy-Server neu.

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

Den Clustermodus anstelle des Client-Modus in Livy verwenden

Wenn du Spark-Anwendungen im Client-Modus auf dem Notebook einreichst, wird der Spark-Treiber als Unterprozess des Livy-Servers ausgeführt. Wenn du einen Unterprozess ausführst, kann es auf dem Primärknoten zu einem Mangel an Ressourcen kommen. Um Livy-Ausfälle zu vermeiden, die durch unzureichende Ressourcen verursacht werden, ändere den Bereitstellungsmodus in den Clustermodus. Wenn du Spark-Anwendungen im Clustermodus ausführst, wird der Treiber auf dem Core- und Aufgabenknoten statt auf dem Primärknoten ausgeführt.

Gehe wie folgt vor:

  1. Verwende SSH, um eine Verbindung zum Primärknoten herzustellen.

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

    livy.spark.deploy-mode  cluster
  3. Starte den Livy-Server neu:

    sudo systemctl stop livy-server; sudo systemctl start livy-server
AWS OFFICIALAktualisiert vor 6 Monaten