Veröffentlicht am

HDFS – Hadoop Distributed Filesystem – Konzepte einfach erläutert

Konzepte des HDFS

HDFS – Hadoop Distributed Filesystem – Konzepte einfach erläutert

Zu jedem Betriebssystem gehören ein Filesystem, eine Assemblersprache und letztendlich ein Ökosystem von Tools, Frameworks und Programmen.  Für Big-Data-Anwendungen ist das Hadoop-Ökosystem eine gute Wahl. Die Konzepte sind wiedererkennbar: HDFS als Filesystem, YARN als Betriebssystem, MapReduce als Assembler. Dieser Blog Post erläutert die Grundlagen des HDFS und YARN und des Programmierkonzepts MapReduce für Big-Data-Analysen.

Vereinte Kräfte im Big Data Cluster

Big Data Systeme skalieren horizontal. Dazu werden mehrere Rechner zu einem Cluster vernetzt. Zusätzliche Nodes im Cluster erlauben höhere Systemlast.

Big Data Cluster - schematische Darstellung
Schematische Darstellung eines Big-Data-Clusters. Die einzelnen Server werden in Racks gestapelt. Die Server eines Racks sind dank eines Netzwerkswitches untereinander vernetzt. Die einzelnen Switche sind wiederum miteinander verbunden. Dadurch wird jeder Server für jeden anderen Server (=Nodes) im Cluster erreichbar.

Die Grundausstattung: Betriebssystem – Filesystem – Java JRE

Linux ist das Betriebssystem der Wahl für die Server im Hadoop-Cluster. Für Linux wird wird Ext4 gern als Filesystem verwendet.

Das Hadoop Ökosystem benötigt auf jedem Node auch die Java Runtime Umgebung (JRE).

Jetzt kann das Cluster seine geballte Rechenkraft entfalten.

Grundausstattung Big Data Cluster
Auf jedem Server (=Node) im Cluster ist eine identische Grundausstattung zu installieren. Diese besteht aus einem Linux Betriebssystem, einem Linux Filesystem und einer JRE (Java Runtime Environment). Der Einfachheit halber werden die einzelnen Nodes isoliert dargestellt.

Hadoop – das Open Source Big Data Filesystem

Das HDFS Hadoop Distributed Filesystem, ist eigentlich ein Pseudo-Filesystem. Es  speichert riesige Dateien. Dateien mit Größen bis zum Petabyte-Bereich, mehr als eine Festplatte fassen kann.

Die Idee dazu entstand bei Google. Suchmaschinen-Indexe werden rasch sehr groß und wer das ganze Web durchsuchbar machen will, hat unweigerlich mit gigantischen Dateien zu kämpfen. Das ist der Background der Entwicklung. Google veröffentlichte in 2002 ein Paper über die Konzepte des Google Filesystem GFS. Doug Cutting und Joe Cafarella arbeiteten damals bei Yahoo!, griffen die Idee auf und entwickelten Hadoop.

Yahoo! stiftete Hadoop der Apache Software Foundation und gab damit die Initialzündung für Big-Data-Technologien außerhalb der Internet-Riesen.

Einsatzmöglichkeiten von HDFS

Solch große Files gibt es auch in anderem Kontext. Hier einige Beispiele:

  • Log-Files
  • Data Warehouses
  • Suchmaschinen-Indexe
  • Social Media Plattformen
  • Große E-Commerce-Systeme
  • IoT Streams – Sensordaten aus dem Internet of Things

Das HDFS als verteiltes System hat die Eigenschaften eines File-Systems. Auch die Befehle zur Bedienung ab Command-Line gleichen den Linux Befehlen.

Beispiel: Statt

mkdir meinVerzeichnis

schreibt man

hdfs dsf -mkdir meinVerzeichnis

Auch die Verzeichnisstruktur und die Pfadstruktur wurde bei Linux abgeschaut. So fühlt man sich als Anwender fast schon wie zu Hause.

Blöcke und Blockgröße

Wenn Linux Ext4 die Files in Blöcken von 4KB abspeichert, dann speichert HDFS Blöcke von 128MB oder auch mehr.

Die Philosophie ist dieselbe: Ein File wird aufgeteilt in Blöcke und die Daten werden immer in ganzen Blöcken geschrieben und gelesen.

Die effektive Blockgröße ist Konfigurationssache. Sie wird mit Bedacht gewählt: eine ungünstige Blockgröße kann die Performance des Gesamtsystems bremsen.

Ist die typische Blockgröße 128MB, dann müssen die Files auf HDFS auch entsprechend groß sein. Wer viele kleine Files verwalten muss, ist mit HDFS nicht gut bedient.

HDFS – Eine Art Filesystem geschrieben in Java

Eigentlich ist HDFS  eine verteilte Anwendung, mit den wichtigsten Eigenschaften eines typischen Filesystems.

Dazu verteilt HDFS die einzelnen Datenblöcke auf die Nodes im Cluster. Man spricht in dem Zusammenhang von einem DataNode.

HDFS - schematische Darstellung
Schematische Darstellung des HDFS. Das File (unten links) wird in Blöcke aufgeteilt. Diese werden auf den DataNodes gespeichert und repliziert.

Java Daemons: DataNodes und NameNode

Ein DataNode ist eigentlich ein Java-Daemon, der auf jedem Node im Hadoop-Cluster läuft. Der NameNode übernimmt die Koordination der DataNodes. Als Master-Node kennt er die Struktur des Verzeichnisbaums und ‘weiß’ welcher Block auf welchem DataNode liegt.

Der DataNode-Daemon speichert die HDFS-Blöcke als einzelne Files auf dem unterliegenden Linux-Filesystem. Der Screenshot zeigt die Files der HDFS-Blöcke auf Linux-Ebene.

HDFS Datenblöcke
Auf jedem DataNode legt HDFS ein Linux-Verzeichnissystem an. Dort werden die Blöcke und deren Metadaten als einzelne Linux-Files gespeichert.

Ausfallsicherheit dank Replikation

Werden Hunderte von Rechnern in einem Cluster organisiert, dann ist die Wahrscheinlichkeit sehr hoch, dass gerade einer davon nicht funktioniert.

Als Gesamtsystem darf HDFS nie ausfallen. Aus diesem Grund werden die Blöcke repliziert. Auf wieviele DataNodes ein Block repliziert werden soll, kann ebenfalls konfiguriert werden. Fällt jetzt einer der Nodes aus, dann sind ja noch weitere Nodes im Cluster, von denen dieselben Daten gelesen werden können.

Der Endanwender merkt davon nichts und damit erinnert die Philosophie stark an altbewährte RAID-Systeme.

YARN – Eine Art Betriebssystem geschrieben in Java

Jedes Filesystem entfaltet seine Wirkung erst dank der Programme, die es verwenden. Filesystem und Betriebssystem sind eng gekoppelt:

  • Windows > FAT32
  • Mac > macOS
  • Linux > EXT4

Der ClusterManager YARN bildet die Parallele zum Betriebssystem für HDFS.

