Vorwort Oder: Auf was lässt du dich hier ein?

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Hallo abenteuerlustiger Leser, willkommen in unserem Buch! Ich nehme an, dass du entweder daran interessiert bist, mehr über die Wunder der Bachverarbeitung zu erfahren, oder dass du ein paar Stunden damit verbringen willst, über den Ruhm der majestätischen Bachforelle zu lesen. Wie auch immer, ich grüße dich! Diejenigen unter euch, die zu den Letzteren gehören und keine fortgeschrittenen Kenntnisse in Informatik haben, sollten sich überlegen, wie gut sie mit Enttäuschungen umgehen können, bevor sie weitermachen; caveat piscator und so weiter.

Um von Anfang an den Ton für dieses Buch zu setzen, möchte ich dich über ein paar Dinge vorwarnen. Erstens ist dieses Buch ein bisschen seltsam, weil wir mehrere Autoren haben, aber wir tun nicht so, als würden wir alle mit derselben Stimme sprechen und schreiben, als wären wir seltsame identische Drillinge, die zufällig von verschiedenen Elternpaaren geboren wurden. Denn so interessant das auch klingen mag, das Endergebnis wäre weniger unterhaltsam zu lesen. Stattdessen haben wir uns dafür entschieden, dass jeder von uns mit seiner eigenen Stimme schreibt, und wir haben dem Buch gerade so viel Selbstbewusstsein zugestanden, dass es auf jeden von uns Bezug nehmen kann, wo es angebracht ist, aber nicht so viel Selbstbewusstsein, dass es uns übel nimmt, dass wir es nur zu einem Buch gemacht haben und nicht zu etwas noch Coolerem wie einem Roboter-Dinosaurier mit schottischem Akzent.1

Was die Stimmen angeht, so gibt es drei, die du kennenlernen wirst:

Tyler

Das bin dann ich. Wenn dir nicht ausdrücklich gesagt wurde, dass jemand anderes spricht, kannst du davon ausgehen, dass ich es bin, denn wir haben die anderen Autoren erst ziemlich spät ins Spiel gebracht, und ich habe im Grunde genommen "auf keinen Fall" gesagt, als ich darüber nachdachte, alles, was ich bereits geschrieben hatte, zu aktualisieren. Ich bin der technische Leiter der Gruppe "Data Processing Languages ands Systems" bei Google.2 Gruppe bei Google, die für Google Cloud Dataflow, Googles Apache Beam und Google-interne Datenverarbeitungssysteme wie Flume, MillWheel und MapReduce verantwortlich ist. Außerdem bin ich ein Gründungsmitglied des Apache Beam PMC.

Abbildung P-1. Die Abdeckung, die man hätte...
Slawa

Slava war ein langjähriges Mitglied des MillWheel-Teams bei Google und später ein Gründungsmitglied des Windmill-Teams, das den Nachfolger von MillWheel entwickelt hat, das bisher unbenannte System, das die Streaming Engine in Google Cloud Dataflow antreibt. Slava ist der weltweit führende Experte für Wasserzeichen und Zeitsemantik in Stream-Processing-Systemen. Es überrascht daher nicht, dass er der Autor von Kapitel 3, Wasserzeichen, ist.

Reuven

Reuven steht ganz unten auf dieser Liste, weil er mehr Erfahrung mit Stream Processing hat als Slava und ich zusammen und uns daher erdrücken würde, wenn er weiter oben stehen würde. Reuven hat fast die gesamte interessante Magie auf Systemebene in Googles Allzweck-Stream-Processing-Engines entwickelt oder geleitet. Dazu gehört auch, dass er unsagbar viel Liebe zum Detail in ein System mit hohem Durchsatz, geringer Latenz und Exact-Once-Semantik gesteckt hat, das dennoch ein feinkörniges Checkpointing nutzt. Es mag dich nicht überraschen, dass er der Autor von Kapitel 5, Exactly-Once and Side Effects, ist. Außerdem ist er Mitglied im Apache Beam PMC.

Navigieren in diesem Buch

Da du nun weißt, von wem du hören wirst, wäre der nächste logische Schritt, herauszufinden, worüber du hören wirst, was uns zu dem zweiten Punkt bringt, den ich erwähnen wollte. Das Buch besteht aus zwei Hauptteilen mit jeweils vier Kapiteln, denen jeweils ein Kapitel folgt, das relativ unabhängig für sich steht.

