<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Die Apache Flink Plattform zur parallelen Analyse von Datenstromen und Stapeldaten</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Jonas Traub</string-name>
          <email>jonas.traub@tu-berlin.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tilmann Rabl</string-name>
          <email>rabl@tu-berlin.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Fabian Hueskey</string-name>
          <email>fabian@data-artisans.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Till Rohrmanny und Volker Markl</string-name>
          <email>till@data-artisans.com</email>
          <email>volker.markl@tu-berlin.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Stichworter: Big-Data</institution>
          ,
          <addr-line>Datenstromverarbeitung, Stapelverarbeitung, Datenanalyse, Datenbanken, Datenanalyseablaufe</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Technische Universitat Berlin, FG DIMA</institution>
          ,
          <addr-line>Einsteinufer 17, 10587 Berlin</addr-line>
        </aff>
      </contrib-group>
      <fpage>403</fpage>
      <lpage>408</lpage>
      <abstract>
        <p>Die Menge an analysierbaren Daten steigt aufgrund fallender Preise fur Speicherlosungen und der Erschlie ung neuer Datenquellen rasant. Da klassische Datenbanksysteme nicht ausreichend parallelisierbar sind, konnen sie die heute anfallenden Datenmengen hau g nicht mehr verarbeiten. Hierdurch ist es notwendig spezielle Programme zur parallelen Datenanalyse zu verwenden. Die Entwicklung solcher Programme fur Computercluster ist selbst fur erfahrene Systemprogrammierer eine komplexe Herausforderung. Frameworks wie Apache Hadoop MapReduce sind zwar skalierbar, aber im Vergleich zu SQL schwer zu programmieren. Die Open-Source Plattform Apache Flink schlie t die Lucke zwischen herkommlichen Datenbanksystemen und Big-Data Analyseframeworks. Das Top Level Projekt der Apache Software Foundation basiert auf einer fehlertoleranten Laufzeitumgebung zur Datenstromverarbeitung, welche die Datenverteilung und Kommunikation im Cluster ubernimmt. Verschiedene Schnittstellen erlauben die Implementierung von Datenanalyseablaufen fur unterschiedlichste Anwendungsfalle. Die Plattform wird von einer aktiven Community kontinuierlich weiter entwickelt. Sie ist gleichzeitig Produkt und Basis vieler Forschungsarbeiten im Bereich Datenbanken und Informationsmanagement.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>gro e Herausforderung dar. Konventionelle Datenbanksysteme sind nicht langer
in der Lage mit den enormen Datenmengen und der dynamischen oder fehlenden
Struktur der Daten umzugehen.</p>
      <p>
        Das Forschungsprojekt Stratosphere[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] verfolgt das Ziel die Big-Data
Analyseplattform der nachsten Generation zu entwickeln und damit die Analyse sehr
gro er Datenmengen handhabbar zu machen. Im Jahr 2014 wurde das im
Stratosphere Projekt entwickelte System unter dem Namen Flink1 zunachst ein Apache
Incubator Projekt und spater ein Apache Top Level Projekt.
      </p>
      <p>Im Vergleich zu anderen verteilten Datenanalyseplattformen, reduziert Flink
die Komplexitat fur Anwender durch die Integration von traditionellen
Datenbanksystemkonzepten, wie deklarativen Abfragesprachen und automatischer
Abfrageoptimierung. Gleichzeitig erlaubt Flink schema-on-read 2, ermoglicht die
Verwendung von benutzerde nierten Funktionen und ist kompatibel mit dem
Apache Hadoop MapReduce Framework3. Die Plattform hat eine sehr gute
Skalierbarkeit und wurde auf Clustern mit hunderten Maschinen, in Amazons
EC2 und auf Googles Compute Engine erprobt.</p>
      <p>Im Folgenden stellen wir in Abschnitt 2 die Architektur der Flink Plattform
naher vor und zeigen Bibliotheken, Schnittstellen und ein Programmbeispiel in
Abschnitt 3. Abschnitt 4 beschreibt Besonderheiten in der Datenstromanalyse
von Apache Flink im Vergleich zu anderen Plattformen. Abschlie end stellen wir
in Abschnitt 5 weiterfuhrende Publikationen vor.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Architektur</title>
      <p>
        Abbildung 1 zeigt eine Ubersicht der Architektur der Apache Flink Plattform.
Die Basis von Flink ist eine einheitliche Laufzeitumgebung in der alle Programme
ausgefuhrt werden. Programme in Flink sind strukturiert als gerichtete Graphen
aus parallelisierbaren Operatoren, welche auch Iterationen beinhalten konnen [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
Bei der Ausfuhrung eines Programms in Flink werden Operatoren zu mehreren
parallelen Instanzen segmentiert, welche jeweils einen Teil der Datentupel
verarbeiten (Datenparallelitat). Im Gegensatz zu Hadoop MapReduce, werden
Programme in Flink nicht in nacheinander auszufuhrende Phasen (Map und Reduce)
geteilt. Alle Operatoren werden nebenlau g ausgefuhrt, sodass die Ergebnisse
eines Operators direkt zu folgenden Operatoren weitergeleitet und dort
verarbeitet werden konnen (Pipelineparallelitat). Neben der verteilten
Laufzeitumgebung fur Cluster, stellt Flink auch eine lokale Laufzeitumgebung bereit. Diese
ermoglicht es Programme direkt in der Entwicklungsumgebung auszufuhren und
zu debuggen. Flink ist kompatibel mit einer Vielzahl von
Clustermanagement1http://flink.apache.org
2Bei schema-on-read werden Daten in ihrer ursprunglichen Form gespeichert, ohne
ein Datenbankschema festzulegen. Erst beim Lesen der Daten werden diese in ein
abfragespezi sches Schema uberfuhrt, was eine gro e Flexibilitat bedeutet.
3http://hadoop.apache.org
      </p>
      <p>
        Abb. 1. Architektur- und Komponentenubersicht der Apache Flink Plattform.
und Speicherlosungen, wie Apache Tez4, Apache Kafka5 [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], Apache HDFS3 [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]
und Apache Hadoop YARN3 [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>Zwischen der Laufzeitumgebung und den Programmierschnittstellen (API),
sorgen Stream Builder und Common API fur die Ubersetzung von gerichteten
Graphen aus logischen Operatoren in generische Datenstromprogramme, welche
in der Laufzeitumgebung ausgefuhrt werden. In diesem Schritt erfolgt auch die
automatische Optimierung des Daten ussprogramms. Wahrend der Anwender
beispielsweise lediglich einen Join spezi ziert, wahlt der integrierte Optimierer
den fur den jeweiligen Anwendungsfall besten konkreten Join-Algorithmus aus.</p>
      <p>Der folgende Abschnitt gibt eine Ubersicht uber die oberste Schicht der Flink
Architektur, welche aus einem breiten Spektrum von Bibliotheken und
Programmierschnittstellen besteht.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Bibliotheken und Schnittstellen</title>
      <p>Nutzer von Apache Flink konnen Abfragen in verschiedenen
Programmiersprachen spezi zieren. Zur Analyse von Datenstromen und zur Stapelverarbeitung
stehen jeweils eine Scala und eine Java API zur Verfugung. Stapeldaten konnen
au erdem mit einer Python API verarbeitet werden. Alle APIs stellen dem
Programmierer generischen Operatoren wie Join, Cross, Map, Reduce und Filter zur
Verfugung. Dies steht im Gegensatz zu Hadoop Map Reduce wo komplexe
Operatoren als Folge von Map- und Reducephasen implementiert werden mussen.
Listing 1 zeigt eine Wordcount-Implementierung in der Scala Stream Processing API.
Eine Implementierung zur Stapelverarbeitung ist analog zu diesem Beispiel unter
Auslassung der Window-Spezi kation moglich.</p>
      <p>4http://tez.apache.org
5http://kafka.apache.org
1 case class Word (word: String, frequency: Int)
2 val lines: DataStream[String] = env.fromSocketStream(...)
3 lines.flatMap{line =&gt; line.split(" ")}
4 .map(word =&gt; Word(word,1))}
5 .window(Time.of(5,SECONDS)).every(Time.of(1,SECONDS))
6 .groupBy("word").sum("frequency").print()
Listing 1. Eine Wordcount-Implementierung unter Verwendung der Scala Stream
Processing API von Apache Flink.</p>
      <p>In der ersten Zeile wird ein Tupel bestehend aus einem String und einer
Ganzzahl de niert. Programmzeile 2 gibt einen Socketstream an von dem ein
Textdatenstrom zeilenweise eingelesen wird. In Zeile 3 wird ein FlatMap-Operator
angewendet, welcher Zeilen als Eingabe erhalt, diese an Leerzeichen trennt und
die resultierenden Einzelworter in das zuvor de nierte Tupelformat mit dem
Wort als String und 1 als Zahlenwert konvertiert. Da es sich um eine
Datenstromabfrage handelt, wird ein Fenster spezi ziert, hier ein gleitendes Fenster
mit einer Lange von funf Sekunden und einer Schrittweite von einer Sekunde.
Abschlie end erfolgt eine Gruppierung nach Wortern und die Zahlenwerte
werden innerhalb der Gruppen aufsummiert. Die Printmethode sorgt fur die
Ergebnisausgabe auf der Konsole.</p>
      <p>Zusatzlich zu den klassischen Programmierschnittstellen, bietet die Flink
ML Bibliothek eine Vielzahl an Algorithmen des maschinellen Lernens. Gelly
ermoglicht die Graphenanalyse mit Flink. Die Table API bietet die Moglichkeit
der deklarativen Spezi kation von Abfragen ahnlich zu SQL und steht als
Javaund Scalaversion zur Verfugung. Listing 2 zeigt eine
Wordcount-Implementierung mit der Java Table API zur Stapelverarbeitung.
1 DataSet&lt;WC&gt; input = env.fromElements(new WC("Hello",1),new WC("Bye",1),new WC("Hello",1));
2 Table table=tableEnv.fromDataSet(input).groupBy("word").select("word.count as count, word");
3 tableEnv.toDataSet(table, WC.class).print();
Listing 2. Eine Wordcount-Implementierung unter Verwendung der Java Table API
zur Stapelverarbeitung von Apache Flink.</p>
      <p>In Zeile 1 werden Eingabeworter explizit angegeben. Zeile 2 konvertiert das
DataSet zunachst zu einer Tabelle, die anhand des Attributs word gruppiert
wird. Die Selectanweisung wahlt wie in SQL das Wort sowie die Summe der
Zahler aus. Abschlie en wird die Ergebnistabelle zuruck zu einem DataSet
konvertiert und ausgegeben.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Datenstromverarbeitung</title>
      <p>Die Datenstromverarbeitung unterscheidet sich signi kant von der
Stapelverarbeitung: Programme haben lange (theoretisch unendliche) Laufzeiten,
konsumieren Daten kontinuierlich von Eingabestromen und produzieren im Gegenzug
Ausgabestrome. Aggregationen konnen jedoch nur fur abgeschlossene
Datenblocke berechnet werden. Sie folgen in Datenstromprogrammen daher auf eine
Diskretisierung, die einen Datenstrom in abgeschlossene, potentiell uberlappende
Fenster unterteilt. Eine Aggregation erfolgt dann fortlaufend per Fenster.</p>
      <p>
        Im Gegensatz zu vielen anderen Datenanalyseplattformen ist Flink durch
seine Laufzeitumgebung nicht an Limitationen gebunden, die aus
Micro-Batching Techniken [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] entstehen. Beim Micro-Batching wird ein Datenstrom als Serie
von Datenblocken fester Gro e interpretiert, die separat als Stapel verarbeitet
werden. Die Gro en aller Fenster mussen Vielfache der Blockgro e sein, sodass
ein Gesamtergebnis aus den Blockergebnissen berechnet werden kann. Flink stellt
weitaus exiblere Diskretisierungsoptionen bereit, welche eine Generalisierung
von IBM SPLs Trigger und Eviction Policies [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] sind. Eine Trigger Policy gibt
an, wann ein Fenster endet und die Aggregation fur dieses Fenster ausgefuhrt
wird. Die Eviction Policy gibt an, wann Tupel aus dem Fernsterpu er entfernt
werden und spezi ziert so die gro e von Fenstern. Anwender konnen aus einer
Vielzahl von vorde nierten Policies wahlen (z.B. basierend auf Zeit, Zahlern
oder Deltafunktionen) oder benutzerde nierte Policies implementieren. Flink
erreicht damit bei geringeren Latenzen eine gro ere Expressivitat als
micro-batchabhangige Systeme und vermeidet die Komplexitat von Lambda-Architekturen.
      </p>
      <p>Operatoren in Flink konnen statusbehaftet sein. Ein
Schnappschussalgorithmus stellt sicher, dass jedes Tupel auch im Fehlerfall exakt einmal im
Operatorstatus reprasentiert ist und verarbeitet wird.</p>
      <p>Flink bietet somit eine bei Open-Source-Systemen einmalige Kombination
aus Stapelverarbeitung, nativer Datenstromverarbeitung ohne Beschrankungen
durch Micro-Batching, statusbehafteten Operatoren, ausdrucksstarken APIs und
exactly-once Garantien.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Weiterfuhrende Publikationen</title>
      <p>
        Flink ist sowohl Produkt als auch Basis vieler Forschungsarbeiten. Im
Folgenden werden die wichtigsten Publikationen genannt. Warnecke et al. stellen die
Nephele Laufzeitumgebung vor [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], auf der Flinks Laufzeit ursprunglich basierte.
Battre et al. erganzen sie mit dem PACT Modell [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], einer Erweiterung von
MapReduce [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Alexandrov et al. geben eine detaillierte Beschreibung der
Stratosphere Plattform [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Hueske et al. befassen sich mit der Optimierung von
Programmen mit benutzerde nierten Funktionen [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Ewen et al. fuhren die
native Unterstutzung von Iterationen ein [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Aktuelle Arbeiten befassen sich mit
Fehlertoleranz [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] und implizitem Parallelismus mittels eingebetteter Sprachen [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
Spangenberg et al. vergleichen die Performance von Flink und Spark fur
unterschiedliche Algorithmen [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
6
      </p>
    </sec>
    <sec id="sec-6">
      <title>Resume</title>
      <p>Flink vereinfacht die parallele Analyse gro er Datenmengen durch die
Anwendung klassischer Datenbanktechniken wie automatischer Optimierung und
deklarativen Abfragesprachen. Ausdrucksstarke, intuitive APIs ermoglichen sowohl
Stapel- als auch Datenstromverarbeitung. Flink ist skalierbar und durch seine
gro e Kompatibilitat vielseitig einsetzbar. Operatoren werden nebenlau g, frei
von Limitierungen durch Micro-Batching-Techniken, in einer Pipeline ausgefuhrt.</p>
    </sec>
    <sec id="sec-7">
      <title>Danksagung</title>
      <p>Fur die Entwicklung der Plattform gilt unser besonderer Dank der gesamten
Flink Community. Dieses Forschungsprojekt wird unterstutzt durch Mittel des
BMBF fur das Berlin Big Data Center (BBDC) unter der Forderungsnummer
01IS14013 sowie der DFG Forschergruppe Stratosphere (FOR 1306).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Alexandrov</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bergmann</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ewen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Freytag</surname>
            ,
            <given-names>J. C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hueske</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heise</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , ... &amp;
          <string-name>
            <surname>Warneke</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          (
          <year>2014</year>
          ).
          <article-title>The Stratosphere platform for big data analytics</article-title>
          .
          <source>The VLDB Journal|The International Journal on Very Large Data Bases</source>
          ,
          <volume>23</volume>
          (
          <issue>6</issue>
          ),
          <fpage>939</fpage>
          -
          <lpage>964</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Alexandrov</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kunft</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Katsifodimos</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , Schuler,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Thamsen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Kao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            , ... &amp;
            <surname>Markl</surname>
          </string-name>
          ,
          <string-name>
            <surname>V.</surname>
          </string-name>
          (
          <year>2015</year>
          , May).
          <article-title>Implicit Parallelism through Deep Language Embedding</article-title>
          .
          <source>In Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data</source>
          (pp.
          <fpage>47</fpage>
          -
          <lpage>61</lpage>
          ). ACM.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Battre</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ewen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hueske</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kao</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Markl</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Warneke</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          (
          <year>2010</year>
          , June).
          <article-title>Nephele/PACTs: a programming model and execution framework for web-scale analytical processing</article-title>
          .
          <source>In Proceedings of the 1st ACM symposium on Cloud computing</source>
          (pp.
          <fpage>119</fpage>
          -
          <lpage>130</lpage>
          ). ACM.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Dean</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Ghemawat</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          (
          <year>2008</year>
          ).
          <article-title>MapReduce: simpli ed data processing on large clusters</article-title>
          .
          <source>Communications of the ACM</source>
          ,
          <volume>51</volume>
          (
          <issue>1</issue>
          ),
          <fpage>107</fpage>
          -
          <lpage>113</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Dudoladov</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Xu</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schelter</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Katsifodimos</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ewen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tzoumas</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Markl</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          (
          <year>2015</year>
          , May).
          <article-title>Optimistic Recovery for Iterative Data ows in Action</article-title>
          .
          <source>In Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data</source>
          (pp.
          <fpage>1439</fpage>
          -
          <lpage>1443</lpage>
          ). ACM.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Ewen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tzoumas</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kaufmann</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Markl</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          (
          <year>2012</year>
          ).
          <article-title>Spinning fast iterative data ows</article-title>
          .
          <source>Proceedings of the VLDB Endowment</source>
          ,
          <volume>5</volume>
          (
          <issue>11</issue>
          ),
          <fpage>1268</fpage>
          -
          <lpage>1279</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Gedik</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          (
          <year>2014</year>
          ).
          <article-title>Generic windowing support for extensible stream processing systems</article-title>
          .
          <source>Software: Practice and Experience</source>
          ,
          <volume>44</volume>
          (
          <issue>9</issue>
          ),
          <fpage>1105</fpage>
          -
          <lpage>1128</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Hueske</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peters</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sax</surname>
            ,
            <given-names>M. J.</given-names>
          </string-name>
          , Rheinlander,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Bergmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Krettek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            , &amp;
            <surname>Tzoumas</surname>
          </string-name>
          ,
          <string-name>
            <surname>K.</surname>
          </string-name>
          (
          <year>2012</year>
          ).
          <article-title>Opening the black boxes in data ow optimization</article-title>
          .
          <source>Proceedings of the VLDB Endowment</source>
          ,
          <volume>5</volume>
          (
          <issue>11</issue>
          ),
          <fpage>1256</fpage>
          -
          <lpage>1267</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Kreps</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Narkhede</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Rao</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          (
          <year>2011</year>
          , June).
          <article-title>Kafka: A distributed messaging system for log processing</article-title>
          .
          <source>In Proceedings of the NetDB</source>
          (pp.
          <fpage>1</fpage>
          -
          <lpage>7</lpage>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Shvachko</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kuang</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Radia</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Chansler</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          (
          <year>2010</year>
          , May).
          <article-title>The hadoop distributed le system</article-title>
          .
          <source>In Mass Storage Systems and Technologies (MSST)</source>
          ,
          <source>2010 IEEE 26th Symposium on</source>
          (pp.
          <fpage>1</fpage>
          -
          <lpage>10</lpage>
          ). IEEE.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Spangenberg</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roth</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Franczyk</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          (
          <year>2015</year>
          , June).
          <source>Evaluating New Approaches of Big Data Analytics Frameworks. In Business Information Systems</source>
          (pp.
          <fpage>28</fpage>
          -
          <lpage>37</lpage>
          ). Springer International Publishing.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Vavilapalli</surname>
            ,
            <given-names>V. K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Murthy</surname>
            ,
            <given-names>A. C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Douglas</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Agarwal</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Konar</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Evans</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , ... &amp;
          <string-name>
            <surname>Baldeschwieler</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          (
          <year>2013</year>
          ,
          <article-title>October)</article-title>
          .
          <article-title>Apache hadoop yarn: Yet another resource negotiator</article-title>
          .
          <source>In Proceedings of the 4th annual Symposium on Cloud Computing</source>
          (p.
          <fpage>5</fpage>
          <lpage>)</lpage>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Warneke</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Kao</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          (
          <year>2009</year>
          , November).
          <article-title>Nephele: e cient parallel data processing in the cloud</article-title>
          .
          <source>In Proceedings of the 2nd workshop on many-task computing on grids and supercomputers</source>
          (p.
          <fpage>8</fpage>
          <lpage>)</lpage>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Zaharia</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Das</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shenker</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Stoica</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          (
          <year>2012</year>
          , June).
          <article-title>Discretized streams: an e cient and fault-tolerant model for stream processing on large clusters</article-title>
          .
          <source>In Proceedings of the 4th USENIX conference on Hot Topics in Cloud Ccomputing</source>
          (pp.
          <fpage>10</fpage>
          -
          <lpage>10</lpage>
          ). USENIX Association.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>