YARN sorgt dafür, dass die Anwendungsprogramme zu den Daten gelangen und koordiniert die zeitgleiche (also parallele) Ausführung der Programme auf den einzelnen Servern so, dass ein sinnvolles Ergebnis erzielt wird.

Java Daemons: ResourceManager und NodeManager

Als Master koordiniert der ResourceManager von YARN die Berechnungen. Seine Hauptansprechpartner sind die NodeManager. Diese sind ebenfalls Java-Daemons die auf denselben Servern laufen, wie die DataNodes.

Der ResourceManager von YARN ‘spricht’ auch mit dem NameNode um zu erfahren, auf welchen Servern die Blöcke der Files liegen, die das Anwendungsprogramm analysieren will.

Schematische Darstellung von YARN
Auf jedem Data-Node läuft mit dem NodeManager ein weiterer Java-Daemon. Der ResourceManager von YARN kontrolliert das Zusammenspiel der NodeManager.

MapReduce – Ein Assembler auf Java-Basis

Zu jedem Betriebssystem gehört eine maschinennahe Sprache. Bei Windows, Mac, Linux heißt sie ‘Assembler’.

MapReduce ist eine Art ‘Assembler’ für HDFS/YARN. Im Wesentlichen ist MapReduce ein Konzept der funktionalen Programmierung. Sprachen wie Java, Scala, Python ermöglichen MapReduce. Wer eine Big-Data-Analyse schreiben möchte, die auf einem Cluster verteilt wird, muss sich auf MapReduce einstellen.

Konzeptionelle Darstellung von MapReduce
Map Reduce - konzeptionell dargestellt. Das Framework stellt den gesamten Workflow sicher. Entwickler entwerfen und codieren eine Abfolge von Map und Reduce-Schritten. Die Darstellung zeigt, wie Wörter in einem Text gezählt werden.

Geheimwaffe DataLocality

DataLocality ist zentral, denn die Berechnungen sollen möglichst dort stattfinden, wo die Daten liegen. Das erspart Übertragung der FileBlöcke im Netzwerk.

Die Programme werden zu den Daten geschickt werden und nicht umgekehrt. Dazu kopiert YARN die JAR-Files mit der Anwendungslogik auf HDFS,  die NodeManager holen sie von dort, starten einen Java-Container und führen die beauftragte Berechnung auf ‘ihrem’ Datenblock aus.

YARN koordiniert das Zusammenspiel werden und Replikate federn Ressourcen-Engpässe auf einzelnen Nodes ab. YARN bauftragt diejenigen DataNodes, die gerade am wenigsten zu tun haben. Dazu YARN kennt die Auslastung der einzelnen Nodes.

YARN koordiniert die MapReduce-Schritte.  Immerhin müssen die Berechnungen in der vorgesehenen Reihenfolge erfolgen. So kann der Shuffle/Sort Schritt erst starten, wenn alle vorherigen Map-Schritte fertig sind.

Das MapReduce-Programm im Bild zählt Wörter im Text. Dazu zerlegt der Split-Step den Text in Blöcke. Jeder Block liegt auf einem anderen DataNode und wird mit dem Map-Schritt im Hinblick auf die Programmlogik gefiltert. Hier wird pro Wort ein Schlüssel-Wert-Paar ausgegeben. Der Wert ist 1, was sich aus dem Ziel der Analyse ergibt.

Sind alle Map-Schritte beendet, dann führt YARN den Shuffle/Sort-Schritt aus. Sortiert wird nach Schlüssel. Danach werden neue Blöcke gebildet und zwar ein Block pro Schlüssel-Wert. Jeder Block wird zu einem anderen NodeManager geschickt, der die Reduce-Logik ausführt. Hier werden die 1en addiert und damit die Wörter gezählt.

YARN stellt anschließend das Endergebnis zusammen und informiert das aufrufende Programm.

Insgesamt ist die Ausführung von MapReduce in HDFS sehr komplex. Doch die Frameworks unterstützen. Letztendlich konzentriert sich der Programmierer auf die Logik als Abfolge von Map- und Reduce-Schritten und überlässt die Ausführung YARN als Framework.

Die Frameworks unterstützen. Letztendlich wird man als Programmierer die Logik in Map- und Reduce-Schritte aufteilen und die Ausführung YARN als Framework überlassen.

SQL-Statements können sogar automatisch in MapReduce-Jobs übertragen werden. Und so liegt die Analyse von Big-Data-Files in Reichweite von allen, die SQL gelernt haben und es nicht scheuen, die Spezialitäten des verteilten Rechnens zu erkunden, um die Tools auch zielführend einsetzen zu können.

Jüngste Entwicklungen

HDFS, YARN und MapReduce ermöglichten die Entwicklung einer Vielzahl weiterer Tools und Frameworks zur Verarbeitung und Analyse sehr großer Datenbestände und Datenströme.

Datenanalyse ist nicht mehr an HDFS/YARN gebunden. Dennoch: MapReduce als Grundidee ist überall vorzufinden:

  • die Programme zu den Daten bringen,
  • die Arbeit der Analyse oder Berechnung parallel auf mehrere Rechner verteilen
  • und die Ergebnisse aggregieren.

Jedes moderne Framework variiert die Art und Weise der Ausgestaltung dieses Grundkonzepts. Manche basieren auf HDFS, manche setzen YARN als ClusterManager ein – das MapReduce Programmierkonzept ist überall wiederzuerkennen.

Was noch vor zehn Jahren undenkbar schien, gelangt in Reichweite eines jeden Data Analysten. Und die gute Nachricht: auch APIs mit Python oder R sind immer häufiger anzutreffen.

Das Hadoop-Ökosystem

Wer sich in die Big-Data-Welt einsteigt, hat heute vielfältige Wahlmöglichkeiten. Allein bei Apache werden mehr als hundert Big-Data-Projekte gehostet.

Hadoop Ökosystem in Kategorien
Schematische Darstellung des Hadoop Ökosystems in Kategorien.

Kategorien helfen, einen Überblick über diese Projekte zu gewinnen. Ein und dieselben Tools können auch unterschiedlichen Ökosystemen zugeordnet werden.  Apache Spark beispielsweise gehört in die Kategorie Analytics. Spark selbst umfasst ein eigenes Ökosystem an Möglichkeiten.  Die Tools im Hadoop-Ökosystem basieren alle auf HDFS als unterliegendem Filesystem. Es gibt auch Big-Data-Tools, die nicht HDFS verwenden, wie beispielsweise Apache Kafka oder Apache Cassandra.

HDFS das Filesystem und YARN, den Cluster-Manager hen wir bereits vorgestellt.

Analytics in HDFS

Anwendungsprogramm in einem Big-Data-Filesystem dienen üblicherweise zur Datenanalyse. Apache HIVE war das erste ein Hadoop-Data Warehouse, das schon seit mehreren Jahren existiert und immer weiter entwickelt wird. Mittlerweile gibt es jüngere, in der Handhabung leichtgewichtigere Data Warehouses, die selbst auf HIVE basieren, Impala ist ein Beispiel. Analysen in Data Warehouses haben üblicherweise relativ lange Antwortzeiten. Das ist auch bei HDFS nicht anders.