Der Spaß beginnt mit Teil I, dem Beam-Modell (Kapitel 1-4), das sich auf das High-Level-Batch- und Streaming-Datenverarbeitungsmodell konzentriert, das ursprünglich für Google Cloud Dataflow entwickelt und später als Apache Beam an die Apache Software Foundation gespendet wurde und heute ganz oder teilweise in den meisten anderen Systemen der Branche zu finden ist. Das Buch besteht aus vier Kapiteln:

  • Kapitel 1, Streaming 101, befasst sich mit den Grundlagen der Stream-Verarbeitung, legt einige Begriffe fest, erörtert die Möglichkeiten von Streaming-Systemen, unterscheidet zwischen zwei wichtigen Zeitbereichen (Verarbeitungszeit und Ereigniszeit) und betrachtet schließlich einige gängige Datenverarbeitungsmuster.

  • Kapitel 2, Das Was, Wo, Wann und Wie der Datenverarbeitung, behandelt im Detail die Kernkonzepte der robusten Stream-Verarbeitung von Daten außerhalb der Reihenfolge, die jeweils im Kontext eines konkreten laufenden Beispiels und mit animierten Diagrammen analysiert werden, um die Dimension der Zeit zu verdeutlichen.

  • Kapitel 3, Wasserzeichen (geschrieben von Slava), bietet einen umfassenden Überblick über zeitliche Fortschrittsmetriken, wie sie erstellt werden und wie sie sich in Pipelines verbreiten. Zum Schluss werden die Details von zwei realen Wasserzeichen-Implementierungen untersucht.

  • Kapitel 4, Fortgeschrittene Fenster, macht dort weiter, wo Kapitel 2 aufgehört hat, und behandelt einige fortgeschrittene Fenster- und Triggerkonzepte wie Verarbeitungszeitfenster, Sitzungen und Fortsetzungs-Trigger.

Zwischen den Teilen I und II steht Kapitel 5, Exactly-Once and Side Effects (geschrieben von Reuven), das ein ebenso zeitgemäßes wie wichtiges Zwischenspiel darstellt. Darin zählt er die Herausforderungen auf, die mit der Bereitstellung einer durchgängigen Exactly-Once- (oder Effective-Once-) Verarbeitungssemantik verbunden sind, und geht auf die Implementierungsdetails von drei verschiedenen Ansätzen für Exactly-Once-Verarbeitung ein: Apache Flink, Apache Spark und Google Cloud Dataflow.

Als Nächstes folgt Teil II, Streams und Tabellen (Kapitel 6-9), der tiefer in das Konzept eintaucht und die untergeordnete "Streams und Tabellen"-Denkweise der Stream-Verarbeitung untersucht, die kürzlich von einigen aufrechten Bürgern der Apache Kafka-Community populär gemacht wurde, aber natürlich schon vor Jahrzehnten von Leuten aus der Datenbank-Community erfunden wurde, denn war das nicht alles? Auch dieses Buch besteht aus vier Kapiteln:

  • Kapitel 6, Streams und Tabellen, führt in die Grundidee von Streams und Tabellen ein, analysiert den klassischen MapReduce-Ansatz durch die Brille von Streams und Tabellen und entwickelt dann eine Theorie von Streams und Tabellen, die allgemein genug ist, um die gesamte Bandbreite des Beam-Modells (und darüber hinaus) zu erfassen.

  • In Kapitel 7, The Practicalities of Persistent State, werden die Beweggründe für persistente Zustände in Streaming-Pipelines erörtert, zwei gängige Arten von impliziten Zuständen betrachtet und anschließend ein praktischer Anwendungsfall (Werbeattribution) analysiert, um die notwendigen Merkmale eines allgemeinen Zustandsverwaltungsmechanismus zu ermitteln.

  • Kapitel 8, Streaming SQL, untersucht die Bedeutung von Streaming im Kontext von relationaler Algebra und SQL, stellt die inhärenten Streaming- und Tabellenvorurteile des Beam-Modells und des klassischen SQL in seiner heutigen Form gegenüber und schlägt eine Reihe möglicher Wege vor, um eine robuste Streaming-Semantik in SQL einzubauen.

  • Kapitel 9, Streaming Joins, gibt einen Überblick über verschiedene Join-Typen, analysiert ihr Verhalten im Kontext von Streaming und geht schließlich ausführlich auf einen nützlichen, aber schlecht unterstützten Anwendungsfall von Streaming Joins ein: zeitliche Gültigkeitsfenster.

