Apache Spark Streaming-Tutorial für Anfänger: Arbeiten, Architektur und Funktionen

Veröffentlicht: 2020-02-27

Wir leben derzeit in einer Welt, in der jede Sekunde eine riesige Menge an Daten in rasantem Tempo generiert wird. Diese Daten können aussagekräftige und nützliche Ergebnisse liefern, wenn sie genau analysiert werden. Es kann auch vielen Branchen zur richtigen Zeit Lösungen anbieten.

Diese sind in Branchen wie Reisedienstleistungen, Einzelhandel, Medien, Finanzen und Gesundheitswesen sehr hilfreich. Viele andere Top-Unternehmen haben Datenanalysen eingeführt, wie z. B. die Verfolgung der Kundeninteraktion mit verschiedenen Arten von Produkten, die von Amazon auf seiner Plattform durchgeführt werden, oder Zuschauer, die in Echtzeit personalisierte Empfehlungen erhalten, die von Netflix bereitgestellt werden.

Es kann von jedem Unternehmen verwendet werden, das große Datenmengen verwendet, und sie können es zu ihrem Vorteil analysieren, um den Gesamtprozess in ihrem Unternehmen zu verbessern und die Kundenzufriedenheit und das Benutzererlebnis zu steigern. Bessere Benutzererfahrungen und Kundenzufriedenheit bieten der Organisation langfristig Vorteile, um das Geschäft auszubauen und Gewinne zu erzielen.

Inhaltsverzeichnis

Was ist Streamen?

Streaming von Daten ist eine Methode, bei der Informationen als kontinuierlicher und stetiger Strom übertragen werden. Mit dem Wachstum des Internets nehmen auch Streaming-Technologien zu.

Was ist Spark-Streaming?

Wenn Daten kontinuierlich in einer ungebundenen Folge ankommen, spricht man von einem Datenstrom. Die Eingabedaten fließen stetig und werden durch Streaming aufgeteilt. Die weitere Verarbeitung der Daten erfolgt, nachdem sie in diskrete Einheiten aufgeteilt wurden. Das Analysieren von Daten und das Verarbeiten von Daten mit geringer Latenz wird als Stream Processing bezeichnet.

2013 wurde Apache Spark mit Spark Streaming hinzugefügt. Es gibt viele Quellen, aus denen die Datenaufnahme erfolgen kann, z. B. TCP Sockets, Amazon Kinesis, Apache Flume und Kafka. Mit Hilfe ausgeklügelter Algorithmen erfolgt die Verarbeitung der Daten. Eine High-Level-Funktion wie Window, Join, Reduce und Map wird verwendet, um die Verarbeitung auszudrücken. Live-Dashboards, Datenbanken und Dateisysteme werden verwendet, um die verarbeiteten Daten in Dateisysteme zu verschieben.

Funktionieren von Stream

Es folgen die internen Arbeiten. Spark-Streaming teilt die Live-Eingangsdatenströme in Stapel auf. Spark Engine wird verwendet, um diese Batches zu verarbeiten, um als Ergebnis endgültige Stream-Batches zu generieren.

Daten im Stream werden in kleine Batches unterteilt und durch Apache Spark Discretized Stream (Spark DStream) dargestellt. Spark-RDDs werden zum Erstellen von DStreams verwendet, und dies ist die zentrale Datenabstraktion von Spark. Alle Komponenten von Apache Spark wie Spark SQL und Spark MLib können einfach und nahtlos in Spark Streaming integriert werden.

Spark Streaming hilft bei der Skalierung der Live-Datenströme. Es ist eine der Erweiterungen der Kern-Spark-API. Es ermöglicht auch die Verarbeitung von fehlertolerantem Stream und hohem Durchsatz. Die Verwendung von Spark Streaming ermöglicht die Verarbeitung und das Streaming von Live-Daten in Echtzeit. Große Top-Unternehmen der Welt nutzen den Service von Spark Streaming wie Pinterest, Netflix und Uber.

Spark Streaming bietet auch eine Analyse von Daten in Echtzeit. Die Live- und schnelle Datenverarbeitung erfolgt auf der einzigen Plattform von Spark Streaming.

Lesen Sie auch Apache Spark-Architektur

Warum Spark-Streaming?

