Vorwort
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Wer sollte dieses Buch lesen?
Wir haben dieses Buch für Software-Profis entwickelt, die eine Affinität zu Daten haben und ihre Kenntnisse und Fähigkeiten im Bereich der Stream-Verarbeitung verbessern wollen und die bereits mit Apache Spark vertraut sind oder es für ihre Streaming-Anwendungen nutzen wollen.
Wir haben eine umfassende Einführung in die Konzepte der Stream-Verarbeitung aufgenommen. Diese Konzepte bilden die Grundlage für das Verständnis der beiden Streaming-APIs von Apache Spark: Structured Streaming und Spark Streaming.
Wir bieten eine eingehende Untersuchung dieser APIs und geben Einblicke in ihre Funktionen, Anwendung und praktische Ratschläge aus unserer Erfahrung.
Neben den APIs und ihren praktischen Anwendungen werden auch einige fortgeschrittene Techniken besprochen, die in die Werkzeugkiste eines jeden Stream-Processing-Praktikers gehören.
Leserinnen und Leser aller Niveaus werden von den einführenden Teilen des Buches profitieren, während erfahrenere Fachleute neue Erkenntnisse aus den behandelten fortgeschrittenen Techniken ziehen und Anleitungen erhalten, wie sie mehr lernen können.
Wir setzen keine Kenntnisse über Spark voraus, aber Leser, die mit den Datenverarbeitungsfunktionen von Spark nicht vertraut sind, sollten wissen, dass wir uns in diesem Buch auf die Streaming-Funktionen und APIs von Spark konzentrieren. Für einen allgemeineren Überblick über die Fähigkeiten und das Ökosystem von Spark empfehlen wir Spark: The Definitive Guide von Bill Chambers und Matei Zaharia (O'Reilly).
Die Programmiersprache, die in diesem Buch verwendet wird, ist Scala. Obwohl Spark Bindungen in Scala, Java, Python und R anbietet, sind wir der Meinung, dass Scala die Sprache der Wahl für Streaming-Anwendungen ist. Auch wenn viele der Codebeispiele in andere Sprachen übersetzt werden können, eignen sich einige Bereiche, wie z. B. komplexe zustandsabhängige Berechnungen, am besten für die Programmiersprache Scala.
Spark installieren
Spark ist ein Open-Source-Projekt von Apache, das offiziell von der Apache Foundation gehostet wird, für dessen Entwicklung aber hauptsächlich GitHub genutzt wird. Du kannst es auch als binäres, vorkompiliertes Paket unter folgender Adresse herunterladen: https://spark.apache.org/downloads.html.
Von dort aus kannst du Spark auf einem oder mehreren Rechnern ausführen, was wir später erklären werden. Für alle wichtigen Linux-Distributionen gibt es Pakete, die dir die Installation erleichtern sollten.
In diesem Buch verwenden wir Beispiele und Code, die mit Spark 2.4.0 kompatibel sind. Abgesehen von kleineren Ausgabe- und Formatierungsdetails sollten diese Beispiele auch mit zukünftigen Spark-Versionen kompatibel sein.
Beachte jedoch, dass Spark ein Programm ist, das auf der Java Virtual Machine (JVM) läuft, die du auf jedem Rechner, auf dem eine Spark-Komponente laufen soll, installieren und zugänglich machen solltest.
Um ein Java Development Kit (JDK) zu installieren, empfehlen wir OpenJDK, das ebenfalls auf vielen Systemen und Architekturen verfügbar ist.
Du kannst auch das Oracle JDK installieren.
Spark läuft, wie jedes Scala-Programm, auf jedem System, auf dem ein JDK ab Version 6 vorhanden ist. Die empfohlene Java-Laufzeit für Spark hängt von der jeweiligen Version ab:
-
Für Spark-Versionen unter 2.0 ist Java 7 die empfohlene Version.
-
Für die Spark-Versionen 2.0 und höher ist Java 8 die empfohlene Version.
Scala lernen
Die Beispiele in diesem Buch sind in Scala. Scala ist die Implementierungssprache des Spark-Kerns, aber bei weitem nicht die einzige Sprache, in der er verwendet werden kann; zum jetzigen Zeitpunkt bietet Spark APIs in Python, Java und R.
Scala ist heute eine der vollständigsten Programmiersprachen, da sie sowohl funktionale als auch objektorientierte Aspekte bietet. Dank ihrer Prägnanz und Typinferenz sind die grundlegenden Elemente der Syntax leicht zu verstehen.
Scala als Anfängersprache hat aus pädagogischer Sicht viele Vorteile, wobei seine reguläre Syntax und Semantik einer der wichtigsten ist.
Björn Regnell, Universität Lund
Daher hoffen wir, dass die Beispiele klar genug sind, damit jeder Leser ihre Bedeutung erfassen kann. Leserinnen und Lesern, die eine Einführung in die Sprache suchen und lieber mit einem Buch lernen, empfehlen wirAtomic Scala [Eckel2013]. Wer ein Nachschlagewerk sucht, um sein Wissen aufzufrischen, dem empfehlen wir Programming in Scala [Odersky2016].
Der Weg in die Zukunft
Dieses Buch ist in fünf Teile gegliedert:
-
Teil I erweitert und vertieft die Konzepte, die wir in diesem Vorwort besprochen haben. Wir behandeln die grundlegenden Konzepte der Stream-Verarbeitung, die allgemeinen Entwürfe der Architekturen, die Streaming implementieren, und untersuchen Spark im Detail.
-
In Teil II lernen wir Structured Streaming, sein Programmiermodell und die Implementierung von Streaming-Anwendungen kennen, von relativ einfachen zustandslosen Transformationen bis hin zu fortgeschrittenen zustandsabhängigen Operationen. Außerdem besprechen wir die Integration mit Überwachungs-Tools, die einen 24/7-Betrieb unterstützen, und entdecken die experimentellen Bereiche, die derzeit entwickelt werden.
-
In Teil III lernen wir Spark Streaming kennen. Ähnlich wie bei Structured Streaming lernen wir, wie man Streaming-Anwendungen erstellt, Spark Streaming-Aufträge betreibt und sie mit anderen APIs in Spark integriert. Wir schließen diesen Teil mit einer kurzen Anleitung zur Leistungsoptimierung ab.
-
In Teil IV werden fortgeschrittene Streaming-Techniken vorgestellt. Wir erörtern die Verwendung probabilistischer Datenstrukturen und Approximationstechniken zur Bewältigung von Herausforderungen bei der Stream-Verarbeitung und untersuchen den begrenzten Raum des maschinellen Online-Lernens mit Spark Streaming.
-
Zum Abschluss bringt uns Teil V zum Streaming über Apache Spark hinaus. Wir geben einen Überblick über andere verfügbare Streaming-Prozessoren und werfen einen Blick auf weitere Schritte, um mehr über Spark und Stream Processing zu lernen.
Wir empfehlen dir, Teil I zu lesen, um ein Verständnis für die Konzepte der Stream-Verarbeitung zu bekommen, damit du im Rest des Buches eine gemeinsame Sprache und gemeinsame Konzepte verwenden kannst.
Teil II, Strukturiertes Streaming, und Teil III, Spark Streaming, folgen einer einheitlichen Struktur. Du kannst dich für den einen oder den anderen Teil entscheiden, je nach deinen Interessen und Prioritäten:
-
Vielleicht startest du gerade ein neues Projekt und möchtest wissen, wie Structured Streaming funktioniert? Check! Fang in Teil II an.
-
Oder du stürzt dich in eine bestehende Codebasis, die Spark Streaming nutzt, und willst sie besser verstehen? Fang in Teil III an.
Teil IV geht zunächst auf einige mathematische Hintergründe ein, die zum Verständnis der besprochenen probabilistischen Strukturen erforderlich sind. Wir stellen uns das gerne so vor: "Der Weg ist steil, aber die Landschaft ist schön."
In Teil V wird die Stream-Verarbeitung mit Spark in Relation zu anderen verfügbaren Frameworks und Bibliotheken gesetzt. Das kann dir dabei helfen, eine oder mehrere Alternativen auszuprobieren, bevor du dich für eine bestimmte Technologie entscheidest.
Die Online-Ressourcen des Buches ergänzen deine Lernerfahrung mit Notizbüchern und Code, die du selbst verwenden und ausprobieren kannst. Du kannst sogar einen Teil des Codes nehmen, um dein eigenes Projekt zu starten. Die Online-Ressourcen findest du unter https://github.com/stream-processing-with-spark.
Wir hoffen, dass dir die Lektüre dieses Buches genauso viel Spaß macht wie uns die Zusammenstellung aller Informationen und die Bündelung der darin enthaltenen Erfahrungen.
Bibliographie
-
[Eckel2013] Eckel, Bruce und Dianne Marsh, Atomic Scala(Mindview LLC, 2013).
-
[Odersky2016] Odersky, Martin, Lex Spoon, and Bill Venners, Programming in Scala, 3.
In diesem Buch verwendete Konventionen
In diesem Buch werden die folgenden typografischen Konventionen verwendet:
- Kursiv
-
Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.
Constant width
-
Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.
Constant width bold
-
Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.
Constant width italic
-
Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.
Tipp
Dieses Element steht für einen Tipp oder eine Anregung.
Hinweis
Dieses Element steht für einen allgemeinen Hinweis.
Warnung
Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.
Code-Beispiele verwenden
Das Online-Repository für dieses Buch enthält zusätzliches Material, um die Lernerfahrung mit interaktiven Notizbüchern, funktionierenden Codebeispielen und einigen Projekten zu verbessern, mit denen du experimentieren und praktische Einblicke in die behandelten Themen und Techniken gewinnen kannst. Du findest es unter https://github.com/stream-processing-with-spark.
Die enthaltenen Notebooks laufen auf dem Spark Notebook, einer webbasierten, interaktiven Open-Source-Codierungsumgebung, die speziell für die Arbeit mit Apache Spark in Scala entwickelt wurde. Die Live-Widgets sind ideal für die Arbeit mit Streaming-Anwendungen, da wir die Daten visualisieren können, während sie das System durchlaufen.
Das Spark Notebook findest du unter https://github.com/spark-notebook/spark-notebook. Vorgefertigte Versionen kannst du direkt von der Distributionsseite http://spark-notebook.io herunterladen .
Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Wenn du eine CD-ROM mit Beispielen aus den O'Reilly-Büchern verkaufst oder verteilst, ist eine Genehmigung erforderlich. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Erlaubnis erforderlich.
Wir schätzen die Namensnennung, verlangen sie aber nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel:"Stream Processing with Apache Spark " von Gerard Maas und François Garillot (O'Reilly). Copyright 2019 François Garillot und Gerard Maas Images, 978-1-491-94424-0."
Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter permissions@oreilly.com kontaktieren .
O'Reilly Online Learning
Hinweis
Seit fast 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.
Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel, Konferenzen und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen findest du unter http://oreilly.com.
Wie du uns kontaktierst
Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Nord
- Sebastopol, CA 95472
- 800-998-9938 (in den Vereinigten Staaten oder Kanada)
- 707-829-0515 (international oder lokal)
- 707-829-0104 (Fax)
Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter http://bit.ly/stream-proc-apache-spark aufrufen .
Wenn du Kommentare oder technische Fragen zu diesem Buch stellen möchtest, sende eine E-Mail an bookquestions@oreilly.com.
Weitere Informationen zu unseren Büchern, Kursen, Konferenzen und Neuigkeiten findest du auf unserer Website unter http://www.oreilly.com.
Finde uns auf Facebook: http://facebook.com/oreilly
Folge uns auf Twitter: http://twitter.com/oreillymedia
Schau uns auf YouTube: http://www.youtube.com/oreillymedia
Danksagungen
Dieses Buch hat sich von einem Lernhandbuch für Spark Streaming zu einer umfassenden Ressource für die Streaming-Funktionen von Apache Spark entwickelt. Wir möchten uns bei unseren Rezensenten für ihr wertvolles Feedback bedanken, das dazu beigetragen hat, dieses Buch in seine heutige Form zu bringen. Unser besonderer Dank gilt Russell Spitzer von Datastax, Serhat Yilmaz von Facebook und Giselle Van Dongen von Klarrio.
Wir möchten uns bei Holden Karau für ihre Hilfe und ihren Rat in der Anfangsphase des Entwurfs bedanken und bei Bill Chambers für seine kontinuierliche Unterstützung, als wir den Bereich des strukturierten Streamings hinzugefügt haben.
Unser Redakteur bei O'Reilly, Jeff Bleiel, war ein Hort der Geduld, des Feedbacks und der Ratschläge, als wir von den ersten Ideen und Versionen des Entwurfs bis zur Fertigstellung des Inhalts, den du in Händen hältst, vorankamen. Wir möchten auch Shannon Cutt, unserer ersten Redakteurin bei O'Reilly, für ihre Hilfe beim Start dieses Projekts danken. Andere Mitarbeiter von O'Reilly haben uns in vielen Phasen unterstützt und uns geholfen, voranzukommen.
Wir danken Tathagata Das für die vielen Interaktionen, vor allem in den Anfangstagen von Spark Streaming, als wir die Grenzen des Frameworks ausloteten.
Von Gerard
Ich möchte mich bei meinen Kolleginnen und Kollegen bei Lightbend für ihre Unterstützung und ihr Verständnis bedanken, während ich zwischen dem Schreiben des Buches und meinen beruflichen Verpflichtungen jongliert habe. Ein ganz besonderes Dankeschön geht an Ray Roestenburg für seine aufmunternden Worte in schwierigen Momenten, an Dean Wampler, der mich bei meinen Bemühungen um dieses Buch immer unterstützt hat, und an Ruth Stento für ihre hervorragenden Ratschläge zum Schreibstil.
Eine besondere Erwähnung gilt Kurt Jonckheer, Patrick Goemaere und Lieven Gesquière, die mir die Möglichkeit gegeben haben, mein Wissen über Spark zu vertiefen; und Andy Petrella für die Erstellung des Spark Notebooks, aber vor allem für seine ansteckende Leidenschaft und seinen Enthusiasmus, die mich dazu gebracht haben, die Schnittstelle zwischen Programmierung und Daten weiter zu erforschen.
Vor allem möchte ich meiner Frau Ingrid, meinen Töchtern Layla und Juliana und meiner Mutter Carmen meine unendliche Dankbarkeit aussprechen. Ohne ihre Liebe, Fürsorge und ihr Verständnis hätte ich dieses Projekt nicht durchstehen können.
Von François
Ich bin meinen Kolleginnen und Kollegen bei Swisscom und Facebook sehr dankbar für ihre Unterstützung während des Schreibens dieses Buches, Chris Fregly, Paco Nathan und Ben Lorica für ihre Ratschläge und Unterstützung und meiner Frau AJung für absolut alles.
Get Stream Processing mit Apache Spark now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.