Den Abschluss des Buches bildet Kapitel 10, The Evolution of Large-Scale Data Processing (Die Entwicklung der Großdatenverarbeitung), in dem die Geschichte der MapReduce-Abstammung von Datenverarbeitungssystemen dargestellt wird und einige wichtige Beiträge untersucht werden, die Streaming-Systeme zu dem gemacht haben, was sie heute sind.

Mitbringsel

Wenn du mich bitten würdest, die Dinge zu beschreiben, die die Leserinnen und Leser am meisten aus diesem Buch mitnehmen sollen, würde ich Folgendes sagen:

  • Das Wichtigste, was du aus diesem Buch lernen kannst, ist die Theorie der Streams und Tabellen und wie sie miteinander zusammenhängen. Alles andere baut auf dieser Grundlage auf. Nein, zu diesem Thema kommen wir erst in Kapitel 6. Das macht nichts, denn das Warten lohnt sich, und du wirst dann besser vorbereitet sein, um seine Genialität zu schätzen.

  • Zeitvariable Relationen sind eine Offenbarung. Sie sind die Inkarnation der Stream-Verarbeitung: eine Verkörperung all dessen, was Streaming-Systeme leisten sollen, und eine leistungsstarke Verbindung zu den vertrauten Werkzeugen, die wir alle aus der Welt der Stapelverarbeitung kennen und lieben. Wir werden sie erst in Kapitel 8 kennenlernen, aber auch hier wird dir die Reise dorthin helfen, sie umso mehr zu schätzen.

  • Eine gut geschriebene verteilte Streaming-Engine ist eine magische Sache. Das gilt wohl für verteilte Systeme im Allgemeinen, aber je mehr du darüber erfährst, wie diese Systeme aufgebaut sind, um ihre Semantik bereitzustellen (insbesondere die Fallstudien in den Kapiteln 3 und 5), desto deutlicher wird, wie viel Arbeit sie dir abnehmen.

  • LaTeX/Tikz ist ein großartiges Werkzeug zur Erstellung von Diagrammen, ob animiert oder nicht. Ein schreckliches, verkrustetes Werkzeug mit scharfen Kanten und Wundstarrkrampf, aber dennoch ein unglaubliches Werkzeug. Ich hoffe, dass die Klarheit, die die animierten Diagramme in diesem Buch den komplexen Themen, die wir besprechen, verleihen, mehr Menschen dazu inspiriert, LaTeX/Tikz auszuprobieren (unter "Abbildungen" findest du einen Link zur vollständigen Quelle für die Animationen aus diesem Buch).

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.

Online-Ressourcen

Es gibt eine Handvoll Online-Ressourcen, die dir helfen, dieses Buch zu genießen.

Zahlen

Alle Figuren in diesem Buch sind in digitaler Form auf der Website des Buches verfügbar. Das ist besonders nützlich für die animierten Figuren, von denen in den Nicht-Safari-Formaten des Buches nur ein paar Einzelbilder (im Comic-Stil) erscheinen:

Bei den animierten Figuren handelt es sich um LaTeX/Tikz-Zeichnungen, die zunächst in PDF gerendert und dann mit ImageMagick in animierte GIFs umgewandelt wurden. Die Unerschrockenen unter euch können den vollständigen Quellcode und die Anweisungen zum Rendern der Animationen (aus diesem Buch, den Blogbeiträgen "Streaming 101" und "Streaming 102" sowie dem ursprünglichen Dataflow Model Paper) auf GitHub unter http://github.com/takidau/animations einsehen. Es handelt sich dabei um etwa 14.000 Zeilen LaTeX/Tikz-Code, der sehr organisch gewachsen ist, ohne die Absicht, jemals von anderen gelesen und genutzt zu werden. Mit anderen Worten: Es ist ein chaotisches, ineinander verschlungenes Geflecht aus archaischen Beschwörungen; kehre jetzt um oder gib alle Hoffnung auf, denn es gibt Drachen.

