Verteilte Auswertung von RDF-Graphen mit MapReduce und ...
Verteilte Auswertung von RDF-Graphen mit MapReduce und ...
Verteilte Auswertung von RDF-Graphen mit MapReduce und ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
4 Implementierung <strong>und</strong><br />
Optimierungen<br />
Insgesamt wurden zwei Anwendungen implementiert. Die erste Anwendung dient<br />
zum Speichern <strong>von</strong> <strong>RDF</strong>-Daten in Cassandra. Sie erhält eine im N3-Format vorliegende<br />
<strong>RDF</strong>-Datei als Eingabe <strong>und</strong> speichert die Daten in die drei Spaltenfamilien<br />
„SPO“, „POS“ <strong>und</strong> „OSP“ (siehe Kap. 3.1). Der Benutzer kann den Keyspace festlegen,<br />
sowie die Anzahl der Tripel, die pro Batch in die Datenbank geschrieben werden,<br />
um die Schreibgeschwindigkeit zu regulieren. Die Anwendung wird auf einem Knoten<br />
des Clusters geladen <strong>und</strong> dort ausgeführt.<br />
Die zweite Anwendung, die der <strong>Auswertung</strong> der SPARQL-BGP Anfragen dient, wird<br />
<strong>mit</strong> Hadoop gestartet <strong>und</strong> läuft verteilt auf dem Cluster. Als Eingabe erhält das<br />
Programm die Anfrage, sowie den Namen des Keyspace, auf dem die <strong>Auswertung</strong><br />
durchgeführt werden soll. Die Ausgabe erfolgt auf dem HDFS. Abb. 4.1 zeigt die<br />
Systemarchitektur. Links ist die Anwendung zur <strong>Auswertung</strong> der SPARQL-BGP-<br />
Anfragen zu sehen, während rechts das Einleseprogramm dargestellt wird.<br />
Beide Anwendungen wurden in der Programmiersprache Java implementiert. Der<br />
Hector Client 1 ermöglicht den Zugriff auf Cassandra in Java-Programmen <strong>und</strong> wird<br />
in beiden Anwendungen verwendet. Das selbsternannte Ziel <strong>von</strong> Hector ist es, dem<br />
Entwickler Funktionen zur Verfügung zu stellen, um einfacher auf Cassandra zuzugreifen.<br />
Dabei greift der Client selbst per Thrift-API auf Cassandra zu <strong>und</strong> ist so<strong>mit</strong><br />
ein Wrapper dieser Funktionen. Die <strong>MapReduce</strong>-Jobs greifen per ColumnFamilyInputFormat<br />
<strong>und</strong> Hector-Client auf die Datenbank zu. Das ColumnFamilyInputFormat<br />
wird vom Cassandra-Projekt zur Verfügung gestellt, um Daten aus Cassandra <strong>mit</strong><br />
<strong>MapReduce</strong> zu verarbeiten.<br />
1 http://prettyprint.me/2010/02/23/hector-a-java-cassandra-client/<br />
25