Ich baue eine RESTful-API neben Apache Spark auf. Das folgende Python-Skript mit spark-submit
scheint gut zu funktionieren:
Aber wenn ich herumgucke, sehe ich Dinge wie Livy und Spark-Jobserver . Ich lese die Dokumentation dieser Projekte und ein paar Tutorials, aber ich verstehe immer noch nicht die Vorteile von Livy oder Spark-Jobserver gegenüber einem einfachen Skript mit CherryPy oder Flask oder einem anderen Web-Framework. Geht es um Skalierbarkeit? Kontextverwaltung? Was fehlt mir hier? Wenn das, was ich will, eine einfache RESTful API mit nicht vielen Benutzern ist, sind Livius oder Spark-Jobserver die Mühe wert? Wenn ja, warum?
Wenn Sie spark-submit
verwenden, müssen Sie die JAR-Datei manuell in den Cluster hochladen und den Befehl ausführen. Alles muss vor dem Lauf vorbereitet sein
Wenn Sie Livius oder Spark-Jobserver verwenden, können Sie Datei und Job automatisch hochladen. Sie können weitere Anwendungen hinzufügen, die sich mit demselben Cluster verbinden und jar mit dem nächsten Job hochladen
Außerdem können Sie mit Livy und Spark-JobServer Spark im interaktiven Modus verwenden, was mit der Spark-Submission nur schwer möglich ist;)
Ich werde nicht speziell auf die Verwendung von Livy oder spark-jobserver eingehen, aber es gibt mindestens drei Gründe, den Spark-Kontext nicht direkt in Ihre Anwendung einzubetten:
Sicherheit mit dem Hauptaugenmerk darauf, die Exposition Ihres Clusters gegenüber der Außenwelt zu reduzieren. Angreifer, der die Kontrolle über Ihre Anwendung erlangt, kann alles tun, um Zugriff auf Ihre Daten zu erhalten, um beliebigen Code in Ihrem Cluster auszuführen, wenn der Cluster nicht korrekt konfiguriert ist.
Stabilität. Spark ist ein komplexer Rahmen und es gibt viele Faktoren, die seine langfristige Leistung und Stabilität beeinflussen können. Durch das Entkoppeln von Spark-Kontext und -Anwendung können Sie Spark-Probleme problemlos behandeln, ohne dass die Anwendung vollständig heruntergefahren werden muss.
Reaktionsfähigkeit. Die Spark-API für Benutzer ist hauptsächlich (in PySpark exklusiv) synchron. Die Verwendung externer Dienste löst dieses Problem grundsätzlich für Sie.
Tags und Links apache-spark spark-jobserver livy