Code-Schnipsel

Obwohl dieses Buch hauptsächlich konzeptionell ist, gibt es eine Reihe von Code- und Pseudocode-Schnipseln, die zur Veranschaulichung von Punkten dienen. Der Code für die eher funktionalen Kernkonzepte des Beam-Modells aus den Kapiteln 2 und 4 sowie für die eher zwingenden Zustands- und Zeitgeberkonzepte in Kapitel 7 ist online unter http://github.com/takidau/streamingbook verfügbar . Da das Verständnis der Semantik das Hauptziel ist, wird der Code hauptsächlich in Form von Beam PTransform/DoFn Implementierungen und begleitenden Unit-Tests bereitgestellt. Es gibt auch eine einzige eigenständige Pipeline-Implementierung, um das Delta zwischen einem Unit-Test und einer echten Pipeline zu verdeutlichen. Der Code ist wie folgt aufgebaut:

src/main/java/net/streamingbook/BeamModel.java

Beam PTransform Implementierungen der Beispiele 2-1 bis 2-9 und Beispiel 4-3, jeweils mit einer zusätzlichen Methode, die die erwartete Ausgabe zurückgibt, wenn sie über die Beispieldatensätze aus diesen Kapiteln ausgeführt wird.

src/test/java/net/streamingbook/BeamModelTest.java

Unit-Tests, die das Beispiel PTransforms in BeamModel.java anhand von generierten Datensätzen, die denen im Buch entsprechen, überprüfen.

src/main/java/net/streamingbook/Example2_1.java

Eigenständige Version der Pipeline aus Beispiel 2-1, die lokal oder mit einem verteilten Beam-Runner ausgeführt werden kann.

src/main/java/net/streamingbook/inputs.csv

Beispielhafte Eingabedatei für Example2_1.java, die den Datensatz aus dem Buch enthält.

src/main/java/net/streamingbook/StateAndTimers.java

Beam-Code, der das Beispiel für die Konvertierungszuweisung aus Kapitel 7 mit Beams Zustands- und Zeitgeber-Primitiven umsetzt.

src/test/java/net/streamingbook/StateAndTimersTest.java

Unit Test zur Überprüfung der Konvertierungszuordnung DoFns aus StateAndTimers.java.

src/main/java/net/streamingbook/ValidityWindows.java

Implementierung von zeitlichen Gültigkeitsfenstern.

src/main/java/net/streamingbook/Utils.java

Gemeinsame Dienstmethoden.

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: "Streaming Systems von Tyler Akidau, Slava Chernyak und Reuven Lax (O'Reilly). Copyright 2018 O'Reilly Media, Inc. 978-1-491-98387-4."

Wenn du der Meinung bist, dass deine Verwendung von Codebeispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter kontaktieren

O'Reilly Safari

Hinweis

Safari (ehemals Safari Books Online) ist eine mitgliederbasierte Schulungs- und Nachschlageplattform für Unternehmen, Behörden, Lehrkräfte und Einzelpersonen.

Mitglieder haben Zugang zu Tausenden von Büchern, Schulungsvideos, Lernpfaden, interaktiven Tutorials und kuratierten Playlists von über 250 Verlagen, darunter O'Reilly Media, Harvard Business Review, Prentice Hall Professional, Addison-Wesley Professional, Microsoft Press, Sams, Que, Peachpit Press, Adobe, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett und Course Technology, um nur einige zu nennen.

Weitere Informationen erhältst du unter http://www.oreilly.com/safari.

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/streaming-systems aufrufen .

Wenn du Kommentare oder technische Fragen zu diesem Buch stellen möchtest, sende eine E-Mail an

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

Zu guter Letzt: Es gibt viele tolle Menschen, denen wir an dieser Stelle für ihre Hilfe bei der Erstellung dieses Bandes danken möchten.

Der Inhalt dieses Buches ist das Ergebnis der Arbeit unzähliger kluger Köpfe bei Google, in der Industrie und in der Wissenschaft insgesamt. Wir schulden ihnen allen aufrichtigen Dank und bedauern, dass wir sie hier nicht alle auflisten können, selbst wenn wir es versuchen würden, was wir nicht tun werden.

