2017-05-18 3 views
0

Ich richte ein paar dags ein, die schließlich mit einem Spark-Submit-Befehl zu einem Funke-Cluster enden. Ich verwende den Cluster-Modus, wenn das einen Unterschied macht. Wie auch immer, so funktioniert mein Code, aber ich erkannte, dass der Funkenjob fehlschlagen würde, würde ich nicht unbedingt von der Airflow-Benutzeroberfläche aus wissen. Durch Auslösen des Jobs über den Cluster-Modus gibt Airflow den Job an einen verfügbaren Mitarbeiter weiter, daher hat der Luftstrom keine Kenntnis vom Funke-Job.So überwachen Sie den Spark-Job mit Airflow

Wie kann ich dieses Problem beheben?

Antwort

1

Sie können den Modus client in Betracht ziehen, da der Client erst beendet wird, wenn der Spark-Job abgeschlossen ist. Der Luftstrom-Ausführer kann den Beendigungscode aufnehmen.

Andernfalls müssen Sie möglicherweise einen Jobserver verwenden. Check out https://github.com/spark-jobserver/spark-jobserver

+0

Wir haben dies berücksichtigt, aber brauchen wir unsere Luftstrombox nicht, um Teil des Spark-Clusters zu sein, wenn wir den "Client" -Modus verwenden sollten? Ich bin noch neu in Spark, als wir den Client-Modus ausprobierten, gab es keine Jobs, bis ich den Funken-Arbeiter auf der Box startete. – luckytaxi

+0

Sie müssen 'spark-submit' auf demselben Host wie der Airflow-Worker ausführen. Dieser Worker-Knoten muss mit dem Spark-Cluster kommunizieren können. –

0

Airflow (ab Version 1.8) hat

SparkSqlOperator - https://github.com/apache/incubator-airflow/blob/master/airflow/contrib/operators/spark_sql_operator.py ; 
SparkSQLHook code - https://github.com/apache/incubator-airflow/blob/master/airflow/contrib/hooks/spark_sql_hook.py 
SparkSubmitOperator - https://github.com/apache/incubator-airflow/blob/master/airflow/contrib/operators/spark_submit_operator.py 
SparkSubmitHook code - https://github.com/apache/incubator-airflow/blob/master/airflow/contrib/hooks/spark_submit_hook.py 

Wenn Sie diese verwenden, wird der Luftstrom Aufgabe scheitern, wenn der Funke Job ausfällt. Sie müssen möglicherweise den Protokollierungsteil in der Datei spark_submit_hook ändern, wenn Sie spark1.x verwenden, um Echtzeitprotokolle zu erhalten, da Spark-submit selbst die Fehler für einige der 1.x-Versionen auf stdout protokolliert (ich musste Änderungen für 1.6 vornehmen). 1).

Beachten Sie auch, dass der SparkSubmitOperator seit der letzten stabilen Version viele Verbesserungen erfahren hat.

Verwandte Themen