Die Programme werden in Hadoop zu den Daten geschickt. Mitterweile gibt es eine Vielzahl von Ansätzen, wie das erfolgen kann. Apache Spark ist ein weit verbreitetes Framework. Apache Drill eine weitere Möglichkeit von vielen anderen.

Datenbanken in HDFS

Will man kurze Antwortzeiten, beispielsweise im Online Transaction Processing zu implementieren, oder will man auch einzelne Datenfelder verändern können, dann wird man spezielle, auf HDFS basierte Datenbanksysteme einsetzen wollen. HBase ist ein solches System. Es ist nicht relational, was den Umgang damit etwas gewöhnungsbedürftig macht. Aber es ist ausgelegt auf Datenmengen, die mit relationalen Datenbanken nicht mehr gehandhabt werden können.

FileFormate, Datenstrukturen, Algorithmen

Um Tools wie HBase zu bauen, das Antwortzeiten im ms-Bereich liefert und dennoch auf dem relative langsamen HDFS zu implementieren, das zusätzlich noch die Eigenschaft hat, dass die Files nicht verändert werden können, waren einige Kunstgriffe nötig. Diese sind im Diagramm unter “File Formate, Datenstrukturen und Algorithmen” zusammengefasst. Parquet und Avro gehören zu den File Formaten. Bloom Filter sind ein Beispiel von Datenstrukturen und Algorithmen, die in unter anderem in HBase verwendet werden.

Koordination der Komponenten des Hadoop-Ökosystems

Die schematische Darstellung zeigt weitere Komponenten: Die Nodes in einem Cluster koordinieren sich mit Hilfe von Apache Zookeeper. Dieser kamperprobte Koordinationsservice für verteilte Systeme wird oft eingesetzt, auch von Tools, die nicht zum Hadoop Ökosystem gehören.

Ingestion ins HDFS

Unter Ingestion und Streaming fallen Tools, wie Kafka, Spark, Flink, Storm, Flume und andere. Diese sind für die schnelle Verarbeitung von Datenströmen gedacht. Ihren Platz im Hadoop Ökosystem verdienen Sie dadurch, dass damit die realtime eintreffenden Daten in HDFS  gespeichert und weiter analysiert werden können. Und letztendlich bieten gerade Tools wie Spark, Flink die Möglichkeit, die Hdfs-Daten mit Machine Learning auszuwerten. Besondere Herausforderungen besprechen wir im Artikel Realtime Big Data Stream Processing.

Workflows/Scheduler

Mit geeigneten Architekturen baut man ein Big-Data-System, das Daten realtime verarbeitet. Um dies zu realisieren, sind viele verschiedene Komponenten des Hadoop Ökosystems zu orchestrieren. Dies wird durch Tools aus der Kategorie “Workflow und Scheduler” unterstützt. NiFi ist ein Beispiel aus dieser Kategorie.

Administration

Und letztendlich möchten wir Tools haben, um den Cluster zu installieren und zu Überwachen. Ambari ist ein Beispiel aus dieser Kategorie.

Die genannten Tools sind alle Top-Level-Projekte bei der Apache Foundation. Sie können dort heruntergeladen und installiert werden.

Die Toolunterstützung für Hadoop wird rasant besser und ist natürlich auch ein Markt für viele neue Player. Diese tragen zur Weiterentwicklung der Open Source Projekte bei und bieten auch kostenpflichtige Varianten ihrer Tools mit weiteren Features an.

Big Data Analysen ohne Big Data Kenntnis?

Für eine erste Berührung mit der Analyse sehr großer Daten über einem Big-Data-Cluster ist kein tiefes Verständnis zum verteilten Rechnen notwendig.

Wer jedoch produktiv damit arbeiten möchte, benötigt gute Kenntnisse über die unterliegenden Mechanismen.

Die Parallele zu den relationalen Datenbanken drängt sich auf: Einige SQL-Statements sind schnell geschrieben, vielleicht sogar in produktive Anwendungsprogramme eingebettet. Werden die Abfragen jedoch langsam, oder gar fehlerhaft, dann benötigt man gute Kenntnisse des relationalen Designs, der Sprache SQL und des verwendeten Datenbank Management Systems, um robusten Code zu schreiben. Analoges trifft auf Big-Data-Analysen zu.

Fazit

Verteilte Systeme basieren auf den Konzepten und Ideen der nicht-verteilten Systeme und machen sich diese zu Nutze. Gerade in der Open-Source-Welt sind viele verteilte Systeme mit Java oder Scala entwickelt worden. Viele Tools bieten APIs für andere Programmiersprachen und werden von Data Analysten entdeckt. Die Komplexität der unterliegenden verteilten Systeme wird vom Anwender abgeschirmt – dennoch, wer Big-Data-Tools effizient einsetzen will, braucht ein Grundverständnis der Konzepte des verteilten Rechnens

  • Data Engineering ist ja nicht Selbstzweck. Vielmehr dient es dazu, aus Daten Nutzen zu ziehen. Künstliche Intelligenz wurde möglich, dank sorgfältigem Data Engineering.

  • LLM-Tipps & Fachglossar

    Abonniere meinen Newsletter, erhalte regelmäßig Tipps und Tricks über den produktiven Einsatz von LLMs und ich schenke dir mein umfangreiches Fachglossar Von AI-Engineering bis Zero-Shot

Elefanten und Tierwärter im Beitragsbild?
Als Doug Cutting zusammen mit Joe Cafarella das verteilte Filesystem schrieb, suchte nach einem Namen für seine Software. Etwas Großes musste es sein. Sein damals dreijähriger Sohn spielte mit einem gelben Plüsch-Elefanten, den er liebevoll ‘Hadoop’ nannte, und so kam das Filesystem zu seinem Namen.
Viele Produkte des Hadoop Ökosystems wurden von Tiernamen abgeleitet. Selbst einen Wärter gibt es:  Apache ZooKeeper ist ein Koordinationsdienst für verteilte Systeme.

  • Chatbot als Lernassistent
  • Prompt Engineering Personas und Wiederholungen
  • AI-Engineering-Fachglossar
  • EBook Tutorial: Cluster aus virtuellen Maschinen
  • Ebook: Apache ZooKeeper
  • Ebook: Realtime Streaming Pipelines
  • LSM-Trees: Log Structured Merge Trees
  • Aufbau einer Enterprise Search
  • Zeit Stream Analytics
  • B-Tree-Index in Datenbanken
  • Ordering Guarantee in Apache Kafka
  • CAP Theorem
  • MapReduce Funktionale Programmierung
  • Konzepte des HDFS
  • Optimistisches Concurrency Control
Veröffentlicht am Schreib einen Kommentar

Big Data – Definition für die 2020er

Big Data Definition

“Big Data – das sind doch die 3V?”, oder waren es 4V? Es ist nicht mehr einfach, nachzuvollziehen, woher diese ‘Definition’ ursprünglich stammt. Im September 2012 wurde die Frage gar wissenschaftlich untersucht.