Von unseren Kolleginnen und Kollegen bei Google gebührt unser Dank allen Mitgliedern des DataPLS-Teams (und den verschiedenen Vorgängerteams: Flume, MillWheel, MapReduce usw.), die im Laufe der Jahre dazu beigetragen haben, so viele dieser Ideen zum Leben zu erwecken. Wir möchten uns insbesondere bedanken bei:

  • Paul Nordstrom und dem Rest des MillWheel-Teams aus dem Goldenen Zeitalter von MillWheel: Alex Amato, Alex Balikov, Kaya Bekiroğlu, Josh Haberman, Tim Hollingsworth, Ilya Maykov, Sam McVeety, Daniel Mills und Sam Whittle, die ein so umfassendes, robustes und skalierbares Set von Low-Level-Primitiven entwickelt haben, auf denen wir später die in diesem Buch besprochenen Higher-Level-Modelle aufbauen konnten. Ohne ihren Weitblick und ihre Fähigkeiten sähe die Welt der Stream-Verarbeitung in großem Maßstab ganz anders aus.

  • Craig Chambers, Frances Perry, Robert Bradshaw, Ashish Raniwala und dem Rest des Flume-Teams von damals für ihre Visionen und die Schaffung der ausdrucksstarken und leistungsstarken Datenverarbeitungsgrundlage, die wir später mit der Welt des Streaming vereinen konnten.

  • Sam McVeety für die Federführung bei der ursprünglichen MillWheel-Veröffentlichung, die unser erstaunliches kleines Projekt zum ersten Mal auf die Landkarte brachte.

  • Grzegorz Czajkowski dafür, dass er unsere Evangelisierungsbemühungen immer wieder unterstützt hat, auch wenn konkurrierende Termine und Prioritäten drohten.

Im Großen und Ganzen gebührt allen Mitgliedern der Apache Beam-, Calcite-, Kafka-, Flink-, Spark- und Storm-Community ein großer Dank. Jedes einzelne dieser Projekte hat in den letzten zehn Jahren wesentlich dazu beigetragen, den Stand der Technik bei der Stream-Verarbeitung für die ganze Welt voranzutreiben. Wir danken dir.

Um unsere Dankbarkeit etwas konkreter auszudrücken, möchten wir uns auch bedanken:

  • Martin Kleppmann, der sich an vorderster Front für die Streams-and-Tables-Denkweise eingesetzt hat und außerdem eine Menge Zeit investiert hat, um die Entwürfe aller Kapitel dieses Buches mit aufschlussreichen technischen und redaktionellen Beiträgen zu versehen. Außerdem ist er eine Inspiration und ein rundum toller Typ.

  • Julian Hyde, für seine aufschlussreiche Vision und ansteckende Leidenschaft für Streaming SQL.

  • Jay Kreps, dass du den guten Kampf gegen die Tyrannei der Lambda-Architektur kämpfst; es war dein ursprünglicher Beitrag "Die Lambda-Architektur in Frage stellen", der Tyler dazu gebracht hat, sich ebenfalls in den Kampf zu stürzen.

  • Stephan Ewen, Kostas Tzoumas, Fabian Hueske, Aljoscha Krettek, Robert Metzger, Kostas Kloudas, Jamie Grier, Max Michels und dem Rest der erweiterten Familie der Data Artisans, früher und heute, dafür, dass ihr immer wieder die Grenzen des Möglichen in der Stream-Verarbeitung verschiebt und dies auf eine durchweg offene und kollaborative Weise tut. Die Welt des Streaming ist dank euch allen ein viel besserer Ort.

  • Jesse Anderson, für seine fleißigen Bewertungen und für die vielen Umarmungen. Wenn du Jesse siehst, gib ihm eine Umarmung von mir.

  • Danny Yuan, Sid Anand, Wes Reisz und der großartigen QCon-Entwicklerkonferenz, dass sie uns auf der QCon San Francisco 2014 zum ersten Mal die Möglichkeit gegeben haben, in der Branche öffentlich über unsere Arbeit zu sprechen.

  • Ben Lorica von O'Reilly und der kultigen Strata Data Conference für die wiederholte Unterstützung unserer Bemühungen, Stream Processing zu propagieren, sei es online, in Printmedien oder persönlich.

  • Die gesamte Apache Beam-Gemeinschaft und insbesondere unsere Mitstreiter, die die Vision von Beam vorantreiben: Ahmet Altay, Amit Sela, Aviem Zur, Ben Chambers, Griselda Cuevas, Chamikara Jayalath, Davor Bonaci, Dan Halperin, Etienne Chauchot, Frances Perry, Ismaël Mejía, Jason Kuster, Jean-Baptiste Onofré, Jesse Anderson, Eugene Kirpichov, Josh Wills, Kenneth Knowles, Luke Cwik, Jingsong Lee, Manu Zhang, Melissa Pashniak, Mingmin Xu, Max Michels, Pablo Estrada, Pei He, Robert Bradshaw, Stephan Ewen, Stas Levin, Thomas Groh, Thomas Weise, und James Xu.

Keine Danksagung wäre vollständig ohne einen Hinweis auf die ansonsten gesichtslose Schar unermüdlicher Rezensenten, die mit ihren aufschlussreichen Kommentaren dazu beigetragen haben, aus Müll etwas Großartiges zu machen: Jesse Anderson, Cosmin Arad, Grzegorz Czajkowski, Marián Dvorský, Stephan Ewen, Rafael J. Fernández-Moctezuma, Martin Kleppmann, Kenneth Knowles, Sam McVeety, Mosha Pasumansky, Frances Perry, Jelena Pjesivac-Grbovic, Jeff Shute, und William Vambenepe. Du bist der Mr. Fusion für unsere DeLorean-Zeitmaschine. Das klang in meinem Kopf viel schöner - seht ihr, das ist es, wovon ich rede.

Und natürlich ein großes Dankeschön an unser Autoren- und Produktionssupportteam:

  • Marie Beaugureau, unserer ursprünglichen Redakteurin, für all ihre Hilfe und Unterstützung bei der Umsetzung dieses Projekts und ihre unendliche Geduld mit meinem hartnäckigen Wunsch, redaktionelle Normen zu unterlaufen. Wir vermissen dich!

  • Jeff Bleiel, unserem Redakteur 2.0, dafür, dass er die Zügel in die Hand genommen und uns geholfen hat, dieses Monster von einem Projekt an Land zu ziehen, und für seine unendliche Geduld mit unserer Unfähigkeit, selbst die bescheidensten Fristen einzuhalten. Wir haben es geschafft!

  • Bob Russell, unserem Lektor, dafür, dass er unser Buch gründlicher gelesen hat, als man es je tun sollte. Ich ziehe meinen Hut vor deiner meisterhaften Beherrschung von Grammatik, Zeichensetzung, Wortschatz und Adobe Acrobat-Anmerkungen.

  • Nick Adams, unserem unerschrockenen Produktionsredakteur, dafür, dass er mir geholfen hat, ein Durcheinander von völlig skizzenhaftem HTMLBook-Code in eine druckfähige Schönheit zu verwandeln, und dafür, dass er nicht wütend auf mich wurde, als ich ihn bat, Bobs viele, viele individuelle Vorschläge zu ignorieren, den Begriff "Daten" vom Plural in den Singular zu ändern. Du hast es geschafft, das Buch noch besser aussehen zu lassen, als ich es mir erhofft hatte, vielen Dank.

  • Ellen Troutman-Zaig, unserer Indexiererin, die es geschafft hat, aus einem Wirrwarr von Verweisen einen nützlichen und umfassenden Index zu erstellen. Ich bewundere deine Liebe zum Detail.

  • Rebecca Panzer, unserer Illustratorin, für die Verschönerung unserer statischen Diagramme und dafür, dass sie Nick versichert hat, dass ich nicht noch mehr Wochenenden damit verbringen muss, herauszufinden, wie ich meine animierten LaTeX-Diagramme so umgestalten kann, dass sie größere Schriftarten haben. Puh x2!

  • Kim Cofer, unserem Korrektor, dafür, dass er uns auf unsere Schlampigkeit und Inkonsequenz hingewiesen hat, damit andere es nicht tun müssen.

