02.11.2013 Aufrufe

Verteilte Auswertung von RDF-Graphen mit MapReduce und ...

Verteilte Auswertung von RDF-Graphen mit MapReduce und ...

Verteilte Auswertung von RDF-Graphen mit MapReduce und ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!