Diesen Anspruch erhebe ich hier nicht. Vielmehr werfe ich einen Blick zurück auf den mehr als 20-jährigen Versuch einer Definition des Begriffs ‘Big Data’ und aktualisiere die Definition.

‘Big Data’: (Versuche von) Definitionen

Der Begriff ‘Big Data’ hat sich in den allgemeinen Sprachgebrauch geschlichen, ohne scharf definiert zu sein.

Was sind Massendaten?

Das deutsche Wort ‘Massendaten’ hilft auch nicht weiter. Liegen Daten auf IT-Systemen denn nicht immer in ‘Massen’ vor? Ab wann darf man von einer ‘Masse’ sprechen? Ab wann ist ‘big’ wirklich ‘big’?

Was bedeutet ‘Big Data = 3V’?

 

Big Data = 3V ist keine weiterführende Definition.

Die 3V mit denen ‘Big Data’ oft definiert wird, erwähnte oder prägte Doug Laney schon im Februar 2001 in seinem Paper ‘Application Delivery Strategies’, das er bei Meta Group veröffentlichte.

Die 3V stehen für Volumen, Velocity, Variety.

Gemeint sind: große Datenvolumen, große Query-Volumen, große Mengen an Datenquellen. Doch was bedeutet ‘groß’?

Velocity steht für ‘Geschwindigkeit’ – Daten, die schnell eintreffen, die schnell verarbeitet und analysiert werden sollen, Daten, die schnell wachsen. Doch was bedeutet ‘schnell’.

Variety steht für ‘Vielfalt’ – Daten die in vielfältigen Formaten vorliegen, die aus vielfältigen Quellen stammen. Doch trifft das nicht auf alle ‘Daten’ zu?

Die Definition ‘Big Data = 3V’ ist also nicht weiterführend.

Das hilft auch nichts, wenn weitere V-Wörter zu finden. Für ‘Veracity’, ‘Value’, ‘Variability’ – je nach Autor sind in den vergangenen Jahren noch beliebige ‘V’ dazu gekommen und finden auch Eingang in die Lehrbücher.

Diese Begriffe sind eher vage formulierte Anforderungen an ein Datenverarbeitungssystem, als Definitionen mit technischem Hintergrund.

Big Data als Grenze des Machbaren

Es gibt noch weitere Definitionen: Gualtiery schreibt bei Forrester in 2012 in seinem Blog-Post mit dem Titel ‘Forget about the 3 Vs

Big Data sei die Grenze der Fähigkeit einer Firma, alle Daten zu speichern, zu verarbeiten und im Zugriff zu haben, die sie benötigt, um zu handeln, zu entscheiden, Risiken zu minimieren und Kunden zu bedienen.

Big Data wird also als Grenze bezeichnet, etwas tun zu können. Doch was passiert jenseits dieser Grenze? Was müssen die Unternehmen tun, wenn sie an diese Grenze stoßen. Das sagt die Definition nicht und der Blog Post auch nicht.

Es ist eher eine philosophische Betrachtung des Mengenbegriffs:

  • Frage: ab welcher Menge sprechen wir von ‘big’ Data.
  • Antwort von Gualitieri: Sobald ein Unternehmen mit der Menge seiner Daten nicht mehr zurecht kommt.

Der Duden definiert auch

Selbst der Duden definiert Big Data = Technologien zur Verarbeitung und Auswertung riesiger Datenmengen.

Ab wann eine Datenmenge als ‘riesig’ zu bezeichnen ist, erläutert Duden nicht.

Die Wikipedia-Definition

Fragen wir also Wikipedia. Hier werden verschiedene Definitionen angeboten. Beispielsweise diese:

Begriff Big Data [ˈbɪɡ ˈdeɪtə] (von englisch big ‚groß‘ und data ‚Daten‘, deutsch auch Massendaten) steht in engem Zusammenhang mit dem umfassenden Prozess der Datafizierung und bezeichnet Datenmengen, welche beispielsweise zu groß, zu komplex, zu schnelllebig oder zu schwach strukturiert sind, um sie mit manuellen und herkömmlichen Methoden der Datenverarbeitung auszuwerten..

Quelle: Wikipedia

‘Manuell’ ist hoffentlich ironisch gemeint. Und was sind ‘herkömmliche Methoden’?

Fazit

Keine der Definitionen hilft weiter.

Big Data – 20 Jahre später

Der Begriff ‘Big Data’ mit seinen verschiedenen Definitionsversuchen geistert schon seit mehr als 20 Jahren herum. Grund genug, nach Gemeinsamkeiten zu suchen, die Tools und Technologien aufweisen, die als ‘Big Data’ bezeichnet werden.

Eine Gemeinsamkeit drängt sich auf: All diese Tools oder Frameworks sind in der Lage, die Verarbeitung und Analyse der Daten auf mehrere Rechner zu verteilen.

Die Parallele zur Baustelle: Arbeit verteilen

Big Data DefinitionUm die Vorzüge der verteilen Berechnungen zu erläutern, bietet sich die Parallele zur Baustelle an.

Baut ein Mann allein ein Haus, dann kommt das den von Wikipedia erwähnten ‘herkömmlichen’ Methoden gleich.

Soll der Hausbau beschleunigt werden, dann gibt es zwei Möglichkeiten:

Einen kräftigeren Mann einstellen oder auch diesen mit besseren Maschinen ausstatten. Das kommt der vertikalen Skalierung (scale up) gleich, wie sie bei den herkömmtlichen Methoden der Datenverarbeitung praktiziert wird: Wir beschaffen einfach einen größeren Rechner mit mehr RAM, besserer CPU, größerer Festplatte.

Die zweite Methode zur Beschleunigung des Hausbaus: Wir setzen viele Bauarbeiter ein. Das entspricht der horizontalen Skalierung (scale out), wie sie in der Big-Data-Welt zu beobachten ist: Die Rechenlast wird auf mehrere Server verteilt und koordiniert.

Koordination ist der Schlüsselpunkt

  • Die Arbeiten müssen in einer sinnvollen Reihenfolge ausgeführt werden: Das Dach kann erst gebaut werden, wenn das Gebäude steht, vorher ist es sinnlos.
  • Was muss unternommen werden, wenn einer der Bauarbeiter ausfällt? Wer muss etwas unternehmen? Gibt es einen Bauführer, des das koordiniert? oder sind es die verbliebenen Arbeiter, die selbst koordinieren? Muss ein Ersatzarbeiter einspringen? Falls ja, womit fährt er weiter?

Was wir aus dem täglichen Arbeitsleben kennen, wurde übertragen auf Big-Data-Systeme. So wie es viele Ansätze gibt zur Organisation von Arbeit, zum Aufteilen einer Aufgabe auf mehrere Personen, zur Koordination der Personen, so gibt es viele Protokolle zur Koordination der Rechner im Cluster.

Statt noch immer größere Rechner zu beschaffen, wie bei den ‘herkömmlichen Methoden’ werden mehr Rechner beschafft, zu einem Cluster vernetzt, und die Arbeit wird auf mehrere Rechner aufgeteilt.