Spark Streaming kann verwendet werden, um Echtzeitdaten aus verschiedenen Quellen wie Facebook, Börse und geografischen Systemen zu streamen und leistungsstarke Analysen durchzuführen, um Unternehmen zu ermutigen.

Es gibt fünf wesentliche Aspekte von Spark Streaming, die es so einzigartig machen, und zwar:

1. Integration

Erweiterte Bibliotheken wie Graphverarbeitung, maschinelles Lernen und SQL können problemlos integriert werden.

2. Kombination

Die Daten, die gestreamt werden, können in Verbindung mit interaktiven Abfragen und auch statischen Datensätzen erfolgen.

3. Lastausgleich

Spark Streaming hat einen perfekten Lastausgleich, was es zu etwas ganz Besonderem macht.

4. Ressourcenverbrauch

Spark Streaming nutzt die verfügbaren Ressourcen optimal aus.

5. Erholung von Nachzüglern und Misserfolgen

Spark Streaming kann sich schnell von allen Arten von Ausfällen oder Nachzüglern erholen.

Bedarf für Streaming in Apache Spark

Ein kontinuierliches Betreibermodell wird verwendet, während das System zum Verarbeiten von Strömen traditionell entworfen wird, um die Daten zu verarbeiten. Die Funktionsweise des Systems ist wie folgt:

  1. Datenquellen werden verwendet, um die Daten zu streamen. Die verschiedenen Arten von Datenquellen sind IoT-Geräte, Systemtelemetriedaten, Live-Protokolle und vieles mehr. Diese Streaming-Daten werden in Datenaufnahmesysteme wie Amazon Kinesis, Apache Kafka und viele mehr aufgenommen.
  2. Auf einem Cluster werden die Daten parallel verarbeitet.
  3. Zur Weitergabe der Ergebnisse werden nachgelagerte Systeme wie Kafka, Cassandra, HBase verwendet.

Eine Reihe von Worker-Knoten führt einige kontinuierliche Operatoren aus. Die Verarbeitung von Aufzeichnungen von gestreamten Daten erfolgt einzeln. Die Dokumente werden dann an die nächsten Betreiber in der Pipeline weitergeleitet.

Quelloperatoren sind es gewohnt, Daten von Erfassungssystemen zu erhalten. Sink-Operatoren sind es gewohnt, Output an das Downstream-System zu liefern.

Einige Operatoren sind stetig. Dies sind ein natürliches und unkompliziertes Modell. Wenn es um die Analyse komplexer Daten in Echtzeit geht, die in großem Maßstab durchgeführt wird, steht die traditionelle Architektur in der modernen Welt vor einigen Herausforderungen, und zwar:

Schnelle Fehlerbehebung

In den heutigen Systemausfällen werden Ausfälle schnell begleitet und dadurch ausgeglichen, dass verlorene Informationen wiederhergestellt werden, indem die fehlenden Informationen in parallelen Knoten berechnet werden. Dadurch wird die Wiederherstellung im Vergleich zu herkömmlichen Systemen noch schneller.

Lastenausgleicher

Load Balancer hilft dabei, Ressourcen und Daten effizienter zwischen den Knoten zuzuweisen, sodass keine Ressource wartet oder nichts tut, sondern die Daten gleichmäßig auf die Knoten verteilt werden.

Vereinheitlichung interaktiver, Batch- und Streaming-Workloads

Man kann auch mit Streaming-Daten interagieren, indem man Anfragen an die Streaming-Daten stellt. Es kann auch mit statischen Datensätzen kombiniert werden. Ad-hoc-Abfragen mit neuen Operatoren sind nicht möglich, da sie nicht für kontinuierliche Operatoren ausgelegt sind. Interaktive, Streaming- und Batch-Abfragen können durch die Verwendung einer einzelnen Engine kombiniert werden.

SQL-Abfragen und Analysen mit ML

Die Entwicklung von Systemen mit gemeinsamen Datenbankbefehlen erleichterte das Entwicklerleben in Zusammenarbeit mit anderen Systemen. Die Community akzeptiert weitgehend SQL-Abfragen. Wo das System Module und Bibliotheken für maschinelles Lernen bereitstellt, die für fortgeschrittene Analysezwecke verwendet werden können.

Spark-Streaming-Übersicht

