Wie behebe ich eine fehlgeschlagene oder hängengebliebene Spark-SQL-Abfrage in Amazon EMR?

Lesedauer: 3 Minute
0

Ich möchte Informationen sammeln, um Probleme mit meinen Spark-SQL-Abfragen in Amazon EMR zu beheben.

Lösung

Die von Spark SQL abgeschlossenen Abfragen finden Sie auf der Registerkarte Benutzeroberflächen der Anwendung des Spark-Verlaufsservers Ihres EMR-Clusters. Weitere Informationen finden Sie unter Anzeigen von Benutzeroberflächen für persistente Anwendungen.

Gehen Sie wie folgt vor, um auf abgeschlossene Spark-SQL-Abfragen zuzugreifen:

  1. Wählen Sie auf dem Spark-Verlaufsserver SQL/DataFrame aus, um abgeschlossene Spark-SQL-Abfragen anzuzeigen.
  2. Wählen Sie die in der Abfrage die Job-Anwendungs-IDs von Spark SQL aus, um die vollständigen Job-ID-Informationen auf der Registerkarte Jobs zu öffnen. Beachten Sie, dass eine SQL-Abfrage mehr als eine Job-ID haben kann.

Die folgenden Informationen sind auf der Registerkarte Jobs verfügbar:

  • Auf der Registerkarte Jobs können Sie den Status des Jobs, seine Dauer und die zugehörige SQL-Abfrage sehen.
  • Auf der Registerkarte Jobs können Sie die Zeitleiste der Anwendungs-ID überprüfen. In der Zeitleiste werden das Hinzufügen und Entfernen der Spark-Executors in chronologischer Reihenfolge angezeigt.
  • Scrollen Sie nach unten, um den DAG (Direct Acyclic Graph) zu sehen. Der DAG ist eine Visualisierung der Spark-SQL-Abfrage. Sie können auch die Kette der RDD-Abhängigkeiten sehen.
  • Scrollen Sie weiter, um die abgeschlossenen Phasen des Spark-SQL-Jobs zu sehen.
  • Wählen Sie die Beschreibung der Phasen-ID aus, um die Gesamtzeit der Abfrage für alle Aufgaben, eine Zusammenfassung auf Standortebene und die zugehörige Job-ID anzuzeigen. Die Phasen-Ansicht enthält Details zu allen RDDs, die dieser Phase entsprechen. Diese Ansicht enthält auch Informationen über den RDD-Vorgang auf niedrigerer Ebene, der sich auf den Spark-SQL-Vorgang auf höherer Ebene bezieht.
  • Erweitern Sie Gesammelte Messung nach Executor, um das Protokoll des Executors anzuzeigen. Das Executor-Protokoll enthält zusätzliche Details zum Spark-SQL-Job.

Hier ist ein Beispiel-Protokoll:

23/01/17 18:10:17 INFO Executor: Finished task 0.0 in stage 16.0 (TID 16). 1882 bytes result sent to driver
23/01/17 18:10:17 INFO YarnCoarseGrainedExecutorBackend: Got assigned task 17
23/01/17 18:10:17 INFO Executor: Running task 0.0 in stage 17.0 (TID 17)
23/01/17 18:10:17 INFO TorrentBroadcast: Started reading broadcast variable 17 with 1 pieces (estimated total size 4.0 MiB)
23/01/17 18:10:17 INFO MemoryStore: Block broadcast_17_piece0 stored as bytes in memory (estimated size 7.2 KiB, free 4.8 GiB)
23/01/17 18:10:17 INFO TorrentBroadcast: Reading broadcast variable 17 took 8 ms
23/01/17 18:10:17 INFO MemoryStore: Block broadcast_17 stored as values in memory (estimated size 13.8 KiB, free 4.8 GiB)
23/01/17 18:10:17 INFO PythonRunner: Times: total = 52, boot = -31, init = 83, finish = 0
23/01/17 18:10:17 INFO Executor: Finished task 0.0 in stage 17.0 (TID 17). 1883 bytes result sent to driver
23/01/17 18:11:20 ERROR CoarseGrainedExecutorBackend: RECEIVED SIGNAL TERM
23/01/17 18:11:20 INFO MemoryStore: MemoryStore cleared
23/01/17 18:11:20 INFO BlockManager: BlockManager stopped
23/01/17 18:11:20 INFO ShutdownHookManager: Shutdown hook called

Ausführliche Informationen finden Sie in der Dokumentation von Apache Spark unter der Registerkarte Jobs im Abschnitt Web-UI.

Ähnliche Informationen

Überprüfen der Protokolldateien

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr