Apache Spark-Tutorial für Anfänger: Lerne Apache Spark mit Beispielen

Veröffentlicht: 2020-03-26

Inhaltsverzeichnis

Einführung

Daten sind überall – von den Kundenprotokollen eines kleinen Startups bis hin zu den Bilanzen eines großen multinationalen Unternehmens. Unternehmen nutzen diese generierten Daten, um zu verstehen, wie ihr Geschäft läuft und wo sie sich verbessern können. Peter Sondergaard, Senior Vice President von Gartner Research, sagte, dass Informationen das Öl des 21. Jahrhunderts sind und Analytik als Verbrennungsmotor betrachtet werden kann.

Aber wenn die Unternehmen wachsen, wachsen auch ihre Kunden, Stakeholder, Geschäftspartner und Produkte. Die Menge an Daten, die sie verarbeiten müssen, wird also riesig.

All diese Daten müssen analysiert werden, um bessere Produkte für ihre Kunden zu entwickeln. Aber Terabytes an Daten, die pro Sekunde produziert werden, können nicht mit Excel-Tabellen und Logbüchern verarbeitet werden. Riesige Datensätze können von Tools wie Apache Spark verarbeitet werden.

Auf die Details der Software gehen wir durch eine Einführung in Apache Spark ein .

Was ist Apache Spark?

Apache Spark ist ein Open-Source-Cluster-Computing-Framework . Es handelt sich im Grunde genommen um ein Datenverarbeitungssystem , das zur Handhabung riesiger Datenlasten und Datensätze verwendet wird. Es kann große Datenmengen schnell verarbeiten und diese Aufgaben auch auf mehrere Systeme verteilen, um die Arbeitsbelastung zu verringern. Es verfügt über eine einfache API, die die Belastung der Entwickler verringert, wenn sie von den beiden Begriffen – Big Data Processing und Distributed Computing – überwältigt werden!

Die Entwicklung von Apache Spark begann als Open-Source-Forschungsprojekt im AMPLab der UC Berkeley von Matei Zaharia , der als Gründer von Spark gilt. Im Jahr 2010 war das Projekt unter einer BSD-Lizenz Open Source. Später wurde es 2013 zu einem Inkubationsprojekt der Apache Software Foundation. Dies wurde 2014 zu einem der Top-Projekte des Unternehmens.

Im Jahr 2015 hatte Spark mehr als 1000 Mitwirkende am Projekt. Dies machte es zu einem der aktivsten Projekte in der Apache Software Foundation und auch in der Welt von Big Data. Seit 2009 unterstützen über 200 Unternehmen dieses Projekt.

Aber warum all diese Verrücktheit wegen Spark?

Dies liegt daran, dass Spark in der Lage ist, Tonnen von Daten zu verarbeiten und gleichzeitig zu verarbeiten. Diese Daten können über Tausende verbundener virtueller oder physischer Server verteilt werden. Es verfügt über eine riesige Auswahl an APIs und Bibliotheken, die mit mehreren Programmiersprachen wie Python, R, Scala und Java funktionieren. Es unterstützt das Streamen von Daten, komplizierte Aufgaben wie die Verarbeitung von Graphen und auch maschinelles Lernen. Auch die bahnbrechenden Funktionen von Apache Spark machen seine Nachfrage himmelhoch.

Es unterstützt eine breite Palette von Datenbanken wie HDFS von Hadoop, Amazon S3 und NoSQL-Datenbanken wie MongoDB, Apache HBase, MapR Database und Apache Cassandra. Es unterstützt auch Apache Kafka und MapR Event Store.

Apache Spark-Architektur

Nachdem wir die Einführung von Apache Spark erkundet haben, lernen wir nun seine Struktur kennen. Erfahren Sie mehr über die Apache-Architektur.

Seine Architektur ist klar definiert und besteht aus zwei Hauptkomponenten:

Belastbare verteilte Datensätze (RDD)

Dies ist eine Sammlung von Datenelementen, die auf den Worker-Knoten des Spark-Clusters gespeichert sind. Ein Cluster ist eine verteilte Sammlung von Computern, auf denen Sie Spark installieren können. RDDs werden als belastbar bezeichnet, da sie in der Lage sind, die Daten im Falle eines Ausfalls zu reparieren. Sie werden als verteilt bezeichnet, da sie über mehrere Knoten in einem Cluster verteilt sind.

Zwei Arten von RDDs werden von Spark unterstützt:

  • Aus Dateien im HDFS (Hadoop Distributed File System) erstellte Hadoop-Datensätze
  • Parallelisierte Sammlungen basierend auf Scala-Sammlungen

RDDs können für zwei Arten von Operationen verwendet werden:

  • Transformationen – Diese Operationen werden zum Erstellen von RDDs verwendet
  • Aktionen – Diese werden verwendet, um Spark anzuweisen, einige Berechnungen durchzuführen und das Ergebnis an den Treiber zurückzugeben. Wir werden in den nächsten Abschnitten mehr über Treiber erfahren