Spark Streaming verwendet eine Reihe von RDDs, die zur Verarbeitung der Echtzeitdaten verwendet werden. Daher wird Spark Streaming im Allgemeinen häufig zur Behandlung von Echtzeit-Datenströmen verwendet. Spark Streaming bietet eine fehlertolerante Verarbeitung von Live-Datenströmen mit hohem Durchsatz. Es ist eine zusätzliche Funktion, die mit der Core-Spark-API geliefert wird.

Spark-Streaming-Funktionen

  1. Business Analyse : Mit dem Einsatz von Spark Streaming kann man auch das Verhalten des Publikums lernen. Diese Erkenntnisse können später bei der Entscheidungsfindung von Unternehmen verwendet werden.
  2. Integration: Echtzeit- und Stapelverarbeitung sind in Spark integriert
  3. Fehlertoleranz – Die einzigartige Fähigkeit des Spark besteht darin, dass er sich nach einem Ausfall effizient erholen kann.
  4. Geschwindigkeit: Niedrige Latenz wird durch Spark erreicht
  5. Skalierung: Knoten können von Spark problemlos auf Hunderte skaliert werden.

Spark-Streaming-Grundlagen

1. Streaming-Kontext

In Spark wird der Datenstrom von Streaming Context konsumiert und verwaltet. Es erstellt ein Receiver-Objekt, das durch Registrieren eines Input-Streamings erzeugt wird. Somit wird die Hauptfunktion von Spark zu einem kritischen Einstiegspunkt für das System, da sie viele Kontexte bereitstellt, die einen Standard-Workflow für verschiedene Quellen wie Akka Actor, Twitter und ZeroMQ bereitstellen.

Lesen Sie: Rolle von Apache Spark in Big Data und warum es einzigartig ist

Ein Spark-Kontextobjekt repräsentiert die Verbindung mit einem Spark-Cluster. Wenn das Spark-Streaming-Objekt von einem StreamingContext-Objekt erstellt wird, können auch Akkumulatoren, RDDs und Broadcast-Variablen als SparkContex-Objekt erstellt werden.

2. Checkpoints, Broadcast-Variablen und Akkumulatoren

Kontrollpunkte

Checkpoint funktioniert ähnlich wie Checkpoints, das den Zustand der Systeme genauso speichert wie in den Spielen. In diesem Fall helfen Checkpoints dabei, den Ressourcenverlust zu reduzieren und das System widerstandsfähiger gegen Systemausfälle zu machen. Eine Checkpoint-Methodik ist ein besserer Weg, um die Zustände des Systems zu verfolgen und zu speichern, damit es zum Zeitpunkt der Wiederherstellung leicht zurückgezogen werden kann.

Broadcast-Variablen

Anstatt die vollständige Kopie der Aufgaben an die Netzwerkknoten bereitzustellen, fängt es immer eine Nur-Lese-Variable ab, die dafür verantwortlich ist, die Knoten verschiedener vorhandener Aufgaben zu bestätigen und somit die Übertragungs- und Berechnungskosten durch einzelne Knoten zu reduzieren. So kann es einen signifikanten Eingabesatz effizienter bereitstellen. Es verwendet auch fortschrittliche Algorithmen, um die Broadcast-Variable an verschiedene Knoten im Netzwerk zu verteilen; somit werden die Kommunikationskosten reduziert.

Akkumulatoren

Akkumulatoren sind Variablen, die für verschiedene Zwecke angepasst werden können. Es gibt aber auch bereits definierte Akkus wie Zähler- und Summen-Akkus. Es gibt auch Tracking-Akkumulatoren, die jeden Knoten verfolgen, und einige zusätzliche Funktionen können ebenfalls hinzugefügt werden. Numerische Akkumulatoren unterstützen viele digitale Funktionen, die auch von Spark unterstützt werden. Auf Wunsch des Benutzers können auch benutzerdefinierte Akkumulatoren erstellt werden.

DStream

DStream bedeutet diskretisierter Strom. Spark Streaming bietet die notwendige Abstraktion, die als Discretized Stream (DStream) bezeichnet wird. DStream sind Daten, die kontinuierlich streamen. Von einer Datenquelle wird DStream empfangen. Sie kann auch aus einem Strom verarbeiteter Daten erhalten werden. Die Transformation des Eingabestroms erzeugt einen verarbeiteten Datenstrom.

Nach einem bestimmten Intervall sind Daten in einem RDD enthalten. Eine endlose Reihe von RDDs repräsentiert einen DStream.

Caching

Entwickler können DStream verwenden, um die Daten des Streams im Arbeitsspeicher zwischenzuspeichern. Dies ist nützlich, wenn die Daten mehrfach im DStream berechnet werden. Dies kann durch die Verwendung der Methode persist() auf einem DStream erreicht werden.

Die Duplizierung von Daten erfolgt, um die Sicherheit eines belastbaren Systems zu gewährleisten, das einem Ausfall im System standhalten kann und somit in der Lage ist, Fehler im System zu tolerieren (wie Kafka, Sockets, Flume usw.).

Vorteil und Architektur von Spark Streaming

Die Verarbeitung jeweils eines Datenstroms kann manchmal umständlich sein; Daher diskretisiert Spark Streaming die Daten in kleine Teilstapel, die leicht zu verwalten sind. Das liegt daran, dass Spark-Worker Datenpuffer parallel erhalten, die vom Spark-Streaming-Empfänger akzeptiert werden. Und daher führt das gesamte System die Chargen parallel aus und akkumuliert dann die Endergebnisse. Anschließend werden diese kurzen Aufgaben von der Spark-Engine stapelweise verarbeitet und die Ergebnisse anderen Systemen zur Verfügung gestellt.

In der Spark-Streaming-Architektur wird die Berechnung nicht statisch zugewiesen und auf einen Knoten geladen, sondern basiert auf der Datenlokalität und Verfügbarkeit der Ressourcen. Es reduziert somit die Ladezeit im Vergleich zu früheren traditionellen Systemen. Daher ist die Verwendung des Datenlokalitätsprinzips auch einfacher für die Fehlererkennung und ihre Behebung.

Datenknoten in Spark werden normalerweise durch RDD dargestellt, das Resilient Distribution Dataset ist.

Ziele von Spark Streaming

Im Folgenden sind die von der Spark-Architektur erreichten Ziele aufgeführt.

1. Dynamischer Lastausgleich

Dies ist eines der wesentlichen Merkmale von Spark Streaming, bei dem Datenströme dynamisch vom Load Balancer zugewiesen werden, der für die Zuweisung von Daten und die Berechnung von Ressourcen anhand bestimmter darin definierter Regeln verantwortlich ist. Das Hauptziel des Lastausgleichs besteht darin, die Arbeitslast effizient auf die Worker auszugleichen und alles parallel zu ordnen, sodass keine Ressourcen verschwendet werden. Und auch verantwortlich für die dynamische Zuweisung von Ressourcen an die Worker-Knoten im System.

2. Ausfall und Wiederherstellung

Wie im herkömmlichen System muss das gesamte System diesen Teil neu berechnen, wenn ein Betriebsfehler auftritt, um die verlorenen Informationen zurückzubekommen. Aber das Problem tritt auf, wenn ein Knoten all diese Wiederherstellung handhabt und das gesamte System auf seinen Abschluss warten lässt. Während in Spark die verlorenen Informationen von anderen freien Knoten berechnet werden und das System ohne zusätzliches Warten wie bei den herkömmlichen Methoden wieder zum Nachverfolgen bringen.

Außerdem wird die fehlgeschlagene Aufgabe gleichmäßig auf alle Knoten im System verteilt, um sie schneller als bei der herkömmlichen Methode neu zu berechnen und nach dem Ausfall wiederherzustellen.

3. Stapel und interaktive Abfrage

Eine Gruppe von RDDs in Spark wird als DStream in Spark bezeichnet, das eine Beziehung zwischen Streaming-Workloads und Batches bereitstellt. Diese Stapel werden im Arbeitsspeicher von Spark gespeichert, was eine effiziente Möglichkeit bietet, die darin enthaltenen Daten abzufragen.

Das Beste an Spark ist, dass es eine Vielzahl von Bibliotheken enthält, die bei Bedarf vom Spark-System verwendet werden können. Einige Namen der Bibliotheken sind MLlib für maschinelles Lernen, SQL für Datenabfragen, GraphX ​​und Data Frame, während Dataframe und Fragen von DStreams in äquivalente SQL-Anweisungen konvertiert werden können.

