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