Daraus ergeben sich eine lange Liste an Herausforderungen an die Datenverarbeitung und Analyse. Und durch diese unterscheidet sich ‘Big Data’ von den ‘herkömmlichen Methoden’ der Datenverarbeitung.

Big Data – eine aktualisierte Definition

Der Begriff ‘Big Data’ bezeichnet Methoden zur Speicherung, Abfrage,  Verarbeitung und Analyse von Daten mit Hilfe von verteilten und horizontal skalierbaren Systemen.

Kommentar zur Definition

Diese Definition löst sich von der Größe der Daten, denn die verteilten Methoden funktionieren bestens auch für überschaubare Datenmengen, für Daten die in einem fixen Format, und Daten, die sehr langsam oder auch nur einer Quelle eintreffen.
Und hier das große ABER:
Diese Tools und Frameworks skalieren bis zu nahezu beliebigen Größen, Mengen, Varietät an Formaten und zwar deswegen, weil sie die Arbeit in ein Cluster von Rechnern verteilen.

  • Data Engineering ist ja nicht Selbstzweck. Vielmehr dient es dazu, aus Daten Nutzen zu ziehen. Künstliche Intelligenz wurde möglich, dank sorgfältigem Data Engineering.

  • LLM-Tipps & Fachglossar

    Abonniere meinen Newsletter, erhalte regelmäßig Tipps und Tricks über den produktiven Einsatz von LLMs und ich schenke dir mein umfangreiches Fachglossar Von AI-Engineering bis Zero-Shot

  • Chatbot als Lernassistent
  • Prompt Engineering Personas und Wiederholungen
  • AI-Engineering-Fachglossar
  • EBook Tutorial: Cluster aus virtuellen Maschinen
  • Ebook: Apache ZooKeeper
  • Ebook: Realtime Streaming Pipelines
  • LSM-Trees: Log Structured Merge Trees
  • Aufbau einer Enterprise Search
  • Zeit Stream Analytics
  • B-Tree-Index in Datenbanken
  • Ordering Guarantee in Apache Kafka
  • CAP Theorem
  • MapReduce Funktionale Programmierung
  • Konzepte des HDFS
  • Optimistisches Concurrency Control
Veröffentlicht am Schreib einen Kommentar

10 Tools zur Real-Time Analytics von Apache Kafka-Topics

Big Data Analyse für Apache Kafka

10 Tools zur Real-Time Analytics von Apache Kafka-Topics

Apache Kafka hat sich im Big-Data-Bereich dabei als Quasi-Standard für Event Hubs durchgesetzt. Mit hoher Geschwindigkeit persistiert es immer schneller eintreffende Events sicher in Topics. Höher, Schneller, Stärker – das Motto der Olympischen Spiele gilt auch für die Ansprüche an moderne Datenanalyse.

Immer schneller soll das Datengold in den Topics geschürft werden. Die Daten sollen gefiltert, angereichert, gejoined und aggregiert werden und das möglichst in Echtzeit.

Anforderungen an Real-Time-Analytics Tools


Hoch sind die Anforderungen an die Werkzeuge. Die Thematik ist alles andere als trivial. Wir haben es zu tun mit (potenziell) gigantischen Datenmengen und erwarten dennoch:

  • Horizontale Skalierbarkeit bis in Big-Data-Bereiche
  • Ausfallsicheren 7×24 Betrieb
  • Echtzeit-Analysen
  • Exactly Once Garantie
  • Event-Time Analysen
  • Windowing
  • Watermarks
  • Handling von Out-of-Order Events
  • Aggregationsfunktionen
  • Machine Learning auf Streams beispielsweise für predictive Maintenance.

Die Tool-Palette für Apache Kafka als Quelle wächst und damit die Qual der Wahl.

Real-Time Analytics Tools der Kafka Community

Begonnen hat Apache Kafka ja als hochperformanter und hoch skalierbarer Event-Hub, und wird  je nach Sichtweise auch als Message Queue bezeichnet. Das Streaming-API kamen relativ spät dazu und noch jünger ist ksqlDB.

Das Kafka-Streams API hat mit seinen Features mächtig zugelegt. Kein zusätzliches Cluster wird benötigt. Input und Output der Analysen sind jeweils Topics.  Das API gibt’s für Java und Scala. Wer nicht in ein Topic schreiben möchte, sucht nach einem Apache Kafka Connector für die gewünschte Datensenke.

Mit ksqlDB eröffnet sich gar die Möglichkeit, die Topics mit SQL-artigen Befehlen zu analysieren. ksqlDB ist relativ neu und gerade bei komplexen SQL-Abfragen mit vielen Joins und Aggregatfunktionen noch etwas umständlich zu bedienen. Ein Werkzeug, das sicher noch handlicher wird.

Die flexiblen Klassiker unter den Real-Time Analytics Tools

Ein Klassiker unter den Stream Analytics Engines ist Apache Spark. Es erlaubt sowohl Batch-Analysen auf einer Vielfalt von Formaten als auch Stream Analytics mit mannigfaltigen Datenquellen. Eine davon ist Apache Kafka.

Apache Spark ist sicher eine der ausgereiften Möglichkeiten. Die Integration von SQL, auch auf Streams, ist deutlich einfacher zu Handhaben. Machine Learning Modelle können mit Spark trainiert und/oder auf Streams deployes werden. Das ermöglicht beispielsweise für Predictive Maintanance, also vorausschauende Wartung. Spark GraphX ist gar eine Big-Data Graph Processing Engine. Zudem können die Ergebnisse der Stream-Analytics auf eine Vielzahl verschiedener Senken zur Weiterverarbeitung resp. Visualisierung geschrieben werden, Datenbanken, In-Memory-Stores und Topics.

Open Source Möglichkeiten zur Visualisierung findet man beispielsweise beim Apache Zeppelin oder beim Jupyter Lab. Spark bringt APIs für Scala, Java, Python und R.

Apache Flink entstand ursprünglich als Stream Analytics Engine, die Batch-Möglichkeiten kamen erst nachgelagert dazu. Die Unterschiede zu Spark liegen im Detail im Handling, in der Vielfalt der Features und auch in der Sprache der Foren. Flink wurde ursprünglich an der TU Berlin gestartet und ist mittlerweile von Alibaba aufgekauft worden. Die chinesisch-sprachigen Foren-Beiträge können ja glücklicherweise automatisch übersetzt werden. Interessant bei Flink ist auch die gute Integration mit Apache RocketMQ, einer Alternative zu Kafka als Event-Hub. Wie Flink wird auch die Open-Source-Community von  RocketMQ von Alibaba getrieben.

Big Data Stream Analytics Engines eine ganze Reihe. Apache Beam ist so eine Art aufkommender Standard für Stream Analytics. So ähnlich, wie SQL ein Standard für relationale Datenbanken ist.

Apache Spark und Apache Flink sind Beam-Runner, sollen also den Beam-Standard erlauben. Ein weiterer Open-Source Beam-Runner ist Apache Samza, der auch Kafka-Topics lesen und schreiben kann. Im Vergleich zu Apache Spark bringt Samza deutlich weniger Features und ist vielleicht gerade deswegen für den einen oder anderen Use-Case eine interessante Alternative.