DAG (gerichteter azyklischer Graph)

Dies kann als eine Abfolge von Aktionen auf Daten betrachtet werden. Sie sind eine Kombination aus Ecken und Kanten. Jeder Scheitelpunkt stellt ein RDD dar und jede Kante stellt die Berechnung dar, die an diesem RDD durchgeführt werden muss. Dies ist ein Diagramm, das alle auf das RDD angewendeten Operationen enthält.

Dies ist ein gerichteter Graph, da ein Knoten mit dem anderen verbunden ist. Der Graph ist azyklisch, da er keine Schleife oder keinen Zyklus enthält. Sobald eine Transformation durchgeführt wurde, kann es nicht in seine ursprüngliche Position zurückkehren. Eine Transformation in Apache Spark ist eine Aktion, die einen Datenpartitionsstatus von A nach B transformiert.

Also, wie funktioniert diese Architektur? Lass uns sehen.

Die Apache Spark-Architektur hat zwei primäre Daemons und einen Cluster-Manager . Dies sind – master und worker daemon . Ein Daemon ist ein Programm, das als Hintergrundprozess ausgeführt wird. Ein Cluster in Spark kann viele Slaves, aber einen einzigen Master-Daemon haben.

Innerhalb des Master-Knotens befindet sich ein Treiberprogramm, das die Spark-Anwendung ausführt. Die interaktive Shell, die Sie möglicherweise zum Ausführen des Codes verwenden, fungiert als Antriebsprogramm. Innerhalb des Treiberprogramms wird der Spark-Kontext erstellt. Dieser Kontext und das Treiberprogramm führen mit Hilfe eines Clustermanagers einen Job aus.

Der Job wird dann auf dem Worker-Knoten verteilt, nachdem er in viele Aufgaben aufgeteilt wurde. Die Tasks werden von den Worker-Knoten auf den RDDs ausgeführt . Das Ergebnis wird an Spark Context zurückgegeben . Wenn Sie die Anzahl der Worker erhöhen, können die Jobs in mehrere Partitionen aufgeteilt und über viele Systeme parallel ausgeführt werden. Dies verringert die Arbeitsbelastung und verbessert die Fertigstellungszeit des Jobs.

Apache Spark: Vorteile

Dies sind die Vorteile der Verwendung von Apache Spark :

Geschwindigkeit

Während der Ausführung von Jobs werden die Daten zunächst in RDDs gespeichert. Da diese Daten im Speicher gespeichert sind, sind sie schnell zugänglich und der Job wird schneller ausgeführt. Neben dem In-Memory-Caching hat Spark auch die Abfrageausführung optimiert. Dadurch können analytische Abfragen schneller ausgeführt werden. Es kann eine sehr hohe Datenverarbeitungsgeschwindigkeit erreicht werden. Es kann bei der Verarbeitung großer Datenmengen 100-mal schneller sein als Hadoop.

Bewältigung mehrerer Workloads

Apache Spark kann mehrere Workloads gleichzeitig verarbeiten. Dies können interaktive Abfragen, Graphverarbeitung, maschinelles Lernen und Echtzeitanalysen sein. Eine Spark-Anwendung kann problemlos viele Workloads integrieren.

Benutzerfreundlichkeit

Apache Spark verfügt über einfach zu verwendende APIs für die Handhabung großer Datenmengen. Dazu gehören mehr als 100 Operatoren, mit denen Sie parallele Anwendungen erstellen können. Diese Operatoren können Daten transformieren, und halbstrukturierte Daten können mithilfe von Datenrahmen-APIs bearbeitet werden.

Sprachunterstützung

Spark ist der Favorit eines Entwicklers, da es mehrere Programmiersprachen wie Java, Python, Scala und R unterstützt. Dies gibt Ihnen mehrere Optionen für die Entwicklung Ihrer Anwendungen. Die APIs sind auch sehr entwicklerfreundlich, da sie ihnen helfen, die komplizierte verteilte Verarbeitungstechnologie hinter hochrangigen Operatoren zu verbergen, die dazu beitragen, die erforderliche Codemenge zu reduzieren.

Effizienz

Lazy Evaluation wird in Spark durchgeführt. Dies bedeutet, dass alle durch das RDDS vorgenommenen Transformationen fauler Natur sind. Die Ergebnisse dieser Transformationen werden also nicht sofort produziert, sondern aus einem bestehenden wird ein neues RDD erstellt. Der Benutzer kann das Apache-Programm in mehrere kleinere Operationen organisieren, was die Handhabbarkeit der Programme erhöht.

Lazy Evaluation erhöht die Geschwindigkeit des Systems und seine Effizienz.

Gemeinschaftliche Unterstützung

