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 />

bank entsprechend aufzubauen. Hewitt empfiehlt eine Spaltenfamilie pro möglicher<br />

Art der Anfrage.<br />

2.3.2 Verteilung der Daten im Cluster<br />

Cassandra bietet verschiedene Möglichkeiten der Partitionierung. Es werden vordefinierte<br />

Partitionierer (engl. Partitioners) <strong>mit</strong>geliefert, die um eigene Partitionierer,<br />

die das IPartitioner Interface implementieren, erweitert werden können [11].<br />

Gr<strong>und</strong>sätzlich werden zur Bestimmung des Knotens, auf dem die Daten gespeichert<br />

werden sollen, der Zeilenschlüssel, der Replikationsfaktor (engl. replication factor)<br />

<strong>und</strong> die Replikationsstrategie verwendet 9 . Der Replikationsfaktor gibt an, wieviele<br />

Kopien der Daten im Cluster existieren. Ein Replikationsfaktor <strong>von</strong> 3 bedeutet<br />

beispielsweise, dass ein Datensatz dreimal im Cluster abgespeichert wird. Der Randompartitioner<br />

erlaubt es, die Daten gleichmäßig über den Cluster zu verteilen, da<br />

als Schlüssel der MD5-Hashwert des Zeilenschlüssels verwendet wird. Allerdings bedeutet<br />

dies auch, dass die Daten unsortiert vom System ausgegeben werden <strong>und</strong><br />

Anfragen, die gezielte Zeilenbereiche auswählen, ineffizient ausgeführt werden. Der<br />

OrderPreservingPartitioner verwendet die UTF8-Repräsentation des Zeilenschlüssels<br />

als Schlüssel. Folglich werden die Daten anhand des Zeilenschlüssels physisch<br />

abgespeichert. Je nach Zeilenschlüssel kann dies bedeuten, dass die Daten unregelmäßig<br />

über den Cluster verteilt werden, da die zu speichernden Daten oftmals nicht<br />

gleichverteilt sind. Wird als Zeilenschlüssel zum Beispiel der Nachname einer Person<br />

verwendet, so gäbe es eine Häufung bei den Knoten, die die Nachnamen, die<br />

<strong>mit</strong> „S“ beginnen, abspeichern. Die Last wäre also nicht regelmäßig verteilt. Vorteilhaft<br />

ist allerdings das Ausgeben sortierter Daten <strong>und</strong> die Möglichkeit, effizient<br />

Zeilenbereichsanfragen auszuwerten [11, 13].<br />

2.3.3 Datenzugriff<br />

Die Speicherung der Daten weist erhebliche Unterschiede zu relationalen Datenbanksystemen<br />

auf, folglich erfolgt der Datenzugriff ebenfalls auf eine andere Art.<br />

Cassandra ermöglicht den Zugriff der gespeicherten Daten per Thrift 10 <strong>und</strong> stellt<br />

hierfür eine API zur Verfügung. Die Entwickler <strong>von</strong> Cassandra empfehlen jedoch,<br />

9 http://wiki.apache.org/cassandra/FAQ#replicaplacement<br />

10 http://thrift.apache.org/<br />

15

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!