Streaming-taugliche Big Data Datenbanken

Neben diesen ‘klassischen’ Stream-Analytics Engines gibt es eine wachsende Zahl von real-time Analytics fähigen Datenbanken.

Apache Druid ist in der Entwicklung schon weit fortgeschritten. Die Daten können in statischen Quellen, wie auf HDFS oder Amazon S3 liegen oder eben in real-time Quellen wie Kafka oder Amazon Kinesis.

Die Analysen erfolgen batch oder real-time mit Hilfe von einer intuitiv bedienbaren GUI.

Auch andere Big-Data taugliche Datenbanken entwickeln sich in eine vergleichbare Richtung.

Apache Ignite versteht sich ist eine verteilte Datenbank für hochperformantes Rechnen. Das Data Streaming API erlaubt eine Anbindung an Kafka, aber auch an Flink, RocketMQ, Spark, Storm, MQTT-Quellen. In einer Evaluation ist es als Alternative ist Ignite sicher ein guter Kandidat in einer Evaluation.

Echtzeit-Auswertungen sind ja per se Zeitabhängig, erfolgen in Zeitintervallen. Und so liegt es nahe, dass Zeitreihen-Datenbanken für Echtzeit-Auswertungen heranzuziehen sind. Die Anbindung an Kafka kann mit dem Kafka Connect API erfolgen. Man benötigt ein Verbindungsstück zwischen Kafka und der Datenbank. Die Events werden aus dem Kafka-Topic in die Datenbank übertragen, meist als Key-Value Paare. Dort werden sie weiterverarbeitet. Redis ist ein beliebter Key-Value Store. Und kann als Zwischenspeicher für eine weitere Auswertung, resp. Visualisierung dienen.

InfluxDB wiederum ist beliebt als Zeitreihen-Datenbank. Echtzeitauswertungen erfolgen ja oft in Zeitintervallen und da bietet es sich an, die Auswertung in einer Time-Series-Database wie Influxdb vorzunehmen.

Auch für Hazelcast gibt es einen Apache Kafka Connector und das Stream Processing API wird in Java eingebettet.


Zusammengefasst


  • Apache Spark ist das bei weitem flexibelste Tool für Real-Time-Analysen. Dicht gefolgt von Apache Flink
  • Die Apache Kafka-Community holt mit Kafka Streams und ksqlDB rasch auf in Bezug auf Datenbanalyse-Tools. Diese verarbeiten ausschließlich Kafka-Topics.
  • Wer auf Apache Druid setzen möchte, baut damit eine real-time fähige Analyse Datenbank auf.
  • Dank Kafka-Connect können auch weitere Tools wie Apache Ignite, Redis, InfluxDB und Hazelcast für die Analyse von Topics verwendet werden.

Meine Nr. 1 zur Analyse von Real Time Big Data

Das Gespann Kafka + Spark ist aus meiner Sicht momentan das schlagkräftigste und facettenreichste, wenn es um Echtzeitanalysen geht. Andere holen auf und es bleibt spannend.

  • Data Engineering ist ja nicht Selbstzweck. Vielmehr dient es dazu, aus Daten Nutzen zu ziehen. Künstliche Intelligenz wurde möglich, dank sorgfältigem Data Engineering.

  • LLM-Tipps & Fachglossar

    Abonniere meinen Newsletter, erhalte regelmäßig Tipps und Tricks über den produktiven Einsatz von LLMs und ich schenke dir mein umfangreiches Fachglossar Von AI-Engineering bis Zero-Shot

  • Chatbot als Lernassistent
  • Prompt Engineering Personas und Wiederholungen
  • AI-Engineering-Fachglossar
  • EBook Tutorial: Cluster aus virtuellen Maschinen
  • Ebook: Apache ZooKeeper
  • Ebook: Realtime Streaming Pipelines
  • LSM-Trees: Log Structured Merge Trees
  • Aufbau einer Enterprise Search
  • Zeit Stream Analytics
  • B-Tree-Index in Datenbanken
  • Ordering Guarantee in Apache Kafka
  • CAP Theorem
  • MapReduce Funktionale Programmierung
  • Konzepte des HDFS
  • Optimistisches Concurrency Control
Veröffentlicht am Schreib einen Kommentar

Big Data als Programmierparadigma

Big Data als Programmierparadigma

Big Data als Programmierparadigma

Wir kennen Paradigmenwechsel: Der Übergang von prozeduraler Programmierung zu objektorientierter Programmierung gilt als solcher.

In der objektorientierten Programmierung gilt, was die Prozedurale ausmacht und es kommen weitere Eigenschaften dazu.

Ähnlich verhält es sich mit der funktionalen Programmierung – auch ein Paradigmenwechsel: Das Objektorientierte gilt noch und es kommen weitere Eigenschaften dazu.

Und wie passt da “Big Data” ins Bild?

“Big Data” heißt ja nichts anderes als “große Daten”. Per se ist “Big Data” ja kein definierender Begriff, nicht einmal ein beschreibender Begriff.

Definitionen gibt es viele – Wikipedia hilft wie folgt:

 “Der aus dem englischen Sprachraum stammende Begriff Big Data (von englisch big ‚groß‘ und data ‚Daten‘, deutsch auch Massendaten) bezeichnet Datenmengen, welche beispielsweise zu groß, zu komplex, zu schnelllebig oder zu schwach strukturiert sind, um sie mit manuellen und herkömmlichen Methoden der Datenverarbeitung auszuwerten.”

Quelle: Wikipedia

Und gleich stellt sich die Anschlussfrage: Was sind denn bitte schön “herkömmliche Methoden der Datenverarbeitung”?

Und was ist schon “groß” und “zu groß” – in welcher Hinsicht “groß” und zu “groß”.

Big Data – das sind die 3V

Hier hilft dieser Definitionsversuch:  “Big Data – das sind die 3V”. Na ja, auch nicht hilfreich. Was sind 3V und warum sind 3V denn große Daten – also “Big Data”? Oder waren es nicht 4V? Auch von 6V war schon die Rede…

Nehmen wir die 3V – sie können im Gartner IT Glossary nachgelesen werden:

Big data is high-volume, high-velocity and/or high-variety information assets that demand cost-effective, innovative forms of information processing that enable enhanced insight, decision making, and process automation. “

Quelle: Gartner IT Glossary

Big Data sind also Technologien, mit denen Daten, die in großem Volumen, mit hoher Geschwindigkeit und großer Vielfalt verarbeitet werden sollen und dazu braucht es innovative Formen der Informationsverarbeitung.

Hmmmm – was ist denn schon “innovativ”?

Und nein – ich werde jetzt keine eigene Definition beisteuern …

Bleiben wir beim Paradigmenwechsel:

Wer erinnert sich an die Zeit in den späten 90er, als objektorientierte Programmierung aufkam?

