Blog der singularIT GmbH

  • Unsere Unternehmenswebseite
Search

Java Flink – Eine Open Source Plattform für die Verarbeitung großer Datenmengen

  • Veröffentlicht am 2. Juni 2017
  • Kategorie Java

Im Rahmen eines Java-Projektes sind wir mit Flink in Verbindung gekommen. Wir waren von der Datenverarbeitung mit Flink sehr begiestert und wollen in diesem Blog zuerst die Grundlagen und dann einige Ergebnisse unserer Arbeit vorstellen. Dieser Post ist dabei erstmal eine Einführung in die Grundlagen von Flink.

Was ist Flink?

Grob gesagt ist Flink eine Java-Erweiterung (Flink gibt es auch für Scala) die dabei hilft große Datenmengen verteilt zu verarbeiten. Eine verteilte Verarbeitung kann innerhalb eines Computers auf mehreren Prozessorkernen, innerhalb eines Unternehmensnetzwerkes oder aber auch über verschiedene global-verteilte Cluster geschehen. Flink hiflt einem dabei von dieser Verteilung zu abstrahieren. Die Programmierung mit Flink unterscheidet sich jedoch in einigen Punkten von der Programmierung die man sonst mit Java gewohnt ist.

Grundlegender Aufbau

Die Datenverarbeitung mit Flink folgt einem grundlegenden Muster (mehr Infos).

  1. Es gibt eine initiale Daten Quelle. Diese erhält man typischerweise in dem man irgendwelche Ausgangsdaten einliest.
  2. Auf diese Datenmenge werden eine Reihe von Transformationen angewendet, die letztlich das gewünschte Ergebnis produzieren.
  3. Das Ergebnis dieser Transformationen wird in einer Senke gespeichtert, ausgegeben oder abgelegt (DataSink).

Also ist der grundlegende Prozess: Datasource –> Transformation –> DataSink

Einbindung mit Maven

Die Einbindung mit Maven ist denkbar einfach. Im Folgenden Ausschnitt der pom.xml wird die Flink DataSet API eingebunden.

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-java</artifactId>
  <version>1.1-SNAPSHOT</version>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-clients_2.10</artifactId>
  <version>1.1-SNAPSHOT</version>
</dependency>

Datentypen

Daten werden unter anderem in sogenannten DataSets gespeichert. Das sind einfach nicht-änderbare Mengen an Daten eines bestimmten Typs, die ebenfalls Duplikate enthalten können. Da innerhalb des DataSets grundsätzlich erstmal keine Reihenfolge herrscht und somit einzelne Zuordnungen zwischen einzelnen Daten nicht möglich sind gibt es die Tuple-Datentypen. In einem Tuple können mehrere Daten gebündelt werden.

DataSet<Tuple2<String, Integer>>

Diese Zeile Zeigt die Deklaration eines DataSets, dass eine Menge von Tuplen aus String und Integer enthält. Dabei gehören genau immer ein String und ein Interger in einem Tupel zusammen.

Auf diesen Datentypen lassen sich nun verschiedenste Operationen ausführen, welche es ermöglichen jegliche Art an Datenanalysen und transformationen durchzuführen. Das besondere daran: Dieser gesamte Prozess lässt sich später extrem einfach auf verschiedene Worker aufteilen und paralellisiert durchführen. So ist es möglich, auch sehr komplexe Operationen sehr gut zu skalieren und damit die Gesamtdauer von Prozessen zu reduzieren.

Und es steckt noch viel mehr dahinter

Dies ist nur ein kurzer Einblick in die Welt von Flink und Streaming-basierten Frameworks. Wir können nur jeder programmieraffinen Person dazu raten, selber mal in das Thema reinzuschauen und das ein oder andere auszuprobieren: https://flink.apache.org/

Für uns ist das Framework definitiv sehr spannend und eines von vielen Möglichkeiten, sich Big-Data-Problematiken anzunehmen.

Kommentare sind geschlossen

Neueste Beiträge
  • Fridays Bar bei singularIT
  • Weihnachtsfeier 2022
  • Der Gesundheitstag 2022 @ singularIT
  • singularIT bei der Woche der KI
  • Get Together in Leipzig 2022
Archive
  • Januar 2023
  • Dezember 2022
  • November 2022
  • Oktober 2022
  • August 2022
  • Juli 2022
  • Mai 2022
  • Februar 2022
  • Dezember 2021
  • November 2021
  • Oktober 2021
  • September 2021
  • August 2021
  • Juli 2021
  • Mai 2021
  • Februar 2021
  • Januar 2021
  • Dezember 2020
  • November 2020
  • Oktober 2020
  • September 2020
  • Juli 2020
  • März 2020
  • September 2019
  • Juni 2019
  • Mai 2019
  • Dezember 2018
  • November 2018
  • Juli 2018
  • Mai 2018
  • April 2018
  • Januar 2018
  • Dezember 2017
  • Oktober 2017
  • September 2017
  • Juni 2017
  • November 2016
  • Oktober 2016
  • Juni 2016
  • Mai 2016
  • April 2016
  • März 2016
Kategorien
  • Allgemein
  • Deep Learning
  • Java
  • PHP
  • Über uns
  • Webprogrammierung
  • Datenschutz
  • Impressum
Copyright © 2023 Blog der singularIT GmbH All Right Reserved.
designed byBest Press Theme