Als eines der größten Open-Source-Big-Data-Projekte arbeiten mehr als 200 Entwickler aus verschiedenen Unternehmen daran. 2009 wurde die Community gegründet und wächst seitdem stetig. Wenn Sie also auf einen technischen Fehler stoßen, finden Sie wahrscheinlich online eine Lösung, die von Entwicklern gepostet wird.

Möglicherweise finden Sie auch viele freiberufliche oder Vollzeitentwickler, die bereit sind, Sie bei Ihrem Spark-Projekt zu unterstützen.

Echtzeit-Streaming

Spark ist berühmt für das Streamen von Echtzeitdaten . Dies wird durch Spark Streaming ermöglicht, das eine Erweiterung der Kern-Spark-API ist. Dadurch können Data Scientists Echtzeitdaten aus verschiedenen Quellen wie Amazon Kinesis und Kafka verarbeiten . Die verarbeiteten Daten können dann in Datenbanken, Dateisysteme und Dashboards übertragen werden.

Der Prozess ist insofern effizient, als Spark Streaming Datenausfälle schnell wiederherstellen kann. Es führt einen besseren Lastausgleich durch und nutzt Ressourcen effizient.

Anwendungen von Apache Spark

Nach der Einführung in Apache Spark und seine Vorteile erfahren wir mehr über seine verschiedenen Anwendungen:

Maschinelles Lernen

Die Fähigkeit von Apache Spark, die Daten im Arbeitsspeicher zu speichern und Abfragen wiederholt auszuführen, macht es zu einer guten Option für das Training von ML-Algorithmen. Dies liegt daran, dass das wiederholte Ausführen ähnlicher Abfragen die Zeit reduziert, die zum Bestimmen der bestmöglichen Lösung erforderlich ist.

Die Machine Learning Library (MLlib) von Spark kann erweiterte Analysevorgänge wie Vorhersageanalyse, Klassifizierung, Stimmungsanalyse, Clustering und Dimensionsreduktion durchführen.

Datenintegration

Daten, die über die verschiedenen Systeme innerhalb einer Organisation hinweg produziert werden, sind nicht immer sauber und organisiert. Spark ist ein sehr effizientes Tool zur Durchführung von ETL-Operationen für diese Daten. Das bedeutet, dass Operationen ausgeführt, extrahiert, transformiert und geladen werden, um Daten aus verschiedenen Quellen abzurufen, zu bereinigen und zu organisieren. Diese Daten werden dann zur Analyse in ein anderes System geladen.

Interaktive Analyse

Dies ist ein Prozess, durch den Benutzer Datenanalysen an Live-Daten durchführen können. Mit Hilfe der strukturierten Streaming -Funktion in Spark können Benutzer interaktive Abfragen zu Live-Daten ausführen. Sie können auch interaktive Abfragen in einer Live-Websitzung ausführen, um die Webanalyse zu verbessern. Auf diese Live-Datenströme können auch maschinelle Lernalgorithmen angewendet werden.

Nebel-Computing

Wir wissen, dass IoT (Internet of Things) mit vielen Daten zu tun hat, die von verschiedenen Geräten mit Sensoren stammen. Dadurch entsteht ein Netzwerk aus miteinander verbundenen Geräten und Benutzern. Da das IoT-Netzwerk jedoch zu expandieren beginnt, besteht Bedarf an einem verteilten Parallelverarbeitungssystem.

Die Datenverarbeitung und die dezentrale Speicherung erfolgen also zusammen mit Spark über Fog Computing . Dafür bietet Spark leistungsstarke Komponenten wie Spark Streaming, GraphX ​​und MLlib. Erfahren Sie mehr über die Anwendungen von Apache Spark.

Fazit

Wir haben gelernt, dass Apache Spark schnell, effektiv und funktionsreich ist. Aus diesem Grund nutzen Unternehmen wie Huawei, Baidu, IBM, JP Morgan Chase, Lockheed Martin und Microsoft es, um ihr Geschäft zu beschleunigen. Es ist heute in verschiedenen Bereichen wie Einzelhandel, Unternehmen, Finanzdienstleistungen, Gesundheitsmanagement und Fertigung bekannt.

Da die Welt immer abhängiger von Daten wird, wird Apache Spark auch in Zukunft ein wichtiges Werkzeug für die Datenverarbeitung sein.

Wenn Sie mehr über Big Data erfahren möchten, schauen Sie sich unser PG Diploma in Software Development Specialization in Big Data-Programm an, das für Berufstätige konzipiert ist und mehr als 7 Fallstudien und Projekte bietet, 14 Programmiersprachen und Tools abdeckt und praktische praktische Übungen enthält Workshops, mehr als 400 Stunden gründliches Lernen und Unterstützung bei der Stellenvermittlung bei Top-Unternehmen.

Lernen Sie Softwareentwicklungskurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Führen Sie die datengesteuerte technologische Revolution an

Über 400 Lernstunden. 14 Sprachen & Tools. IIIT-B Alumni-Status.
Fortgeschrittenes Zertifikatsprogramm in Big Data vom IIIT Bangalore