Alle waren an die gute alte prozedurale Programmierung gewöhnt, und jetzt kam da etwas Neumodisches, das besser sein sollte. Man versprach sich, weniger Codierarbeit, weil der Code ja optimal wiederverwendet werden kann und das dank geschicktem Design von Klassen und Objekten und Methoden. (In Klammern: Hat sich das denn auch bewahrheitet?)

Manch einem routinierten prozeduralen Programmierer fiel die Umstellung schwer – einige sind gar auf der Strecke geblieben.

Nehmen wir den nächsten Schritt, denjenigen zum Paradigma der funktionalen Programmierung.

Wer kann die Hand heben und guten Gewissens von sich behaupten, die funktionale Programmierung voll und ganz begriffen zu haben und sie tagtäglich erfolgreich einzusetzen?

Meine Behauptung: manch eine Hand wird unten bleiben. Viele Programme können bestens ohne funktionale Elemente geschrieben werden.

Manche halt nicht – und das sind gerade diejenigen, die diese mythischen big-data-riesigen Datenmengen auswerten.

Noch eine Umfrage:

Wer kann die Hand heben und mit guten Gewissen von sich behaupten, wirklich tagtäglich mit big-data-mäßigen Mengen arbeiten zu dürfen?

Meine Beobachtung: manch eine Hand bleibt unten. Gute alte Objektorientierung reicht heute in vielen Fällen aus.

Sind da noch die Datenbanken

Alle Informatiker werden relational gedrillt und können mehr oder weniger gut mit relationalen Datenbanken umgehen. Ist doch klar, die gab’s ja schon immer…

Oder wer erinnert sich an die Zeit anfangs 90er, als einige Pioniere den großen und mutigen Schritt wagten, und relationale Datenbanken für ihre Projekte einsetzten?

Heute sind sie Gang und Gäbe. Und mit ihnen das deklarative Programmierparadigma der standardisierten Abfragesprache SQL. Diese gehört zum Skill-Set eines jeden Informatikers – hoffentlich.

Und jetzt gibt es diese neumodischen NoSQL-Datenbanken

Um NoSQL-Datenbanken ranken sich noch immer einige Mythen:

“Sie sind BASE und nicht ACID – so wie wir es von relationalen Datenbanken gewohnt sind. Auf NoSQL kann man sich ja nicht verlassen.”

“NoSQL ist etwas für Softies – für alle, die es mit der Vollständigkeit der Daten nicht so genau nehmen.”

Das habe ich alles schon gehört. Von scheinbar gestandenen IT Experten. Und auch: “Diese NoSQL-Datenbanken verlieren also Daten,” sagen sie, “sind keine rechten Datenbanken und überhaupt …”

Lassen wir die Ironie und schauen wir also seriös hin: Was ist überhaupt eine “NoSQL-Datenbank”?

Wohl eine Datenbank, man nicht mit SQL abfragt? Immerhin sagt die Bezeichnung doch so etwas aus. Wikipedia hilft uns schon wieder

NoSQL […] bezeichnet Datenbanken, die einen nicht-relationalen Ansatz verfolgen und damit mit der langen Geschichte relationaler Datenbanken brechen. Diese Datenspeicher benötigen keine festgelegten Tabellenschemata und versuchen Joins zu vermeiden. Sie skalieren dabei horizontal. “

Quelle: Wikipedia

Also “not only” – als Abkürzung für “NO”.

Aber: “not only” bedeutet doch, dass es auch NoSQL-Datenbanken gibt, die SQL können, oder? Und dann “versuchen” sie erst noch, Joins zu vermeiden.

Eben: diese “Definition” hilft ja nicht wirklich weiter, oder?

Es ist so ähnlich wie bei “Big Data” auch “NoSQL” ist ein Begriff, der eigentlich nichts aussagt, aber gerne verwendet wird.

Die Definition in Wikipedia ist dennoch hilfreich: NoSQL-Datenbanken sind nicht-relationale Datenbanken. 

Wir können dort also Daten speichern, ohne immer gleich vorher die 5. Normalform herzustellen.

Das ist doch eine gute Neuigkeit: Es erleichtert das Leben in vielen Fällen, in denen die Normalisierung eigentlich überflüssig ist. Beispielsweise wenn Daten als Einheit gespeichert werden sollen, wie der Inhalt eines Warenkorbes in einer E-Commerce-Anwendung. Und übrigens: NoSQL-Datenbanken verlieren nicht mehr und nicht weniger Daten, als relationale Datenbanken.

Was hat es jetzt mit BASE vs. ACID auf sich? Auch da hilft die Definition aus Wikipedia, wenn auch erst auf den zweiten Blick:

Und sie skalieren horizontal

NoSQL-Datenbanken skalieren horizontal! 

Nochmals: NoSQL-Datenbanken skalieren horizontal!

Sie skalieren, können also wachsen. Horizontal und nicht vertikal.

Vertikal: Wir brauchen immer größere Festplatten, bis der RAID-Controller platzt (und das ist ja schon eine beachtliche Menge).

Horizontal: Wir brauchen immer mehr Rechner und noch mehr Rechner und noch mehr Rechner.

Und auf diese vielen Rechner verteilen wir die Daten und noch mehr Daten – bis Big Data eben – diese diffusen Mengen im TB, PB-Bereich.

“Werden denn da Datenanalysen je fertig?” Diese Frage ist mehr als berechtigt. Immerhin ist es so in der “herkömmlichen” schon-lange-nicht-mehr-innovativen relationalen und objektorientierten Welt.

Horizontal skalieren – funktional programmieren – Big Data

Und da fängt das Innovative an und auch das Funktionale:

Ja, Berechnungen werden fertig auch auf diffus großen Datenmengen. 

Weil: Die Berechnungen werden verteilt auf allen Rechnern gleichzeitig ausgeführt, da wo die Daten liegen.

Das ist so ähnlich wie bei der Weinlese: Du kannst den Weinberg allein ernten (“herkömmlich”) oder du holst eine Gruppe von Lesehelfern, teilst die Arbeit geschickt auf, koordinierst die Leute und lässt sie alle gleichzeitig Trauben pflücken. Das geht schneller. Die Arbeit wird also verteilt – so wie Big Data Berechnungen, verteilt werden.

Und so wird die Verarbeitung auch sehr großer Datenmengen innert nützlicher Frist beendet.

Und in verteilten Systemen ist das Realisieren der ACID-Eigenschaft sehr aufwändig und hat seinen Preis. Der Hintergrund ist in Brewers’s Conjecture zu finden.

Big Data Rechnen ist also “verteiltes Rechnen”.

Adele Goldberg entwickelte in den 1970er Jahren in den Xerox-Labs mit Smalltalk eine objektorientierte Programmiersprache.

Und erst in den 1990er Jahren wurde die Objektorientierung langsam allgemein bekannt.

Schon in den 1960er-Jahren erdachte Edgar F. Codd bei IBM die relationalen Datenbanken.

Und erst Anfangs 1990er galt es in der Industrie als Pionierleistung, relationale Datenbanken produktiv einzusetzen.

