Beste Antwort
Was das gesamte Framework betrifft: In diesem Moment ist Apache Spark seinen Konkurrenten einen Schritt voraus Aufgrund einiger Merkmale wie der Implementierung (und Integration) verschiedener und sehr nützlicher Tools (Spark SQL und MLlib, um nur zwei zu nennen) und der Möglichkeit, Zwischendaten in den RDDs zu speichern. Aufgrund dieses Motivs konzentrieren sich viele Entwickler darauf, und ich vermute, dass jeder Konkurrent vernachlässigbar sein wird, bis ein neuer Durchbruch in der zugrunde liegenden Technologie erzielt wird.
Anders, wenn Sie die einzelnen Implementierungen betrachten Bei Apache Spark können Sie einige Konkurrenten identifizieren: H2O ist ein Herausforderer von Spark MLlib, Storm (von Joe hervorgehoben) ist eine Alternative zum Spark-Streaming, und es gibt mehrere SQL-ähnliche Engines, die mit Spark SQL verglichen werden können .
Antwort
Hier sind einige JARGONS von Apache Spark, die ich verwenden werde.
Job: – Ein Code, der einige Eingaben von HDFS oder lokal liest, einige Berechnungen für die Daten durchführt und einige Ausgabedaten schreibt.
Stufen: -Jobs sind in Stufen unterteilt . Stufen werden als Karte klassifiziert oder Stufen reduzieren (es ist einfacher zu verstehen, wenn Sie an Hadoop gearbeitet haben und korrelieren möchten). Stufen werden basierend auf Rechengrenzen unterteilt. Alle Berechnungen (Operatoren) können nicht in einer einzigen Stufe aktualisiert werden. Dies geschieht über viele Stufen.
Aufgaben: – Jede Stufe hat einige Aufgaben, eine Aufgabe pro Partition. Eine Aufgabe wird auf einer Datenpartition auf einem Executor (Computer) ausgeführt.
DAG – DAG steht für Directed Acyclic Graph, im vorliegenden Kontext ist es eine DAG von Operatoren.
Executor – Der Prozess, der für die Ausführung einer Aufgabe verantwortlich ist.
Treiber – Das Programm / der Prozess, der für die Ausführung des Jobs über die Spark Engine
Master verantwortlich ist – Der Computer, auf dem das Treiberprogramm ausgeführt wird
Slave – Der Computer, auf dem das Executor-Programm ausgeführt wird.
Alle Jobs in Spark bestehen aus einer Reihe von Operatoren und werden mit einem Datensatz ausgeführt. Alle Operatoren in einem Job werden zum Erstellen einer DAG (Directed Acyclic Graph) verwendet. Die DAG wird optimiert, indem Operatoren nach Möglichkeit neu angeordnet und kombiniert werden. Angenommen, Sie müssen einen Spark-Job senden, der eine Kartenoperation gefolgt von einer Filteroperation enthält. Der Spark DAG-Optimierer würde die Reihenfolge dieser Operatoren neu ordnen, da durch das Filtern die Anzahl der Datensätze verringert würde, die einer Kartenoperation unterzogen werden sollen.
Spark hat eine kleine Codebasis und das System ist in verschiedene Ebenen unterteilt. Jede Schicht hat einige Verantwortlichkeiten. Die Ebenen sind unabhängig voneinander.
- Die erste Ebene ist die Interpreter , Spark verwendet mit einigen Änderungen einen Scala-Interpreter.
- Wenn Sie Ihren Code in die Spark-Konsole eingeben (RDDs erstellen und Operatoren anwenden) ), Spark erstellt ein Operator-Diagramm.
- Wenn der Benutzer eine Aktion ausführt (z. B. sammeln), wird das Diagramm an einen DAG-Scheduler gesendet. Der DAG-Scheduler unterteilt das Operatordiagramm in Stufen (zuordnen und reduzieren).
- Eine Stufe besteht aus Aufgaben, die auf Partitionen der Eingabedaten basieren. Der DAG-Scheduler leitet die Operatoren zusammen, um das Diagramm zu optimieren. Für z. B. viele Kartenoperatoren können in einer einzigen Stufe geplant werden. Diese Optimierung ist der Schlüssel zur Leistung von Sparks. Das Endergebnis eines DAG-Schedulers ist eine Reihe von Stufen.
- Die Stufen werden an Taskplaner . Der Taskplaner startet Aufgaben über Cluster-Manager (Spark Standalone / Yarn / Mesos). Der Taskplaner kennt keine Abhängigkeiten zwischen Phasen.
- Der Worker führt die Aufgaben auf dem Slave aus. Pro wird eine neue JVM gestartet JOB. Der Worker kennt nur den Code, der an ihn übergeben wird.
Spark speichert die zu verarbeitenden Daten zwischen und ermöglicht es mir 100-mal schneller als hadoop. Spark verwendet Akka für Multithreading. Verwalten des Executor-Status, Planen von Aufgaben. Mithilfe von Jetty können Dateien (Jars und andere Dateien) gemeinsam genutzt, HTTP-Broadcast ausgeführt und die Spark-Web-Benutzeroberfläche ausgeführt werden. Spark ist hochgradig konfigurierbar und kann die vorhandenen Komponenten verwenden, die bereits im Hadoop Eco-System vorhanden sind. Dadurch konnte der Funke exponentiell wachsen, und in kurzer Zeit verwenden ihn viele Unternehmen bereits in der Produktion.
Sie können sich
, um die Dinge genauer zu verstehen.