Tyler möchte sich bedanken:

  • Meinen Koautoren Reuven Lax und Slava Chernyak dafür, dass sie ihre Ideen und Kapitel auf eine Weise zum Leben erweckt haben, wie ich es nie hätte tun können.

  • George Bradford Emerson II, für die Inspiration durch Sean Connery. Das ist mein Lieblingswitz im Buch und wir sind noch nicht einmal beim ersten Kapitel angelangt. Von hier an geht es nur noch bergab, Leute.

  • Rob Schlender, für die tolle Flasche Scotch, die er mir kaufen wird, kurz bevor die Roboter die Welt übernehmen. Auf einen stilvollen Abgang!

  • Meinem Onkel Randy Bowen, der dafür gesorgt hat, dass ich meine Liebe zu Computern entdeckt habe und vor allem die selbstgebaute POV-Ray 2.x Diskette, die mir eine ganz neue Welt eröffnet hat.

  • Meinen Eltern, David und Marty Dauwalder, ohne deren Hingabe und unglaubliche Beharrlichkeit all das nicht möglich gewesen wäre. Ihr seid die besten Eltern aller Zeiten, wirklich!

  • Dr. David L. Vlasuk, ohne den ich heute einfach nicht hier wäre. Danke für alles, Dr. V.

  • Meine wunderbare Familie, Shaina, Romi und Ione Akidau, für ihre unerschütterliche Unterstützung bei der Bewältigung dieser gewaltigen Aufgabe, trotz der vielen Nächte und Wochenenden, die wir deswegen getrennt verbrachten. Ich liebe euch immer.

  • Mein treuer Schreibpartner Kiyoshi: Obwohl du die ganze Zeit, in der wir gemeinsam an dem Buch gearbeitet haben, nur geschlafen und Briefträger angebellt hast, hast du das tadellos und scheinbar mühelos geschafft. Du bist eine Zierde für deine Spezies.

Slava möchte sich bedanken:

  • Josh Haberman, Sam Whittle und Daniel Mills, die die Wasserzeichen in MillWheel und später Streaming Dataflow sowie viele andere Teile dieser Systeme mitentwickelt haben. So komplexe Systeme werden nie im luftleeren Raum entwickelt, und ohne all die Gedanken und die harte Arbeit, die jeder von euch investiert hat, wären wir heute nicht hier.

  • Stephan Ewen von Data Artisans, der mir geholfen hat, meine Gedanken und mein Verständnis für die Wasserzeichen-Implementierung in Apache Flink zu verbessern.

Reuven möchte sich bedanken:

  • Paul Nordstrom für seine Vision, Sam Whittle, Sam McVeety, Slava Chernyak, Josh Haberman, Daniel Mills, Kaya Bekiroğlu, Alex Balikov, Tim Hollingsworth, Alex Amato und Ilya Maykov für all ihre Bemühungen bei der Entwicklung des ursprünglichen MillWheel-Systems und dem Verfassen des nachfolgenden Papiers.

  • Stephan Ewen von Data Artisans für seine Hilfe bei der Überprüfung des Kapitels über Exact-once-Semantik und wertvolles Feedback zum Innenleben von Apache Flink.

Zu guter Letzt möchten wir uns bei dir, liebe Leserin und lieber Leser, dafür bedanken, dass du bereit bist, echtes Geld für dieses Buch auszugeben, um uns über die coolen Sachen reden zu hören, die wir bauen und mit denen wir spielen können. Es hat Spaß gemacht, das alles aufzuschreiben, und wir haben unser Bestes getan, um sicherzustellen, dass du auf deine Kosten kommst. Wenn es dir aus irgendeinem Grund nicht gefällt ... nun, hoffentlich hast du die gedruckte Ausgabe gekauft, so dass du sie wenigstens angewidert durch den Raum werfen kannst, bevor du sie im Gebrauchtwarenladen verkaufst. Nimm dich vor der Katze in Acht.3

1 Das ist übrigens das, was wir uns für unser Tierbuch-Cover gewünscht haben, aber O'Reilly war der Meinung, dass es sich nicht gut in Strichzeichnungen umsetzen ließe. Ich bin da ganz anderer Meinung, aber eine Bachforelle ist ein fairer Kompromiss.

2 Oder DataPLS, ausgesprochen Datapals - verstehst du das?

3 Oder auch nicht. Ich mag eigentlich keine Katzen.

Get Streaming-Systeme 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.