Und so verhält es sich mit dem verteilten Rechnen.  In den Labors und der akademischen Welt 1970er sind die Theorien längst bekannt. Leslie Lamport erhielt dafür den Turing Award.

In den 2000er-Jahren wären die Internet-Riesen ohne verteiltes Rechnen längst in den Datenmengen untergegangen.

Und erst jetzt – 20 Jahre später – verbreitet sich diese Art der Berechnung unter dem Begriff Big Data.

Begründer eines Programmierparadigma: Adele Goldberg - Edgar F. Codd - Leslie Lamport
Adele Goldberg – Edgar F. Codd – Leslie Lamport (v.l.n.r.)

Der Lockruf der simplen APIs

Big-Data-APIs gaukeln einfache Handhabung vor, Herstellerfirmen umwerben uns mit verlockenden Cloud-Angeboten und versprechen, uns alle Schwierigkeiten von den Schultern zu nehmen.

“Big-Data-Technologien sind ja so einfach in der Handhabung”, sagen sie.

Datenanalysen mit SQL auf gigantischen Datenmengen werden sogar in Echtzeit (also Real Time) möglich und jeder Informatiker spricht doch SQL – was will man mehr?

Etwas mehr Know-How und deutlich weniger Kosten

Ein Blick in die Gegenwart: Wie sieht es aus, mit all den “klassischen” SQL-Queries gegen herkömmliche relationale Datenbanken, deren Ausführung einfach nicht enden will?

Wie viele Codierer sind heute unterwegs, die nicht wissen, was eine Transaktion ist, die nicht wissen, was ACID bedeutet und welche Vorkehrungen sie treffen müssen, damit die Datenbank nicht blockiert?

Zu viele – behaupte ich.

“Aber das macht ja nichts – wir nehmen einfach eine NoSQL-Datenbank und dann funktioniert gleich alles besser!” Das sagen sie dann und krempeln die Ärmel hoch, ziehen sich noch ein Gratis-Tutorial ein und bauen alles um.

Dabei hätte vielleicht nur die relationale Transaktion besser gestaltet werden müssen … etwas mehr Know-How und deutlich weniger Kosten.

Der Microservice wird’s richten

“Im Zweifelsfall machen wir einen Microservice draus. Da entkoppelt sich alles und skaliert erst noch”, sagen sie dann.

Und was muss man tun, damit die Microservices wirklich skalieren? Diese Frage stellte ich letzthin in einem ganz konkreten Fall. Die Antwort:

“Brauche ich nicht zu wissen – sind zwei Maus-Klicks im Spring-Boot-Framework.”

Ich prophezeie: Da kommen gruselig hohe Kosten auf den Besitzer dieses Microservices zu, wenn es darum gehen wird, wirklich zu skalieren.

Auch hier: Etwas mehr Know-How und deutlich weniger Kosten.

Und so verhält es sich auch mit den innovativen Big-Data-Technologien: Verteiltes Rechnen ist hochkomplexes Rechnen. Die scheinbar einfachen APIs kommen mit einer Vielzahl an Parametern mit Default-Werten, die von den Herstellern nach bestem Wissen und Gewissen gesetzt werden.

So wie das Autocommit in relationalen Datenbanken. Funktioniert meistens gut, kann aber verheerende Folgen haben, wenn es falsch angewandt wird.

Mit Know-How zum neuen Paradigma

Etwas mehr Know-How bedeutet unter dem Strich deutlich weniger Kosten – gerade wenn es darum geht, dem Lockruf in die innovativen Big-Data-Technologien zu folgen und sich auf das neue Paradigma des verteilten Rechnens mit Big Data einzulassen (wenn’s denn überhaupt ein neues Paradigma ist).

  • Data Engineering ist ja nicht Selbstzweck. Vielmehr dient es dazu, aus Daten Nutzen zu ziehen. Künstliche Intelligenz wurde möglich, dank sorgfältigem Data Engineering.

  • LLM-Tipps & Fachglossar

    Abonniere meinen Newsletter, erhalte regelmäßig Tipps und Tricks über den produktiven Einsatz von LLMs und ich schenke dir mein umfangreiches Fachglossar Von AI-Engineering bis Zero-Shot

  • Chatbot als Lernassistent
  • Prompt Engineering Personas und Wiederholungen
  • AI-Engineering-Fachglossar
  • EBook Tutorial: Cluster aus virtuellen Maschinen
  • Ebook: Apache ZooKeeper
  • Ebook: Realtime Streaming Pipelines
  • LSM-Trees: Log Structured Merge Trees
  • Aufbau einer Enterprise Search
  • Zeit Stream Analytics
  • B-Tree-Index in Datenbanken
  • Ordering Guarantee in Apache Kafka
  • CAP Theorem
  • MapReduce Funktionale Programmierung
  • Konzepte des HDFS
  • Optimistisches Concurrency Control
Veröffentlicht am Schreib einen Kommentar

Apache Spark Streaming mit Window Operation

Streaming Window Spark

Apache Spark Streaming mit Window Operation

Die APIs für Big Data Stream Analytics werden immer einfacher. Real-Time Analysen sind sogar mit SQL möglich. Dabei kommen Window Operationen zum Einsatz. Mit den DataFrames von Apache Spark Structured Streaming sind diese schnell geschrieben.

Der Umstand, dass Analysen relativ einfach zu erstellen sind, lässt gerne die enorme Komplexität dieser verteilten Systeme vergessen. Besondere Herausforderungen besprechen wir im Artikel Realtime Big Data Stream Processing. Der Big Data Nugget #03 soll einen Eindruck vermitteln: Dabei kam das Raspberry Pi Cluster erfolgreich zum Einsatz. Faszinierend ist, dass dieselbe Pipeline bis auf mehrere hundert Nodes skalieren kann. Für das Video wurde die Pipeline wie folgt aufgebaut:

Apache Kafka dient als Event Hub, Apache Spark nimmt die Analyse vor und speichert die Ergebnisse in Redis. Dort werden sie von einem Python Skript abgeholt und visualisiert. Das Monitoring erfolgt mit Prometheus und Grafana.

Der folgende Big Data Nugget thematisiert die Timestamps, die in diesem Event von den einzelnen Systemen gesetzt werden. Die Analyse wird mit Apache Spark Structured Streaming erstellt.

Credits:

(c) Video und Quiz: Tirsus GmbH / Ursula Deriu

Abonniere für Insights zu Data Engineering und Analytics.
  • Chatbot als Lernassistent
  • Prompt Engineering Personas und Wiederholungen
  • AI-Engineering-Fachglossar
  • EBook Tutorial: Cluster aus virtuellen Maschinen
  • Ebook: Apache ZooKeeper
  • Ebook: Realtime Streaming Pipelines
  • LSM-Trees: Log Structured Merge Trees
  • Aufbau einer Enterprise Search
  • Zeit Stream Analytics
  • B-Tree-Index in Datenbanken
  • Ordering Guarantee in Apache Kafka
  • CAP Theorem
  • MapReduce Funktionale Programmierung
  • Konzepte des HDFS
  • Optimistisches Concurrency Control