Bericht

Transcription

Bericht
Prof. Dr. Ingo Claßen
Studiengang Wirtschaftsinformtik
FB Informatik, Kommunikation und Wirtschaft
Projektbericht
Titel
Einführung in die Algorithmen k-Means, Bayes und
Recommender von Mahout
Autoren
Erik Struck
Nicolas Welitzki
Inhaltsverzeichnis
Inhaltsverzeichnis
Inhaltsverzeichnis ............................................................................................... II
Abbildungsverzeichnis ....................................................................................... III
Tabellenverzeichnis ........................................................................................... IV
1 Einleitung ....................................................................................................... 1
1.1 Motivation ................................................................................................ 1
1.2 Zielstellung der Arbeit .............................................................................. 1
1.3 Aufbau der Arbeit ..................................................................................... 2
2 Einrichtung der virtuellen Maschine ............................................................... 3
2.1 Installation................................................................................................ 3
2.1.1 Netzwerkkonfiguration ..................................................................... 8
2.1.2 Hadoop .......................................................................................... 11
2.1.3 Mahout .......................................................................................... 13
2.2 Konfiguration für voll-verteilten Clusterbetrieb ....................................... 14
2.3 Herausforderungen bei der Installation .................................................. 15
3 Algorithmen von Mahout .............................................................................. 17
3.1 Clusteranalyse am Beispiel von k-Means .............................................. 17
3.1.1 Beispiel k-Means Verfahren mit Reuters Nachrichtensammlung... 20
3.1.2 Ergebnisse der k-Means Verarbeitung .......................................... 22
3.2 Klassifikation am Beispiel von Bayes ..................................................... 23
3.2.1 Beispiel Bayes mit 20 Newsgroups Beispieldaten ......................... 25
3.2.2 Beispiel Bayes mit Wikipedia Daten .............................................. 27
3.2.3 Ergebnisse der Bayes Beispiele .................................................... 29
3.3 Empfehlungen am Beispiel von Recommender ..................................... 30
3.3.1 Nutzerbasierte Recommender....................................................... 31
3.3.2 Gegenstandsbasierte Recommender ............................................ 33
3.3.3 Beispiel Recommender mit Grouplens Datenbank für
Filmbewertungen ........................................................................... 35
3.3.4 Ergebnisse der Recommender Verarbeitung ................................ 37
3.4 Herausforderungen im Betrieb ............................................................... 38
4 Fazit ............................................................................................................. 41
Literaturverzeichnis ........................................................................................... VI
Anhang ............................................................................................................ VIII
A Konfiguration für voll-verteilten Clusterbetrieb ...................................... VIII
B Beschreibung zu den komprimierten virtuellen Maschinen ..................... XI
II
Abbildungsverzeichnis
Abbildungsverzeichnis
Abbildung 1: VM-Einstellungen I ........................................................................ 3
Abbildung 2: VM-Einstellungen II ....................................................................... 4
Abbildung 3: Installations-Auswahl ..................................................................... 4
Abbildung 4: Softwarepakete.............................................................................. 5
Abbildung 5: Sicherheitseinstellungen ................................................................ 6
Abbildung 6: VM-Netzwerkkonfiguration ............................................................ 8
Abbildung 7: YaST-Netzwerkeinstellungen I ...................................................... 9
Abbildung 8: YaST-Netzwerkeinstellungen II ..................................................... 9
Abbildung 9: YaST-Netzwerkeinstellungen III .................................................. 10
Abbildung 10: Hadoop-Befehlsoptionen ........................................................... 12
Abbildung 11: Mahout-Befehlsoptionen ............................................................ 14
Abbildung 12: Arbeitsweise eines Klassifikator-Systems, s. S. 233 Owen u.a. 2012
........................................................................................................ 23
Abbildung 13: Mahout-Wiki, k-Means Tutorial .................................................. 40
III
Tabellenverzeichnis
Tabellenverzeichnis
Tabelle 1: Hostnamen ...................................................................................... 10
Tabelle 2: Hosttabelle ....................................................................................... 11
Tabelle 3: Durchführung k-Means .................................................................... 21
Tabelle 4: Ergebnis k-Means ............................................................................ 22
Tabelle 5: Durchführung Bayes 20 Newsgroups .............................................. 26
Tabelle 6: Durchführung Bayes Wikipedia ....................................................... 28
Tabelle 7: Ergebnis Bayes 20Newsgroups ....................................................... 29
Tabelle 8: Ergebnis Bayes Wikipedia ............................................................... 29
Tabelle 9: Durchführung Recommender .......................................................... 36
Tabelle 10: Ergebnis Recommender ................................................................ 37
IV
1. Einleitung
1
Einleitung
Heutige Unternehmen müssen immer größere Datenmengen - Big Data - verarbeiten und auswerten. Eine Technik, die die Verarbeitung in vernetzten Hochleistungsclustern ermöglicht, ist das Hadoop Framework, während das Apache
Mahout-Projekt geeignete Algorithmen für die Auswertung bereitstellt. Im Rahmen
dieser Arbeit sollen drei Algorithmen vorgestellt und angewendet werden. Zudem
wird Grundlagenwissen für die Einrichtung und Konfiguration eines mit Hadoop
voll-verteilten Clusterbetriebs aufgebaut. Das Handling in Betrieb und Einrichtung
sowie Ergebnisse, die Rückschlüsse auf die Performance der Algorithmen zulassen, werden dokumentiert. .
1.1
Motivation
Die Bearbeitung von Daten mit statistischen Verfahren und Methoden kann bereits
bei relativ kleinen Datensätzen eine lange Zeit in Anspruch nehmen. In der Vergangenheit existierten im Hardwarebereich natürliche Beschränkungen bei der
Festplattenkapazität. Mittlerweile ist die Speicherkapazität jedoch so stark gestiegen, dass relativ einfach Datenmengen im Tera- und Petabyte-Bereich erreicht
werden. Die Unternehmen machen von diesen Möglichkeiten regen Gebrauch und
speichern eine Vielzahl von Daten für einen möglichst langen Zeitraum ab. Big
Data gilt als die goldene Fundgrube für Informationen in Unternehmen. Wie bereits
zu Beginn des Abschnitts erwähnt, steigt die Durchführungsdauer mit der Größe
der Datenmengen. Schon bei wenigen Gigabyte-Daten kann eine solche Durchführung Stunden dauern, je nach dem welcher Algorithmus eingesetzt wird.
Apache Mahout hat den Anspruch die Bearbeitungsdauer von Big Data mithilfe
beliebig skalierbarer Rechenverteilung zu minimieren.
1.2
Zielstellung der Arbeit
Zielstellung dieser Arbeit ist es, drei Implementierungen von Algorithmen jeweils
für Clusteranalysen, Klassifikation und Empfehlungen des Mahout Frameworks zu
beschreiben und anhand von Testdaten anzuwenden. Dabei wird auch auf die
Einrichtung der virtuellen Maschinen mit Mahout und Hadoop und die Einrichtung
sowie Konfiguration der Cluster-Infrastruktur eingegangen.
1
1. Einleitung
Diese Arbeit soll zum Wissensaufbau bezüglich der praktischen Arbeit mit Hadoop
und Mahout verwendet werden. Dabei liegt der Fokus auf der Einrichtung einer
lauffähigen Cluster-Umgebung und der Durchführung dreier implementierter Algorithmen inklusive deren Erläuterung. Da diese Arbeit als Grundlage für nachfolgende wissenschaftliche Projekte dienen soll, sind viele Passagen sehr detailliert
und ausführlich beschrieben.
1.3
Aufbau der Arbeit
Diese Arbeit teilt sich in drei Teile auf. Im ersten Teil wird die Einrichtung und Konfiguration der virtuellen Maschinen beschrieben. Im theoretischen Teil der Arbeit –
dem zweiten Teil – gehen wir auf die Grundlagen dreier ausgewählter implementierter Algorithmen in Mahout ein. Im praktischen Teil fassen wir die Ergebnisse
der Durchführung der Algorithmen mit geeigneten Testdaten zusammen.
Die Arbeit endet schlussendlich mit einem Fazit.
2
2. Einrichtung der virtuellen Maschine
2
Einrichtung der virtuellen Maschine
2.1
Installation
In diesem Kapitel wird die Installation und Einrichtung der virtuellen Maschine
(VM) beschrieben.
Das Hadoop-Cluster soll auf den Rechnern des Netzwerk-Labors der HTW Berlin
eingerichtet werden. Die Rechner sind Intel Core i7-2600 3.4 GHz und 16 GB Arbeitsspeicher ausgestattet. Auf der Partition D stehen uns durchschnittlich 700 GB
Festplattenspeicher zur Verfügung. Auf den Rechnern sind bereits VMWare Player
vorinstalliert. Damit dabei keine Probleme mit der Kompatibilität oder andere Probleme auftreten, verwenden wir auf jedem Rechner eine exakte Kopie der VM. Lediglich der Hostname muss konfiguriert werden. Außerdem kommt erschwerend
hinzu, dass die im Rahmen dieses Projekts getesteten Virtualisierungssysteme
VirtualBox und VMWare nicht kompatibel zueinander sind. Das heißt, dass eine
VM die mit VirtualBox erstellt wurde, nicht von einem VMWare-System eingespielt
und verwendet werden kann oder umgekehrt.
Als Betriebssystem kommt openSUSE-11.4 als Minimalinstallation
zum Einsatz. Bei der Einrichtung
der VM ist darauf zu achten, dass
wenigstens 1024mb Arbeitsspeicher zugewiesen werden. Vor
dem initialen Starten der VM
muss unter den Einstellungen von
VMWare das Floppy-Laufwerk mit
der autoinst.flp Datei und das CDLaufwerk mit der autoinst iso-
Abbildung 1: VM-Einstellungen I
Datei entfernt werden. Wird dies
nicht getan, führt VMWare eine
vorkonfigurierte Installation von Linux durch, womit eine Minimalinstallation nicht
möglich wird. Es ist möglich vor dem Fertigstellen der virtuellen Maschine die
3
2. Einrichtung der virtuellen Maschine
Hardwarekonfiguration zu ändern, dabei kann bereits das Floppy Laufwerk entfernt, bzw. das Image aus diesem herausgenommen werden. Ist die VM erstellt,
generiert VMWare jedoch noch ein zusätzliches CD/DVD und Floppy Laufwerk mit
den jeweiligen autoinst Images, diese müssen ebenfalls herausgenommen werden.
Abbildung 2: VM-Einstellungen II
Beim Starten der VM ist es dann möglich, eine neue Installation zu wählen. Da die
VM möglichst wenig Platz benötigen soll, empfiehlt sich eine Minimalinstallation
ohne grafische Oberfläche. Bei
OpenSUSE-11.4 ist das durch die
Option ”Minimale Serverauswahl
(Textmodus)” möglich. Frei nach
den Bedürfnissen der Anwendung
ist der konfigurierbare Punkt Partitionierung. Hier muss bedacht
werden, wie groß die zu verarbeiAbbildung 3: Installations-Auswahl
tenden Daten sind und wie diese
4
2. Einrichtung der virtuellen Maschine
unter den Hadoop-Clustern aufgeteilt werden.
Im Menü der vorinstallierten Software sollte unter der Rubrik Entwicklung Grundlegende Entwicklungssoftware und Java-Entwicklung ausgewählt werden, damit
bereits Java fertig installiert vorliegt.
Abbildung 4: Softwarepakete
5
2. Einrichtung der virtuellen Maschine
Die Firewall muss für den späteren Betrieb von Hadoop deaktiviert werden und
SSH kann gleich mit mitinstalliert werden.
Abbildung 5: Sicherheitseinstellungen
Nach dem Booten der VM kann ein zweckmäßiger Host- und Domänenname eingegeben werden. Für den Anfang reicht es vollkommen, einen Master-Host und nbeliebige Slave-Hosts zu erstellen. Von der Grundinstallation unterscheiden sich
diese nicht, sodass es möglich ist, nach der Installation von Hadoop und Mahout
die VM zu clonen und nachträglich die Hostnamen und Netzwerkeinstellungen
entsprechend neu zu konfigurieren.
Nach der Installation von OpenSuSe sollten die benötigten Programme und gegebenenfalls Komfortfunktionen über YaST installiert werden. Es empfehlen sich folgende Programme: man, man-pages, vim, und vim-enhanced.
Im letzten Schritt vor der eigentlichen Installation von Mahout und Hadoop sollte
die .bashrc angepasst werden. Damit dies möglich wird, muss die Datei zum richtigen Ort im Dateisystem kopiert werden: „cp /etc/skel/.bashrc ~“. Diese Konfigurationsdatei benötigen die Benutzer, die mit Mahout und Hadoop arbeiten möchten.
Die Tilde entspricht dem Homeverzeichnis des aktuellen Benutzers.
Folgende Variablen müssen - sofern nicht bereits vorhanden - in der .bashrc ergänzt werden (vi ~/.bashrc):
export HADOOP_HOME=</opt/hadoop-0.20.203.0>
export HADOOP=$HADOOP_HOME/bin
export HADOOP_CONF_DIR=</opt/hadoop-0.20.203.0/conf>
export MAHOUT_HOME=</opt/mahout-distribution-0.6>
export MAHOUT=$MAHOUT_HOME/bin
export PATH=$HADOOP:$MAHOUT:$PATH
Auf die korrekte Schreibweise ist zu achten, damit Mahout und Hadoop richtig
funktionieren. Die Kleiner- und Größerzeichen (<,>) dienen lediglich als Platzhalter
6
2. Einrichtung der virtuellen Maschine
für den Ort, wo Hadoop und Mahout entpackt wurden. Mit Hilfe der Anpassung der
.bashrc werden Mahout und Hadoop an jedem beliebigen Ort im Dateisystem innerhalb der Konsole aufrufbar. Der Parameter HADOOP_CONF_DIR gibt das
Konfigurationsverzeichnis für Hadoop an, welches von Mahout im späteren Betrieb benötigt wird.
Der Betrieb von Hadoop ist unter einem Root-Nutzer zurzeit nicht möglich. Es
muss also ein Benutzer angelegt werden, der später Hadoop und Mahout ausführen soll. Dabei muss der Schritt mit der Anpassung der Konfigurationsdatei
.bashrc wie oben erwähnt wiederholt werden.
7
2. Einrichtung der virtuellen Maschine
2.1.1
Netzwerkkonfiguration
An dieser Stelle wird die Netzwerkkonfiguration für die erfolgreiche Einrichtung der
Testumgebung beschrieben.
Abbildung 6: VM-Netzwerkkonfiguration
Die lokale Maschine und die VMs sollten im gleichen Subnetz liegen, was das Aufrufen der Weboberflächen des JobTrackers und TaskTrackers erleichtert. Andernfalls muss ein entsprechendes Routing eingeführt und Firewall-Regeln angepasst
werden. Mit dem Befehl „yast“ können unter dem Menüpunkt Network Devices,
Network Settings die Einstellungen für IP-Adresse, DNS und DHCP eingerichtet
werden. Mithilfe der F4-Taste öffnet sich der Editiermodus. In Rahmen dieser Arbeit verwenden wir eine dynamische Adressverwaltung mittels DHCP. In den Konfigurationsdateien von Hadoop können wir somit feste Rechnernamen eintragen
und diese der Hosttabelle auf allen beteiligten Rechnern (/etc/hosts/) hinzufügen.
8
2. Einrichtung der virtuellen Maschine
Abbildung 7: YaST-Netzwerkeinstellungen I
Die Einstellungen im Reiter Global Options können aus der Abbildung entnommen
werden. IPv6 haben wir deaktiviert.
Abbildung 8: YaST-Netzwerkeinstellungen II
Ebenfalls auf jedem beteiligten Rechner müssen Hostname und Domäne konfiguriert werden. Dies kann im Reiter Hostname/DNS durchgeführt werden.
9
2. Einrichtung der virtuellen Maschine
Wir haben uns für die folgende Benennung entschieden:
Hostname
Domain
mahout-master
mahout
mahout-slave-01
mahout
mahout-slave-02
mahout
mahout-slave-nn…
mahout
Tabelle 1: Hostnamen
Abbildung 9: YaST-Netzwerkeinstellungen III
Die Registerkarte Routing kann ignoriert werden. Damit die verschiedenen Geräte
mittels Namensauflösung untereinander kommunizieren können, muss die Hosttabelle nun für jedes einzelne Gerät angepasst werden. Da wir uns für DHCP entschieden, kann es sein, dass wenn die Geräte in einem sich ständig verändernden
Netzwerkumfeld integriert werden, auch ständig neue IP Adressen zugewiesen
bekommen. Wenn das der Fall ist, sollten feste IP-Adressen vergeben werden.
Befinden sich die Geräte jedoch in einem „statischen“ Netzwerk, dann behalten sie
für gewöhnlich ihre IP-Adressen und es kommt nur selten zu Änderungen. So oder
so müssen entsprechend die IP-Adressen der Geräte ermittelt werden (z.B. mit
dem Befehl ifconfig) und in den Hosttabellen der Geräte mithilfe des Befehls „vi
/etc/hosts“ gespeichert werden.
10
2. Einrichtung der virtuellen Maschine
Die Zeilenstruktur sieht dabei wie folgt aus:
#IP-Adresse
Full-Qualified-Hostname
Short-Hostname
127.0.0.1
localhost
192.168.2.101
mahout-master.mahout
mahout-master
192.168.2.102
mahout-slave-01.mahout
mahout-slave-01.mahout
usw…
Tabelle 2: Hosttabelle
Ändern sich die IP-Adressen der Geräte, so müssen lediglich hier Änderungen
vorgenommen werden. Wenn alles richtig konfiguriert ist, sollten alle beteiligten
Rechner untereinander erreichbar sein. Mit dem Befehl ping kann dies überprüft
werden.
2.1.2
Hadoop
Nach Einrichtung und Konfiguration der VMs und des Netzwerks wird nun die Installation von Apache Hadoop beschrieben.
Vor dem Download und Entpacken der Datei sollte feststehen, in welchem Verzeichnis Hadoop installiert werden soll und welche Versionen von Hadoop und
Mahout verwendet werden. In dieser Arbeit kommen Hadoop 0.20.203 und
Mahout 0.6 zum Einsatz, da diese Versionen miteinander kompatibel sind.
wget http://apache.easy-webs.de/hadoop/common/stable/hadoop-0.20.203.0rc1. tar.gz
tar xvfz hadoop-0.20.203.0rc1.tar.gz
hadoop
11
2. Einrichtung der virtuellen Maschine
Hadoop sollte von jedem Ort im Dateisystem aufrufbar sein. Dabei sollte Folgendes ausgegeben werden:
Abbildung 10: Hadoop-Befehlsoptionen
Im nächsten Schritt ist zu prüfen, ob die aktuelle VM per ssh ohne Passwortnachfrage erreichbar ist. Mit folgendem Befehl kann dies geprüft werden „ssh
localhost“. Wenn localhost nicht ohne Passwort erreicht werden kann, ist Folgendes auszuführen, um die Berichtigung zum passwortfreien Zugriff zu hinterlegen:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
Es wird mit Hilfe von dem Programm ssh-keygen ein Schlüssel erzeugt und darauf
der Inhalt einer zusätzlich erzeugten Datei in der Datei authorized_keys angehängt. In dieser Datei stehen alle erlaubten Schlüssel und die dazugehörigen
Hostnamen (auch die anderer Maschinen), um auf das Gerät zuzugreifen.
12
2. Einrichtung der virtuellen Maschine
Für den Pseudo-verteilten Betrieb von Hadoop auf einem Rechner sind die Dateien core-site.xml, hdfs-site.xml und mapred-site.xml im conf Ordner von Hadoop
wie folgt anzupassen:
conf/core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
conf/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
conf/mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
Mit dem Befehl hadoop namenode -format wird das HDFS vorbereitet und in einem neuen verteilten Dateisystem formatiert. Schlussendlich kann mit dem Befehl
„start-all.sh“ überprüft werden, ob die Hadoop-Dienste ordnungsgemäß gestartet
werden konnten. Die Webinterfaces von Hadoop sollten nun erreichbar sein:
JobTracker unter <IP Adresse>:50030 und Namenode unter <IP Adresse>:50070
2.1.3
Mahout
Mahout wird ähnlich wie Hadoop installiert. Die gepackte Datei der zur Hadoop
kompatiblen Version muss dazu heruntergeladen und entpackt werden:
13
2. Einrichtung der virtuellen Maschine
wget http://apache.mirror.iphh.net//mahout/0.6/mahout-distribution-0.6.tar.gz
tar zxvf mahout-distribution-0.6.tar.gz
mahout
Dabei sollte folgende Ausgabe erscheinen.
Abbildung 11: Mahout-Befehlsoptionen
An dieser Stelle können bereits die verschiedenen nutzbaren Algorithmen von
Mahout entdeckt werden. An dieser Stelle sei bereits erwähnt, dass wenn ein Befehl in folgender Form ausgeführt wird, Mahout immer(!) ohne Hadoop im Standalone-Betrieb laufen wird: MAHOUT_LOCAL=true.
2.2
Konfiguration für voll-verteilten Clusterbetrieb
Für den Clusterbetrieb benötigen wir einen Master-Node, auf dem die Dienste
JobTracker und NameNode laufen. Auf den Slave-Nodes hingegen laufen die
Dienste DataNode und TaskTracker. Die Hadoop Entwickler empfehlen aus Performancegründen, den JobTracker-Dienst und den Namenode-Dienst auf zwei
verschiedenen Rechnern laufen zu lassen.
Für den voll-verteilten Clusterbetrieb müssen Änderungen an den Konfigurationsdateien vorgenommen werden, die im Anhang A: Konfiguration für voll-verteilten
Clusterbetrieb dokumentiert sind. Diese liegen im Ordner $HADOOP_HOME/conf/
und sind folgende: “mapred-site.xml“, „core-site.xml“, „hdfs-site.xml“ sowie „slaves“, „masters“ und die Hosts-Datei unter „/etc/hosts“. Diese Dateien müssen auf
allen VMs, unabhängig ob Master- oder Slave-Node, gleich sein. Mittels Remote
14
2. Einrichtung der virtuellen Maschine
Copy können die Konfigurationsdateien von einem System auf die Slave-Nodes
kopiert werden.
Im letzten Schritt werden per Remote Copy die Schlüssel für das passwortfreie
SSH auf die Slave-Nodes verteilt, damit der Master passwortfrei mit den Slaves
kommunizieren kann:
scp -r <Quelle> <IP SlaveNode>: <Zielverzeichnis>
Auf allen Slave-Nodes sollte die ~/.ssh/authorized_keys Datei leer sein und folgendes ausgeführt werden, um einen Schlüssel zu genieren:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
Von der Master-Node wird der Schlüssel auf alle Slave-Nodes kopiert.
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/id_dsa.pub mahout-slave-01.mahout:~/.ssh/master.pub
Auf allen Slaves wird wiederum Folgendes ausgeführt, um den Schlüssel für die
Zugriffsberichtigung bereitzustellen:
cat ~/.ssh/master.pub >> ~/.ssh/authorized_keys
2.3
Herausforderungen bei der Installation
Wenngleich die Installation von Hadoop und Mahout einfach aussieht, so sind im
Rahmen dieser Arbeit Schwierigkeiten aufgetreten, die in diesem Kapitel zusammengefasst sind. Bei Verwendung der zahlreichen Tutorials aus Internet wird ein
solides Vorwissen zum Unix-Umfeld vorausgesetzt. Wir mussten uns dieses Vorwissen erst Stück für Stück erarbeiten. Andererseits mangelt es bei den Tutorials
teils an Erläuterungen, damit die Tutorials nachvollzogen werden können oder die
Qualität der Tutorials ist ungenügend.
Vor dem ersten Problem standen wir, als wir die Minimalinstallation von OpenSuse
durchführen wollten, aber zu diesem Zeitpunkt aus bis dahin unerfindlichen Grün15
2. Einrichtung der virtuellen Maschine
den nur AutoYast Installationen mit der Vollinstallation möglich waren. Leider gibt
es keine Einstellmöglichkeiten dafür. Erst ein Workaround – dem nachträglichen
Entfernen der autoinst- Dateien – konnte das Problem beheben. Im Kapitel 2.1 ist
dies ausführlich beschrieben.
Bei der Installation von Mahout und Hadoop standen wir vor dem Problem, das
einige den Autoren der Tutorials scheinbar Trivial vorkommenden Befehle nicht
erwähnt wurden. Beispielsweise wären wir über einen Hinweis darüber sehr dankbar gewesen, dass die „HOME_“ Umgebungsvariablen eingerichtet werden müssen und wie dies durchgeführt wird.
Insbesondere die Tutorials von Mahout scheinen für erfahrene Java-Entwickler in
der Softwareentwicklung geschrieben worden zu sein, was die Einarbeitung zusätzlich erschwert hat. So werden für die Einrichtung Programme aus der Softwareentwicklung wie Maven und Ant verwendet, was für den Anfang zunächst ohne Belang, aber verwirrend ist. Bei Mahout genügt es den Ordner im Zielverzeichnis zu entpacken und die Umgebungsvariablen zu setze,
Als großes Problem stellt sich heraus, dass nicht alle Versionen von Hadoop mit
Mahout kompatibel sind, worauf leider nur in einschlägigen Foren verwiesen wird.
Die Mahout Version 0.5 ist kompatibel mit Hadoop 0.20.2 und nicht zu Hadoop
0.20.203.0. Im Gegensatz dazu ist eine Mahout Version höher als Version 0.5
kompatibel zu Hadoop 0.20.203. Die von uns genutzten Versionen Hadoop
0.20.203.0 und Mahout 0.6 sind kompatibel.
16
3. Algorithmen von Mahout
3
Algorithmen von Mahout
3.1
Clusteranalyse am Beispiel von k-Means
„Eine Clusteranalyse ist ein Instrument zum Erkennen von Strukturen in einer
Menge von Objekten.“
1
Dabei werden Objekte mit möglichst homogenen Eigen-
schaften und Merkmalen zu Gruppen zusammengefasst, sogenannten Clustern.
Diese, möglichst ähnlichen Objekte in den Clustern, sollen sich möglichst stark
von Objekten, die anderen Clustern zugeordnet werden, unterscheiden. Die Cluster dagegen verhalten sich mit ihren Eigenschaften und Merkmalen möglichst heterogen zueinander. 2
Damit eine Entscheidung über die Zuordnung der Objekte getroffen werden kann,
muss die Ähnlichkeit zwischen den Objekten ermittelt werden. Als Maß dafür verwenden wir in diesem Beispiel die euklidische Distanz. Die euklidische Distanz ist
ein Distanzmaß (auch genannt Unähnlichkeitsmaß) für metrisch skalierte Merkmale und gibt den Abstand zwischen zwei Punkten an. Neben der gerade beschriebenen einfachen euklidischen Distanz gibt es noch die quadrierte euklidische Distanz, bei der die Abstände quadriert werden. 3
Unter dem Begriff der Clusteranalyse sind verschiedene Verfahren zusammengefasst, die sich im Hinblick auf Wahl eines statistischen Distanzmaßes und eines
Gruppierungsverfahren unterscheiden. Wird die Clusteranalyse mit Mahout verwendet, so wird der zu verwendende Algorithmus zu Beginn ausgewählt. Wir verwenden in diesem Beispiel das k-Means-Verfahren, bei welchem für jedes Objekt
die euklidische Distanz oder ein anderes ausgewähltes Distanzmaß, zu allen anfänglichen Clusterzentren berechnet wird. Die einzelnen Objekte werden in das
Cluster eingeordnet, wo die Distanz zwischen dem Objekt und dem Clusterzent-
1
Hartung 2007, S 443
Vergl. Hartung 2007, S. 443
3
Vergl. Owen u.a. 2012, S. 125-128
2
17
3. Algorithmen von Mahout
rum am geringsten ist. Nach erfolgter Zuordnung werden die Clusterzentren neu
berechnet. Erst wenn eine der Abbruchbedingungen, wie das Erreichen der maximalen Anzahl der Interaktionen oder unveränderte Clusterzentren, eintritt, beendet
der Algorithmus das Zuordnen der Objekte nach den geringsten Distanzen und
Neuberechnung der Clusterzentren. Bei Mahout werden die gewünschte Anzahl
von Clustern und die maximale Anzahl von Iterationen, als Parameter angegeben.
Im Gegensatz zu fuzzy k-Means schließen sich die Cluster bei k-Means gegenseitig aus. Bei fuzzy k-Means sind hingegen überlappende Cluster möglich.4
Wenn der k-Means Algorithmus mit Mahout gestartet werden soll, so muss zu Beginn der Clusteranalyse eine SequenceFile-Datei erstellt werden, die die Vektoren
enthalten. Das in Mahout implementierte k-Means Verfahren verarbeitet Vektoren,
die Tupel darstellen und numerische Werte beinhalten. So hat beispielsweise der
Vektor (1,3 ; 2,1 ; 3,5) den Wert 3, weil er drei Werte beinhaltet. An 1. Stelle hat
der Vektor den Wert 2,1 und an 0. Stelle den Wert 1,3. Der Wert des Vektors entspricht somit der Anzahl eines Wortes in dem Text. 5
Im zweiten Schritt werden weitere SequenceFile-Dateien erstellt, die jeweils die
initialen Clusterzentren beinhalten. Anschließend wird der k-Means Algorithmus
ausgeführt. Als Parameter werden die Pfade zu den SequenceFile-Dateien für die
Vektoren und Clusterzentren, sowie der Clusteranzahl und der maximalen Iterationen. Wenn jedoch der –k Parameter für die Anzahl der Cluster nicht gesetzt wird,
dann werden zufällig genierte Punkte als Clusterzentren verwendet. 6
In dem folgenden Beispiel zur Reuters-Nachrichtensammlung verwenden wir 20
Clusterzentren. Mithilfe des Lucene Analyser Class wird ein Index aus den Ursprungsdateien erstellt, aus dem im nächsten Schritt die Vektoren erstellt werden.
4
Vergl. Owen u.a. 2012, S. 145- 150
Vergl. Owen u.a. 2012, S. 362
6
Vergl. Mahout Wiki 2011b
5
18
3. Algorithmen von Mahout
Nicht verwendet in diesem Beispiel wurde die Methode TF-IDF (term frequencyinverse document frequency), die Wörter anhand von ihrer Bedeutung gewichtet.
Somit wird vermieden, dass Füllwörter das Ergebnis beeinflussen und inhaltlich
verschiedene Texte aufgrund einer gleichen Füllwörteranzahl als gleich erkannt
werden.
Ebenfalls nicht verwendet wurde der Algorithmus Latent Dirichlet allocation (LDA),
mit welchem gleiche Wörter mit verschiedenen Bedeutungen (z.B. Bank) unterschieden werden können.7
7
Vergl. Mahout Wiki 2011c
19
3. Algorithmen von Mahout
3.1.1
Beispiel k-Means Verfahren mit Reuters Nachrichtensammlung
Für die Clusteranalyse mit k-Means verwenden wir die Reuters Nachrichtensammlung Reuters-21568, die in 22 XML-ähnlichen Dateien im SGML Format vorliegen und insgesamt 26,3 MB groß sind. Bis auf die letzte Datei beinhaltet jede der Dateien 1000 Dokumente. In der letzten Datei sind nur 567 Dokumente.
Befehle
Beschreibung
wget http://kdd.ics.uci.edu/databases/reuters21578/reuters21578.tar.gz
Download der Beispieldaten
tar xzvf reuters 21578.tar.gz
Entpacken der Beispieldaten
mahout org.apache.lucene.benchmark.utils.ExtractReuters
$MAHOUT_HOME/input/kmeans (<- Ordner wo reuters entpackt wurde)
$MAHOUT_HOME/input/kmeans/reuters (<- Ordner wo Lucene Index erstellt wird)
Umwandlung der Daten in einen Lucene Index
MAHOUT_LOCAL=true mahout seqdirectory
--input $MAHOUT_HOME/input/kmeans/reuters
--output $MAHOUT_HOME/input/kmeans/seqdir/ -c UTF-8 -chunk 5
Beispieldaten im SequenceFile-Format speichern, wobei der Zusatz Mahout_Local= True angibt, dass
Mahout im Standalone-Modus arbeitet.
MAHOUT_LOCAL=true mahout seq2sparse
--input $MAHOUT_HOME/input/kmeans/seqdir/
--output $MAHOUT_HOME/input/kmeans/seq2sparse/
Konvertierung der Daten in Vektoren
hadoop fs -put $MAHOUT_HOME/input/kmeans/seq2sparse/tfidf-vectors
/hadoop/kmeans/vectors/
Vektoren ins Hadoop Dateisystem schreiben
20
3. Algorithmen von Mahout
mahout kmeans
--input /hadoop/kmeans/vectors/
--output /hadoop/kmeans/output/
-k 20 --maxIter 10 -c /hadoop/kmeans/clusters
k-Means Algorithmus ausführen
-c wird von -k überschrieben, normalerweise dient -c
der manuellen Angabe von Clustern, -k erzeugt mit Hilfe eines Randomseeds zufällige initiale Cluster)
mahout clusterdump
–dt sequencefile –d /hadoop/kmeans/vectors/dictionary.file-*
-s /hadoop/kmeans/output/clusters-19 –b 10 –n 10
Ergebnis für Cluster 19 auf der Konsole darstellen, indem die Dimensionen der Vektoren in Text umgewandelt werden.
Tabelle 3: Durchführung k-Means
21
3. Algorithmen von Mahout
3.1.2
Ergebnisse der k-Means Verarbeitung
Die k-Means Verarbeitung wurde von uns mit einer verschiedenen Anzahl von
Slaves-Nodes drei Mal ausgeführt. Die Dauer der Verarbeitung ist im Folgenden
tabellarisch dargestellt. Beim ersten Durchlauf verwendeten wir eine Slave-Node,
wobei auf dem Master ebenfalls ein Slave lief. Im zweiten Durchlauf erhöhten wir
die Anzahl der Slaves auf sechs, beim letzten Durchlauf auf 18 Slaves.
Anzahl
Anzahl
Slaves
Master
1(+1)
6
18
1
1
1
k-Means
4,46 min
3,32 min
6,53 min
Tabelle 4: Ergebnis k-Means
Während sich die Dauer der Verarbeitung von der Erhöhung von zwei Slaves auf
sechs Slaves um mehr als eine Minute reduzierte, verlängerte sich die Durchlaufzeit bei der Verwendung von 18 Slaves deutlich. Dies lässt sich damit begründen,
dass 18 Slaves überdimensioniert sind für die Verarbeitung der ursprünglich insgesamt 26,3 MB großen 22 Daten.
22
3. Algorithmen von Mahout
3.2
Klassifikation am Beispiel von Bayes
Die Klassifikation dient dazu Objekte anhand von Merkmalen in bestimmte Kategorien einzuordnen. Es handelt sich hierbei um eine vereinfachte Form der Entscheidungsfindung, die auf bestimmte Fragen die richtigen Antworten geben soll.8
Im Allgemeinen wird bei Mahout in zwei Phasen unterschieden; die Erstellung eines Modells durch einen Lernalgorithmus und das Nutzen des Models, um neue
Daten den Kategorien zu zuordnen.9
Abbildung 12: Arbeitsweise eines Klassifikator-Systems aus Owen u.a. 2012,
S. 233
In der Abbildung wird der grundsätzliche Aufbau der Verarbeitung eines Klassifizierungssystems dargestellt. Die erste Phase, d.h. der obere Weg, zeigt das Training in dem Klassifizierungsprozess, während der untere Weg, die zweite Phase,
neue Beispiele mit Hilfe des Klassifizierungsmodells den Kategorien zuordnet.
Dabei ist die Prädiktor- Variable (predictor) die unabhängige Variable und Einflussgröße. Die Zielvariable (target variable) ist die abhängige Variable und wird
8
9
Vergl. Owen u.a. 2012, S. 225
Vergl. Owen u.a. 2012, S. 232
23
3. Algorithmen von Mahout
für das Training des Models in Phase 1 verwendet und in Phase 2 mit dem erstellten Model ermittelt.10
Der in Mahout implementierte naive Bayes Algorithmus basiert auf die Bayes’sche
Entscheidungsregel und funktioniert mit mathematischen Wahrscheinlichkeiten.
Für die Berechnung von mathematischen Wahrscheinlichkeiten wird das BayesTheorem, der Berechnungsvorschrift für die bedingten Wahrscheinlichkeiten, verwendet. 11
In der Praxis eignet sich der Algorithmus um beispielsweise für neue erstellte Artikel auf Wikipedia sogleich geeignete Kategorien auf Grundlage der bisher gelernten Artikel vorzuschlagen. Dazu wird in der Trainingsphase der Inhalt der Daten in
Vektoren umgewandelt, die jeweils Pakete von mehreren Wörtern beinhalten. Neben dem Bayes-Algorithmus gibt es noch weitere, die je nach Größe der Daten
und der Charakteristika der Daten zum Einsatz kommen. Bayes eignet sich insbesondere für die parallele Verarbeitung von großen textbasierten Daten. Die Methode, um die Daten als Vektoren zu klassifizieren, unterscheidet sich in Abhängigkeit zum gewählten Verfahren der Klassifikation.12
In dem ersten der beiden folgenden Beispiele verwenden wir eine Sammlung von
geschätzten Newsgroup Dokumenten, um zunächst ein erstelltes Modell zu trainieren und anschließend zu testen. Im zweiten Beispiel verwenden wir Daten von
Wikipedia für die Klassifizierung neuer Artikel. Für beide Beispiele verwenden wir
von Mahout mitgelieferte Programme für die Aufbereitung der Daten.
10
Vergl. Owen u.a. 2012, S. 232 f.
Vergl. Backhaus u.a. 2011 S. 218 ff.
12
Vergl. Owen u.a. 2012, S. 274 f.
11
24
3. Algorithmen von Mahout
3.2.1
Beispiel Bayes mit 20 Newsgroups Beispieldaten
Die Beispieldaten von „20 Newsgroups“ sind eine Sammlung von geschätzten 20.000 Newsgroup Dokumenten, die nach 20 verschiedenen Newsgroups gruppiert und insgesamt 34,1 MB groß sind. Mithilfe der Klassifizierung nach Bayes werden wir ein Modell
erstellen, welches ein neues Dokument in eine der 20 Newsgroups einordnen kann.
Befehle
Beschreibung
wget http://people.csail.mit.edu/jrennie/20Newsgroups/20newsbydate.tar.gz
Download der Beispieldaten
tar xzfv 20news-bydate.tar.gz
Entpacken der Beispieldaten
MAHOUT_LOCAL=true mahout
org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups -p
$MAHOUT_HOME/input/bayes/20news-bydate-train -o
$MAHOUT_HOME/input/bayes/bayes-train-input -a
org.apache.mahout.vectorizer.DefaultAnalyzer -c UTF-8
Konvertierung der Test- und Trainingsdaten: Anstelle des im Buch
Mahout in Action angegebenen Text-Analyzer-Algorithmus “StandardAnalyzer”, funktionierte bei uns nur der “DefaultAnalyzer” Algorithmus.
hadoop fs -put $MAHOUT_HOME/input/bayes/bayes-train-input
/hadoop/bayes/bayes-train-input
Daten ins hadoop Dateisystem laden
hadoop fs -put $MAHOUT_HOME/input/bayes/bayes-test-input
/hadoop/bayes/bayes-test-input
Input ins Hadoop Dateisystem schreiben
mahout trainclassifier --input /hadoop/bayes/bayes-train-input/ --output
/hadoop/bayes/bayes-model/ -type bayes -ng 1 -source hdfs
Trainingsmodell erzeugen
25
3. Algorithmen von Mahout
mahout testclassifier -m /hadoop/bayes/bayes-model/ -d
/hadoop/bayes/bayes-test-input/ -type bayes -ng 1 -source hdfs
Test des zuvor erstellten Modelles: Als Ausgabe wird bei Erfolg eine
Matrix mit allen richtigen und falschen Klassifikationen angezeigt.
Tabelle 5: Durchführung Bayes 20 Newsgroups
26
3. Algorithmen von Mahout
3.2.2
Beispiel Bayes mit Wikipedia Daten
Für dieses Beispiel werden Wikipedia xml-Dateien vom 04. April 2012 verwendet, die gepackt 7,77 GB und entpackt 34,8 GB groß
sind. Mit Mahout wird ein Programm mitgeliefert, das die Wikipedia-Daten für die Klassifikation aufbereitet. Dafür werden die Daten
in Teilpakete, sogenannte Chunks unterteilt. Diese Chunks werden im späteren Verlauf nach Nationen getrennt und dienen der
Klassifizierung als Grundlage. Diese ist trainiert vorherzusagen, zu welcher Nation ein zuvor ungesehener Artikel zugeordnet werden könnte.
Befehle
Beschreibung
wget http://download.wikimedia.org/enwiki/latest/enwiki-latest-pagesarticles.xml.bz2
Datei herunterladen und ablegen unter
$MAHOUT_HOME/input/bayes/wiki
unzip enwiki-latest-pages-articles.xml.bz2
Entpacken, um die xml-Datei zu erhalten
mahout wikipediaXMLSplitter
-d $MAHOUT_HOME/input/bayes/wiki/enwiki-latest-pages-articles10.xml
-o /hadoop/bayes/wiki/chunks -c 64
Xml-Datei in Teilpakete aufteilen: Von Vorteil ist es ein Backup
von der xml-Datei zu erstellen, weil sie im weiteren Verlauf versehentlich gelöscht werden kann.
mahout wikipediaDataSetCreator
-i /hadoop/bayes/wiki/chunks -o /hadoop/bayes/wiki/input
-c $MAHOUT_HOME/input/bayes/wiki/country.txt
Im nächsten Schritt wird die Wikipedia xml-Datei basierend auf
eine Datei, die alle Nationen beinhaltet, in einzelne Dateien
aufgeteilt.
wget http://svn.apache.org/viewvc/mahout/tags/mahout-0.6/examples/
src/test/resources/country.txt
Sollte die country.txt Dateien nicht vorhanden sein, kann sie
von hier bezogen werden.
27
3. Algorithmen von Mahout
hadoop fs -ls /hadoop/bayes/wiki/input
Überprüfung der Erzeugung der Input-Datei
mahout trainclassifier
-i /hadoop/bayes/wiki/input
-o /hadoop/bayes/wiki/model
Training der Klassifizierung: Die Modelldateien werden in dem
gerade angegebenen Model-Ordner im HDFS bereitgestellt.
mahout testclassifier -m /hadoop/bayes/wiki/model
-d /hadoop/bayes/wiki/input
Im letzten Schritt kann das erstellte Modell getestet werden.
Tabelle 6: Durchführung Bayes Wikipedia
Der letzte Schritt, dem Testen des trainierten Modells, brach leider bei jedem Versuch mit Fehlern ab. Der Fehler lautete: „Task attempt_201204182055_0001_m_000001_0 failed to report status for 601 seconds. Killing!“. Die Ursache dafür fanden wir leider
nicht. Die Vergrößerung der Heap-Size für Map Instanzen und auch für Reduce Instanzen zeigten keine Veränderung.
Auch die io.sort Parameter ebenfalls in der Hadoop Konfiguration veränderte nichts. Wir vermuteten die Fehlerursache im Modell und probierten die gesamte Verarbeitung mit dem „neuen“ Bayes Algorithmus aus: TrainNaiveBayes
und TestNaiveBayes. 13 Auch hier stießen wir auf die gleichen Probleme in der Umsetzung.
13
Wikipedia Bayes Tutorial verwendet scheinbar einen alten Bayes Algorithmus:
http://mail-archives.apache.org/mod_mbox/mahout-user/201112.mbox/%3CCAK9GPcTLDNZt-ACG9oEn5TL=p9DwjNd6JttpkoBeFj5tY6cv-Q@mail.gmail.com%3E
28
3. Algorithmen von Mahout
3.2.3
Ergebnisse der Bayes Beispiele
In diesem Abschnitt sind die erzielten Ergebnisse der zwei beschriebenen Beispiele mit dem Bayes Algorithmus beschrieben.
Anzahl
Anzahl
Slaves
Master
1(+1)
6
18
1
1
1
BayesTrain
BayesTest
3,90 min
3,30 min
4,10 min
1,28 min
1,10 min
2,04 min
Tabelle 7: Ergebnis Bayes 20Newsgroups
Das Ergebnis des Beispiels mit den Newsgroups zeigt, dass die Verarbeitungszeit
mit sechs Slaves sinkt, aber mit 18 Slaves wieder ansteigt. Die Verwendung von
18 Slaves ist für die Dateigröße der Newsgroups-Dateien überdimensioniert, weshalb die Verarbeitungszeit wieder steigt.
Anzahl
Anzahl
Slaves
Master
1
1
18
1
1
1
xmlSplit
DataSetCreator BayesTrain
BayesTest
17,91 min
20,23 min
14,72 min
210,21 min
222,31 min
45,06 min
-
338,34 min
342,42 min
65,30 min
Tabelle 8: Ergebnis Bayes Wikipedia
Das Beispiel mit den Wikipedia-Daten wählten wir bewusst aus, damit uns wenigstens bei einer Verarbeitung großvolumige Daten zu Verfügung stehen. Weil die
Verarbeitungsdauern aller Teilschritte voneinander variierten, haben wir diese in
der Ergebnistabelle notiert. Erwartungsgemäß sank die Verarbeitungsdauer im
voll-verteilten Clusterbetrieb mit 18 Slaves. Die Verarbeitung führten wir zweimal
mit nur einem Master-Node und einer Slave-Node auf einem Rechner aus. Bemerkenswert war die Dauer von 58,84 Minuten im Schritt xmlSplit mit 17 Slaves
und der konfigurierten dfs.replication = 3 – dem empfohlenen Standardwert. Die
Dauer von fast einer Stunde lässt sich damit begründen, dass die Daten in dem
verteilten Dateisystem von Hadoop in dreifacher Ausführung auf jeweils verschiedenen Rechnern bereitgestellt wurden.
29
3. Algorithmen von Mahout
3.3
Empfehlungen am Beispiel von Recommender
Dieses Kapitel beinhaltet die Nutzung von Recommendern in Mahout, zunächst
werden diese allgemein erläutert, im Anschluss wird dann näher auf die von
Mahout genutzten Algorithmen eingegangen.
Wenn wir von Recommendern (Empfehlung) reden sind Algorithmen oder Systeme gemeint, die Nutzern anhand von existierenden Objekten andere Objekte empfehlen, die wiederum für den Nutzer möglichst interessant sein sollen. Amazon
empfiehlt so z.B. mit ihrer „Kunden die diesen Artikel gekauft haben, kauften auch“
Funktion. Recommender können hauptsächlich in zwei große Kategorien unterteilt
werden, nutzerbasierte (user based) und gegenstandsbasierte (item based)
Recommender14. Mahout unterstützt dabei beide Kategorien. Zudem gibt es noch
inhaltsbasierte Algorithmen, auf die hier nicht mehr näher eingegangen wird, da
diese in Mahout zumindest derzeit keine Anwendung finden. Mahout bedient sich
der zuerst genannten Algorithmen aus dem Grund, dass sie objektübergreifend
angewendet werden können. Während inhaltsbasierte Recommender nur Objekte
anhand von Präferenzeigenschaften empfehlen, kommen dabei meist nur sehr
ähnliche Objekte als Empfehlung im Ergebnis heraus. So kann es passieren, dass
ein Nutzer der Bücher über Gartenarbeit kauft, z.B. keine Gartenwerkzeuge als
Empfehlung, dafür aber Bücher anderer Autoren über Gartenarbeit erhält. Dieses
Problem wird umso gravierender, wenn es gilt, komplexe Objekte zu empfehlen.
Nutzer- und gegenstandsbasierte Recommendern hingegen ermöglichen es Bücher, Filme, CDs, Blumen usw. anzubieten. Die Ergebnismenge ist wesentlich
vielseitiger. Bei allen Recommendern wird immer eine Ähnlichkeit, bzw. Distanz
zwischen den Objekten errechnet durch die Empfehlungen entschieden werden.
Es wird also versucht, eine Vorhersage zu treffen, welchen Gegenstand einem
Nutzer gefallen könnte. Als Nächstes wird näher auf die Nutzerbasierten Recommender eingegangen, da dieser nicht im Beispiel genutzt wurde.
14
Vergl. Owen u.a. 2012, S. 41
30
3. Algorithmen von Mahout
3.3.1
Nutzerbasierte Recommender
Nutzerbasierte Recommender vergleichen die Ähnlichkeit zwischen Nutzern und
funktionieren grob gesagt wie folgt:
1. Finde ähnlichen Nutzer
2. Welche Gegenstände sind von Interesse für ähnliche Nutzer
3. Gegenstände dieser Nutzer werden zu möglichen Kandidaten
4. Erstelle gewichtete Werte an Hand der Ähnlichkeit der Nutzer für die Kandidatengegenstände15
Mahout benötigt für Recommender allgemein nur vier wichtige Angaben, ein Datenmodel (DataModel), sowie eine Nutzer-Nutzer Ähnlichkeitsmetrik (UserSimilarity), eine Nutzer Nachbarschaftsdefinition (UserNeighborhood) und letztendlich
eine Recommender Engine (Recommender).16 Das Datenmodel dient dem einladen von Dateien, die Dateien die mit Mahout eingelesen werden sollen, müssen
dabei je nach Algorithmus einem unterschiedlichen Aufbau entsprechen. Bei
Recommendern sollte der Aufbau des Inputs wie folgt aussehen:17
(NutzerID,GegenstandsID,Wert)
1,101,5.0
1,102,3.0
2,101,2.0
Der Wert ist die jeweilige Bewertung des Gegenstands durch den Nutzer, das Datenformat entspricht einer .csv Datei.
UserSimilarity gibt die Methode an, wie die Ähnlichkeiten/Distanzen zwischen den
Nutzern berechnet werden sollen, hier gibt es mehrere Möglichkeiten: Pearson
15
Vergl. Owen u.a. 2012, S. 44
Vergl. Owen u.a. 2012, S. 45
17
Vergl. Owen u.a. 2012, S. 15
16
31
3. Algorithmen von Mahout
(mit und ohne Gewichtung), Euklidische Distanz, Kosinus, Spearman, Tanimoto,
Log-Likelihood. Jeder dieser Distanz- und Ähnlichkeitsmaße hat seine Vor- und
Nachteile und sollte je nach Anwendungsfall festgelegt werden, sie unterscheiden
sich sowohl in Performanz als auch zur Behandlung von fehlenden Werten und
haben damit auch eine verschiedene Beurteilungsqualität bezüglich der späteren
Empfehlung. Mahout bietet einen RecommenderEvaluator an mit dem es möglich
ist den genutzten Recommender zu bewerten. Der Evaluator testet hierbei mit einem Teildatensatz der vorhandenen Daten und bewertet das Ergebnis anhand der
gesamten vorliegenden Daten.18 Das Ergebnis kann dabei variieren, ausschlaggebend sind Datenstruktur, Größe und fehlende Werte.
Die UserNeighborhood bestimmt wie viele Datensätze um einen bestimmten Nutzer näher untersucht werden. Hierbei gibt es zwei unterschiedliche Methoden,
zum einen Fixed-size neighborhoods.19 Bei diesem Algorithmus muss eine Zahl
festgelegt werden, die aussagt wie viele Nutzer als Kandidaten für die Untersuchung in Frage kommen. Haben wir beispielsweise 100 Datensätze und legen für
UserNeighborhood den Wert 10 fest, wird der Recommender die 10 zehn ähnlichsten Nutzer für einen oder mehrere Nutzer auswerten. Ein Nachteil dieser Methode ist, dass beispielsweise fünf weitere Nutzer noch sehr ähnlich sein könnten
und dabei wegfallen.
Zum anderen gibt es noch treshold-based neighborhoods, diese bestimmen einen
Bereich um den Nutzer, für den es Empfehlungen geben soll, der begrenzt, wie
ähnlich die zu untersuchenden anderen Nutzer sein sollen 20. Dies hat den Vorteil,
dass Nutzer nicht aus der Bewertung herausfallen, die bis zu einem gewissen
Grad ähnlich sind.
18
Vergl. Owen u.a. 2012, S. 18
Vergl. Owen u.a. 2012, S. 47
20
Vergl. Owen u.a. 2012, S. 47
19
32
3. Algorithmen von Mahout
Die RecommenderEngine bestimmt welcher Recommender verwendet werden
soll, z.B. ein besonderer user- oder itembased Recommender.
3.3.2
Gegenstandsbasierte Recommender
Was beim ersten Blick auf den itembased Recommender auffällt ist, dass er keine
Angaben zur neighborhood benötigt, da der Algorithmus ja bereits nur eine begrenzte Anzahl an Objekten zur Kontrolle hat, nämlich die Gegenstände, für die
sich ein Nutzer interessiert. Im Gegensatz zum Nutzerbasierten Recommender
wird hier überprüft, welche Gegenstände ein Nutzer hat und wie er Gegenstände
bewertet. Mit diesen Informationen wird dann eine Voraussage getroffen, an welchem Gegenstand der Nutzer noch interessiert sein könnte, hierbei werden nicht
die Eigenschaften der Gegenstände bewertet.21
Bei Mahout wird eine Grauwertematrix (Co-occurence matrix) für Gegenstände
angelegt, die gepaart bei Nutzern auftreten, je öfter diese gepaart auftreten, desto
ähnlicher sind sie. Dieser Wert wird mit einem Distanzmaß ermittelt. Mit diesen
Werten können wir dann eine Bewertung eines Gegenstands ermitteln, den der
Nutzer noch nicht gesehen hat, anhand der Bewertungen anderer Nutzer, die diese bereits bewertet haben. Dies geschieht, in dem der Nutzer-Vektor mit der
Grauzonenmatrix multipliziert wird. Dadurch wird eine Bewertung für jeden Gegenstand für einen Nutzer generiert und es können die Besten Bewertungen als
Empfehlung genutzt werden.22
Im Code gibt es hier einen kleinen Unterschied zur nutzerbasierten Variante, hier
wird nicht die UserSimilarity sondern die ItemSimilarity verwendet, wobei diese
Implementierung über weniger Distanz- und Ähnlichkeitsmaße verfügt, die wichtigsten sind aber dabei: Pearson (mit/ohne Gewichtung), Euklidische Distanz
(mit/ohne Gewichtung), Tanimoto und Log-Likelihood. Wie bereits bei den nutzer-
21
22
Vergl. Cloudera 2011
Vergl. Cloudera 2011
33
3. Algorithmen von Mahout
basierten Recommendern muss auch hier experimentiert werden, welches Maß
sich am ehesten für die jeweilige Aufgabe eignet. Bei der Umsetzung in Mahout
haben wir uns für einen gegenstandsbasierten Recommender entschieden, da es
vorteilhaft ist diese einzusetzen wenn es in dem vorliegendem Datensatz im Verhältnis mehr Nutzer als Gegenstände gibt. Zusätzlich gibt es normalerweise weniger Veränderungen bei den Gegenständen als bei den Nutzern. Bei dem vorliegenden Datensatz treffen beide Punkte zu.23
23
Vergl. Cloudera 2011
34
3. Algorithmen von Mahout
3.3.3
Beispiel Recommender mit Grouplens Datenbank für Filmbewertungen
Wie bereits in Kapitel 3.3.2 erwähnt haben wir uns hier für einen itembased Recommender entschieden. Die verwendete Filmbewertungsdatenbank aus Jahr 2000 ist komprimiert 5,72 MB groß und wird von dem Forschungsprojekt Grouplens der University of
Minnesota bereitgestellt. Die entpackte ratings.dat Datei ist 23,4 MB groß und enthält 1.000.209 Bewertungen von anonymisierten
6040 MovieLens Nutzern und über 3900 Filme.
Befehle
Beschreibung
wget http://www.grouplens.org/system/files/ml-1m.zip
Download der Beispieldaten
unzip ml-1m.zip
Entpacken der Beispieldaten
tr -s ':' ',' < ratings.dat | cut -f1-3 -d, > ratings.csv
Datei für das Datenmodell umschreiben: Ersetzt „:“
Trennzeichen mit „,“ und übernimmt nur die ersten 3
Spalten in die ratings.csv.
hadoop fs -put $MAHOUT_HOME/input/recommender/ratings.csv
/hadoop/recommender/input/
Input in das Hadoop Filesystem schreiben
vi userToRate.txt
Datei erstellen, in der die Nutzer enthalten sind, die eine Empfehlung enthalten sollen. Ein Nutzer wird pro
Zeile eingetragen, z.B. 6040.
35
3. Algorithmen von Mahout
hadoop fs -put $MAHOUT_HOME/input/recommender/ml-1m/userToRate.txt
/hadoop/recommender/userToRate/
Datei mit Nutzern, die bewertet werden sollen, in das
Hadoop Filesystem schreiben
mahout recommenditembased
--input /hadoop/recommender/input
--output hadoop/recommender/output/
--tempDir /hadoop/recommender/tmp/
--usersFile /hadoop/recommender/userToRate/
--similarityClassname SIMILARITY_EUCLIDEAN_DISTANCE
Im letzten Schritt muss nur noch Recommender mit den
jeweiligen Parametern ausgeführt werden. Der Parameter Recommenditembased gibt an, dass ein gegenstandsbasierter Algorithmus genutzt werden soll.
usersFile gibt an, wo die Datei mit den zu bewertenden
Nutzern liegt. similarityClassname gibt an welches Distanzmaß genutzt werden soll.
hadoop fs -cat /hadoop/recommender/output/part-r-00000
Ergebnisausgabe aus dem Hadoop Filesystem
Tabelle 9: Durchführung Recommender
36
3. Algorithmen von Mahout
3.3.4
Ergebnisse der Recommender Verarbeitung
Die Verarbeitung erzielte folgende Ergebnisse, die wir nach der Anzahl der verwendeten Slave- und Master- Nodes und der jeweiligen Algorithmen aufgelistet
haben.
Anzahl
Anzahl
Slaves
Master
1(+1)
6
18
1
1
1
Recommender
8,46 min
8,66 min
9,40 min
Tabelle 10: Ergebnis Recommender
Auffällig ist, dass der Recommender Algorithmus bei einer steigenden Anzahl von
Nodes mehr Zeit für die Bearbeitung benötigte. Wie schon bei den vorangegangenen Beispielen, hängt dies mit der Größe der verwendeten Daten zusammen.
37
3. Algorithmen von Mahout
3.4
Herausforderungen im Betrieb
Die Verwendung der Algorithmen im Hadoop-Cluster stellte uns vor ungeahnte
Probleme, die wir in diesem Abschnitt erläutert sind. Wenn Probleme auftreten, so
empfiehlt es sich generell die Log-Dateien im hadoop/logs Ordner zu studieren.
Tritt folgende Fehlermeldung ein, so kann es sein, dass Java 1.6.0.x OpenJDK
Probleme bereitet.24
java.net.SocketException: Protocol not available
INFO hdfs.DFSClient: Exception in createBlockOutputStream java.net.SocketException: Protocol not available
INFO hdfs.DFSClient: Abandoning block blk_5533397873275401028_1010
Abhilfe schafft nur ein anderes JDK zu verwenden:
sudo zypper remove java-1_6_0-openjdk*
Ein nicht selten auftretender Fehler ist dieser:
Hadoop Error: “could only be replicated to 0 nodes, instead of 1?
Das Problem wird meist durch das Löschen aller temporären Dateien, die für das
verteilte Hadoop Dateisystem verwendet werden, behoben. Nach dem Stoppen
von Hadoop ist der in der Konfiguration angegebene Ordner mit dem Benutzer
root wie folgt zu leeren:25
rm -f -r /tmp/hadoop*
24
25
Vergl. Apache Bugtracker (2010)
Vergl. Mail-Archive 2009
38
3. Algorithmen von Mahout
Anschließend muss die Namenode neu formatiert werden:
hadoop namenode –format
Ein weiteres Problem kann auftreten, wenn die Hadoop-Dienste mit start-all.sh
gestartet wurden und der Nutzer kurz darauf Dateien oder Ordner in das HadoopFile-System schreiben möchte. Hadoop startet in einem sogenannten „Safe“ Modus, der das Dateisystem vor Änderungen schützen soll. Teilweise blieb das System bis zu 5 Minuten in diesem Modus. Um abzurufen, in welchem Status sich das
System befindet, kann dieser mit Hilfe von „hadoop dfsadmin –safemode get“ abgefragt werden. Ist der Safe-Modus aktiv, so kann er mit „hadoop dfsadmin –
safemode leave“ beendet werden.
Sollte die Ausgabe von Mahout, wenn der Map/Reduce Algorithmus ausgeführt
wird, für längere Zeit unverändert sein (ist nach Dateigröße abzuschätzen) oder
sollte die Angabe für map auf 100 Prozent verharren, so empfiehlt es sich die
Logdateien auf der Master-Node anzuschauen. Aus der Namenode-Logdatei
könnte hervorgehen, dass für den Reduce-Algorithmus nicht genug Speicherplatz
zur Verfügung steht. Aus der Weboberfläche geht dies nicht hervor.
Nicht abschließend begründen können wir den aufgetretenen Fehler „Incompatible
namespaceIDs“, der aus den Datanode-Logdateien der Slave-Nodes hervorgeht.
Das Problem konnte wir beheben, indem wir analog wie beim Fehler „replicated to
0 nodes, instead of 1“ vorgegangen sind. Zusätzlich haben wir anschließend alle
beteiligten VMs neugestartet.26
Allerdings ist auf den zur Verfügung stehenden Arbeitsspeicher des Rechners für
die VM zu achten, denn wenn nicht genug Arbeitsspeicher für die Bearbeitung zur
Verfügung steht, bricht die Verarbeitung des jeweiligen Arbeitspaketes des be
26
Brandeis University 2008
39
3. Algorithmen von Mahout
troffenen Rechners ab. Die Fehler lautet: „java.lang.OutOfMemoryError: Java heap space“.
Sollte
beim
Starten
der
Namenode
die
Exception
auftreten:
java.lang.NullPointerException, so wurde die Namenode nicht ordentlich beendet,
sodass nur durch eine Formatierung des DFS Abhilfe geschaffen werden kann.
Alle bisherigen Daten gehen somit leider verloren.
Ein weiteres Problem bei der Ausführung der Algorithmen war die Aktualität, bzw.
Richtigkeit der Tutorials von der Mahout- Website. Vorgefertigte Shell-Skripte, die
im examples- Ordner in Mahout mitgeliefert werden oder über die Website bezogen werden können, funktionierten leider meist nicht. Trotzdem waren die Beispielskripte hilfreicher als die Tutorials, um ein Grundverständnis zu erlangen und
die Algorithmen lauffähig zu bekommen. Wir vermuten, dass die Skripte und Tutorials nicht aktuell sind, bzw. sich auf andere Versionen von Mahout beziehen oder
selbst nicht mehr aktualisiert wurden.
Um die Brisanz zu verdeutlichen, wird nachfolgend ein Screenshot vom Tutorial
für k-Means originalgetreu abgebildet:
Abbildung 13: Mahout-Wiki, k-Means Tutorial
Das Shellskript, welches auf dem Wort „Here“ verlinkt ist, funktionierte wie bereits
beschrieben leider nicht. Leider wird an dieser Stelle nicht darauf hingewiesen,
dass die Befehle seqdirectory und seq2sparse nicht im verteilten(distributed) Modus von Mahout (es muss also MAHOUT_LOCAL=true gesetzt werden) ausgeführt werden dürfen, da sonst die nötigen Dateien nicht, bzw. Falsch (wesentlich
kleiner) generiert werden.
40
4. Fazit
4
Fazit
Die in dieser Arbeit ausgearbeitete Einrichtung und Konfiguration eines volloitverteilten Clusterbetriebs mittels Hadoop ermöglicht die Durchführung von Analysen und Datenverarbeitungen mit Mahout. Entgegen unserer Erwartungen gestaltete sich die Einarbeitung, Einrichtung und Konfiguration wesentlich aufwendiger als erwartet. Daher können die gesammelten Erfahrungen als Grundlage für
nachfolgende Projekte sehr nützlich sein. In den beiden Kapiteln, bzgl. Herausforderungen in der Einrichtung und im Betrieb, haben wir sämtliche aufgetretenen
Probleme, Lösungen und Hilfestellungen dokumentiert. Im Praxisteil der Arbeit
sind drei Algorithmen und vier Beispiele beschrieben, sodass die Beispiele nachvollzogen und nachgestellt werden können.
Die Ergebnisse der Beispiele zeigen, dass bei größeren Datenverarbeitungen im
Gigabyte-Bereich und zunehmender Anzahl der beteiligten Slave-Nodes die Verarbeitungszeit erwartungsgemäß sinkt. Bei kleineren Daten, wie bei drei der Beispiele, steigt hingegen die Verarbeitungszeit. Um nun Verarbeitungen mit größeren Daten zu testen muss berücksichtigt werden, dass ein Vielfaches der Dateigröße als Speicherplatz bereitstehen muss. Da Datenpakete im HDFS verloren gehen können, kann die Anzahl der Kopien der Daten im HDFS in der Konfiguration
– Replikation der Blöcke - definiert werden. Beim empfohlenen Standardwert von
drei bedeutet dies, dass am Beispiel der Wikipedia Daten mit 34,8 GB nunmehr
104,4 GB an Platz im HDFS benötigt werden. Die Speicherkapazität der VMs sollte also großzügig geplant werden, denn es sollte bedacht werden, dass die Daten
auch auf einer VM bereitstehen müssen, um sie in das HDFS zu schreiben. Da
unsere VMs nur eine Speicherkapazität von 20 GB hatten, musste eine neue größere anlegt werden.
Die Arbeit mit Mahout und Hadoop wurde erschwert durch teilweise unverständliche Fehlermeldungen, die die Fehlerursache nicht benennen. Die API war uns
leider nur in den wenigsten Fällen hilfreich, weil sie nicht vollständig zu sein
scheint. Dabei erschwerten anfänglich auftretende Versionskonflikte die Suche
nach der Fehlerursache beachtlich. Sehr zeitintensiv war das mehrfach notwendi-
41
4. Fazit
ge Anpassen der Konfigurationsdateien oder Löschen der temporären Verzeichnisse auf sämtlich beteiligten VMs aufgrund von Fehlern im HDFS.
42
Literaturverzeichnis
Literaturverzeichnis
Apache
2010
Bugtracker
o.V.; Apache Bugtracker (2010): SocketException: Protocol
Abrufbar
not
im
available
Internet:
for
some
JVMs
https://issues.apache.org/jira/
browse/HDFS-1115 (letzter Zugriff 23.03.2010, 18 Uhr)
Backhaus u.a. 2011
Klaus Backhaus, Bernd Erichson, Wulff Plinke, Rolf
Weiber; Springer-Verlag (2011): Multivariate Analysemethoden – Eine anwendungsorientierte Einführung
Brandeis
2008
University o.V.; Brandeis University (2008): Hadoop Troubleshooting
Abrufbar im Internet:
http://pages.cs.brandeis.edu/~cs147a/ lab/hadooptroubleshooting/ (letzter Zugriff 31.03.2010, 18 Uhr)
Cloudera 2011
o.V.; Cloudera Blog (2011): Recommendation with
Apache Mahout
Abrufbar im Internet:
http://www.cloudera.com/blog/2011/11/recommendationwith-apache-mahout-in-cdh3/ (letzter Zugriff 18.04.2012,
12 Uhr)
Hartung 2007
Joachim Hartung, Bärbel Elpert; Oldenburg Wissenschaftsverlag (2007): Multivariate Statistik
Mahout Wiki 2010
o.V.; Mahout Wiki (2010): Wikipedia Bayes Example
Abrufbar im Internet:
https://cwiki.apache.org/MAHOUT/wikipedia-bayesexample.html (letzter Zugriff 21.03.2010, 13 Uhr)
Mahout Wiki 2011a
o.V.; Mahout Wiki (2011): Twenty Newsgroups Classification Example
Abrufbar im Internt: https://cwiki.apache.org/MAHOUT/
VI
Literaturverzeichnis
twenty-newsgroups.html
(letzter Zugriff 22.03.2010, 12 Uhr)
Mahout Wiki 2011b
o.V.; Mahout Wiki (2011): K-Means Clustering Tutorial
Abrufbar im Internet: https://cwiki.apache.org/MAHOUT
/k-means-clustering.html
(letzter Zugriff 28.03.2010, 22 Uhr)
Mahout Wiki 2011c
o.V.; Mahout Wiki (2011): Latent Dirichlet Allocation
Abrufbar im Internet:
https://cwiki.apache.org/MAHOUT/latent-dirichletallocation.html (letzter Zugriff 27.03.2010, 23 Uhr)
Mail-Archive 2009
Boyu Zhang; Mail-Archive (2009) Abrufbar im Internet:
http://www.mail-archive.com/common-user@hadoop.
apache.org/msg00407.html
(letzter Zugriff 25.03.2010, 17 Uhr)
Owen u.a. 2012
Sean Owen, Robin Anil, Ted Dunning, Ellen Friedmann;
Manning Publications Co. (2012): Mahout in Action
VII
Anhang
A
Konfiguration für voll-verteilten Clusterbetrieb
$HADOOP_HOME/conf/mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://mahout-master:9001</value>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx512m</value>
</property>
</configuration>
$HADOOP_HOME/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://mahout-master:9000/</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop-${user.name}</value>
<description>temp directory</description>
</property>
</configuration>
$HADOOP_HOME/conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.block.size</name>
<value>128000000</value>
<description>The default block size for new files.</description>
</property>
<property>
<name>dfs.permissions</name>
<value>true</value>
<description>
If "true", enable permission checking in HDFS
If "false", permission checking is turned off,
but all other behavior is unchanged
Switching from one parameter value to the other does not change the mode,
owner or group of files or directories.
</description>
</property>
</configuration>
$HADOOP_HOME/conf/slaves
mahout-slave-01
mahout-slave-02
mahout-slave-03
mahout-slave-04
mahout-slave-05
mahout-slave-06
mahout-slave-07
mahout-slave-08
mahout-slave-09
mahout-slave-11
mahout-slave-12
mahout-slave-13
mahout-slave-14
mahout-slave-15
mahout-slave-16
mahout-slave-17
mahout-slave-18
mahout-fileserver-01
/etc/hosts
#
# hosts
This file describes a number of hostname-to-address
#
mappings for the TCP/IP subsystem. It is mostly
#
used at boot time, when no name servers are running.
#
On small systems, this file can be used instead of a
#
"named" name server.
# Syntax:
#
# IP-Address Full-Qualified-Hostname Short-Hostname
#
127.0.0.1
localhost
172.22.1.21 mahout-master.mahout mahout-master
172.22.1.22 mahout-slave-01.mahout mahout-slave-01
172.22.1.23 mahout-slave-02.mahout mahout-slave-02
172.22.1.24 mahout-slave-03.mahout mahout-slave-03
172.22.1.25 mahout-slave-04.mahout mahout-slave-04
172.22.1.26 mahout-slave-05.mahout mahout-slave-05
172.22.1.27 mahout-slave-06.mahout mahout-slave-06
172.22.1.28 mahout-slave-07.mahout mahout-slave-07
172.22.1.29 mahout-slave-08.mahout mahout-slave-08
172.22.1.30 mahout-slave-09.mahout mahout-slave-09
172.22.1.42 mahout-slave-10.mahout mahout-slave-10
172.22.1.31 mahout-slave-11.mahout mahout-slave-11
172.22.1.32 mahout-slave-12.mahout mahout-slave-12
172.22.1.33 mahout-slave-13.mahout mahout-slave-13
172.22.1.34 mahout-slave-14.mahout mahout-slave-14
172.22.1.35 mahout-slave-15.mahout mahout-slave-15
172.22.1.36 mahout-slave-16.mahout mahout-slave-16
172.22.1.37 mahout-slave-17.mahout mahout-slave-17
172.22.1.38 mahout-slave-18.mahout mahout-slave-18
172.22.1.39 mahout-fileserver.mahout
mahout-fileserver
172.22.1.40 mahout-fileserver-01.mahout mahout-fileserver-01
# special IPv6 addresses
::1
localhost ipv6-localhost ipv6-loopback
fe00::0
ff00::0
ff02::1
ff02::2
ff02::3
ipv6-localnet
ipv6-mcastprefix
ipv6-allnodes
ipv6-allrouters
ipv6-allhosts
$HADOOP_HOME/conf/masters
mahout-master
B
Beschreibung der komprimierten virtuellen Maschinen
Image: Master (auf beiliegender DVD)
Datei
Gepackte Größe
Entpackte Größe
Beschreibung
mahoutmaster_teil.7z.001 bis
008
mahout-master.7z
8 mal 700 MB
insg. 5,30 GB
5,30 GB
Teilpakete für
mahout-master.7z
5,30 GB
8,52 GB
VM für Master-Node
Image: Slave (auf beiliegender DVD)
Datei
Gepackte Größe
Entpackte Größe
Beschreibung
mahout-slave-01.7z
1,36 GB
6,70 GB
VM für Slave-Node
Image: Mahout-Fileserver01
Datei
Gepackte Größe
Entpackte Größe
Beschreibung
mahout-fileserver.7z.
001 bis 012
12 mal 700 MB
insg. 17,3 GB
91,70 GB
VM genau wie Slave,
nur mit größerer Partition
Image: Mahout-Fileserver02
Datei
Gepackte Größe
Entpackte Größe
Beschreibung
mahoutfileserver02.7z
001 bis 049
49 mal 700 MB
insg. 33,3 GB
124 GB
VM für Pseudo-verteilten Betrieb für das
Wikipedia-Beispiel