Verteilte Auswertung von RDF-Graphen mit MapReduce und ...
Verteilte Auswertung von RDF-Graphen mit MapReduce und ...
Verteilte Auswertung von RDF-Graphen mit MapReduce und ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
2.3 Apache Cassandra<br />
auf die Daten zu, die ihm lokal zur Verfügung stehen. Dadurch werden weniger Daten<br />
über das Netzwerk ausgetauscht <strong>und</strong> im Idealfall haben alle Knoten die gleiche<br />
Größe an Daten zu verarbeiten.<br />
Da<strong>mit</strong> dies möglich ist, müssen die Anwendungen dem Map-Reduce-Paradigma folgen.<br />
Das Paradigma besagt, dass jedes Programm, ein sogenannter Job, aus einer<br />
Map- <strong>und</strong> einer Reduce-Phase besteht. Ein Knoten verarbeitet zunächst mehrere<br />
Map-Tasks, die eine Teilmenge der Daten (Inputsplits) als Eingabe erhalten. Die<br />
Inputsplits sind lokal auf dem Knoten gespeichert. Eine Eingabe besteht immer aus<br />
einem Schlüssel <strong>und</strong> einem Wert, ebenso die Ausgabe der Mapper (MapInputKey,<br />
MapInputValue, MapOutputKey <strong>und</strong> MapOutputValue). Nach der Map-Phase werden<br />
die Daten anhand des MapOutputKey sortiert <strong>und</strong> zusammengefasst. Sie werden<br />
dann an Reduce-Tasks, die auf anderen Knoten laufen können, geschickt. Ein<br />
Reduce-Task erhält einen Schlüssel (ReduceInputKey) <strong>und</strong> eine Menge <strong>von</strong> Werten<br />
(ReduceInputValues) als Eingabe. Die Ausgabe der Reducer ist ebenfalls ein<br />
Schlüssel <strong>und</strong> ein zugehöriger Wert. Das Format des ReduceInputKey ist identisch<br />
<strong>mit</strong> dem Format des MapOutputKey. Die Eingabewerte sind die Werte, die sortiert<br />
<strong>und</strong> zusammengefasst worden sind, <strong>und</strong> den gleichen MapOutputKey haben. Es ist<br />
also gewährleistet, dass allen Reduce-Tasks jeweils alle diejenigen Werte zur Verfügung<br />
stehen, die <strong>mit</strong> dem gleichen MapOutputKey versehen worden sind. Schließlich<br />
werden nach der Verarbeitung in der Reduce-Phase ReduceOutputKey <strong>und</strong> ReduceOutputValue<br />
auf das HDFS geschrieben. Abb. 2.2 visualisiert den Workflow einer<br />
<strong>MapReduce</strong>-Anwendung[9, 10].<br />
Setzt man die Anzahl der Reduce-Tasks auf null, so erfolgt weder eine Sortierung<br />
noch eine weitere Verarbeitung durch den Reducer. Die Ergebnisse der Map-Phase<br />
werden direkt in das HDFS geschrieben. Das bedeutet, dass auch kein Austausch<br />
der Daten über das Netzwerk erfolgt, wie es beim Sortieren <strong>und</strong> Zusammenfassen<br />
vor der Reduce-Phase der Fall wäre.<br />
2.3 Apache Cassandra<br />
Klassiche SQL-Datenbanken haben sich in allen Bereichen der Informatik fest etabliert.<br />
Wachsende Datenmengen erfordern jedoch eine Möglichkeit der Skalierung bei<br />
der Analyse der Daten. Um dieser Nachfrage gerecht zu werden, entstanden die sogenannten<br />
NoSQL-Datenbanken („not only SQL“ oder „no SQL“). Eine Gemeinsam-<br />
11