Database Reference
In-Depth Information
Joe fragt:
Hätten wir das nicht mit Mapreduce erledigen
können?
In der Einführung haben wir erklärt, dass unsere Beispiele (J)Ruby und JavaScript
nutzen. JRuby harmoniert nicht besonders gut mit Hadoop, doch wenn Sie Mapre-
duce mittels Java nutzen wollten, hätten Sie diesen Scanner-Code als Mapreduce-
Job entwickelt und an Hadoop übergeben.
Im Allgemeinen sind Aufgaben wie diese ideal für Mapreduce-Implementierungen
geeignet. Es gibt eine riesige Menge Eingangsdaten in einem regulären Format, der
von einem Mapper verarbeitet werden kann (Scannen einer HBase-Tabelle) und eine
riesige Menge Ausgangsoperationen, die von einem Reducer übernommenwerden
können (Schreiben der Zeilen an eine HBase-Tabelle).
Die Hadoop-Architektur verlangt, dass Job -Instanzen in Java geschrieben und (ein-
schließlich aller Abhängigkeiten) in einer jar-Datei gekapselt sind, die an alle Knoten
des Clusters gesendet werden kann. Neuere JRuby-Versionen können Java-Klassen
erweitern, doch die mit HBase ausgelieferte Version kann das nicht.
Es gibt einige Open-Source-Projekte, die die Ausführung von JRuby unter Hadoop
ermöglichen, doch bisher gibt es nichts, was mit HBase besonders gut funktioniert.
Es gibt Gerüchte, nach denen die HBase-Infrastruktur zukünftig Abstraktionen ent-
halten wird, die JRuby MR- (Mapreduce-) Jobs ermöglichen. Es gibt also Hoffnung.
Das Ergebnis prüfen
Wir haben gerade ein Scanner-Programm entwickelt, das eine anspruchsvolle
Aufgabe löst. Nun wollen wir den scan -Befehl der Shell nutzen, um uns ein-
fach einen Teil des Tabelleninhalts an der Console ausgeben zu lassen. Für
jeden Link, den das Skript in einem text: -Blob findet, erzeugt es einen to -
und einen from -Eintrag in der links -Tabelle. Um sich die Links anzusehen,
die auf diese Weise erzeugt werden, wechseln Sie in die Shell und scan nen
die Tabelle.
hbase> scan 'links', STARTROW => "Admiral Ackbar", ENDROW => "It's a Trap!"
Die Ausgabe wird recht umfangreich sein, aber natürlich können Sie den
get -Befehl nutzen, um sich die Links für einen einzelnen Artikel anzusehen.
hbase> get 'links', 'Star Wars'
COLUMN CELL
...
links:from:Admiral Ackbar timestamp=1300415922636, value=
links:from:Adventure timestamp=1300415927098, value=
links:from:Alamogordo, New Mexico timestamp=1300415953549, value=
 
Search WWH ::




Custom Search