4. Leistung

Da das Spark-System parallele Verteilungen der Aufgabe verwendet, die seine Durchsatzkapazität verbessern und somit die Sparks-Engine nutzen, die in der Lage ist, eine niedrige Latenz von bis zu wenigen 100 Millisekunden zu erreichen.

Wie funktioniert Spark-Streaming?

Die Daten im Stream werden in kleine Batches aufgeteilt, die im Spark-Streaming als DStreams bezeichnet werden. Es ist intern eine Folge von RDDs. Spark-APIs werden von RDDS verwendet, um die Daten zu verarbeiten, und als Ergebnis werden Sendungen zurückgesendet. Die API von Spark Streaming ist in Python, Java und Scala verfügbar. Viele Funktionen fehlen in der kürzlich eingeführten Python-API in Spark 1.2.

Zustandsbehaftete Berechnungen werden als Zustand bezeichnet, der vom Spark-Streaming basierend auf den eingehenden Daten im Stream beibehalten wird. Die Daten, die im Stream fließen, werden innerhalb eines Zeitrahmens verarbeitet. Dieser Zeitrahmen muss vom Entwickler angegeben und von Spark Streaming zugelassen werden. Das Zeitfenster ist der Zeitrahmen, innerhalb dessen die Arbeit abgeschlossen werden soll. Das Zeitfenster wird innerhalb eines Zeitintervalls aktualisiert, das auch als Gleitintervall im Fenster bezeichnet wird.

Spark-Streaming-Quellen

Empfängerobjekt, das mit einem Eingabe-DStream verknüpft ist, speichert empfangene Daten zur Verarbeitung im Sparks-Speicher.

Integriertes Streaming hat zwei Kategorien:

1. Grundlegende Quelle

In der Streaming-API verfügbare Quellen, z. B. Socket-Verbindung und Dateisystem.

2. Erweiterte Quelle

Fortgeschrittene Quellen sind Kinesis, Flume & Kafka usw.

Streaming-Operationen

Es gibt zwei Arten von Vorgängen, die von Spark RDDS unterstützt werden, und zwar:

1. Ausgabevorgänge in Apache Spark

Ausgabeoperationen werden verwendet, um die Daten des DStream in ein externes System wie ein Dateisystem oder eine Datenbank auszulagern. Output Operations ermöglicht die Nutzung transformierter Daten durch externe Systeme. Alle DStreams-Transformationen werden tatsächlich durch das Triggern ausgeführt, das durch die externen Systeme erfolgt.

Dies sind die aktuellen Ausgabeoperationen:

foreachRDD(func), [suffix]), saveAsHadoopFiles(prefix, [suffix]), saveAsObjectFiles(prefix, [suffix])”prefix-TIME_IN_MS[.suffix]”, saveAsTextFiles(prefix, print()

RDDs führen Ausgabeoperationen träge aus. Innerhalb der DStream-Operationen der Ausgabe werden RDD-Aktionen erzwungen, um die empfangenen Daten zu verarbeiten. Die Ausführung von Ausgabeoperationen erfolgt einzeln. Spark-Anwendungen definieren die Reihenfolge der Leistung der Ausgabevorgänge.

2. Spark-Transformation

Die Spark-Transformation ändert auch die Daten aus dem DStream, da RDDs dies in Spark unterstützen. Genau wie bei Spark RDDs werden viele Änderungen von DStream unterstützt.

Im Folgenden sind die häufigsten Transformationsvorgänge aufgeführt:

Window(), updateStateByKey(), transform(), [numTasks]), cogroup(otherStream, [numTasks]), join(otherStream, ReduceByKey(func, [numTasks]), countByValue(), Reduce(), union(otherStream ), count(), repartition(numPartitions), filter(), flatMap(), map().

Fazit

In der heutigen datengesteuerten Welt haben sich Tools zum Speichern und Analysieren von Daten als Schlüsselfaktor für Business Analytics und Wachstum erwiesen. Big Data und die damit verbundenen Tools und Technologien erfreuen sich einer steigenden Nachfrage. Daher hat Apache Spark einen großen Markt und bietet Kunden und Unternehmen großartige Funktionen.

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