Projektbericht. Einführung in die Algorithmen k-means, Bayes und Recommender von Mahout. Nicolas Welitzki



Ähnliche Dokumente
SFTP SCP - Synology Wiki

Installation SQL- Server 2012 Single Node

Tutorial -

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Step by Step Webserver unter Windows Server von Christian Bartl

Guide DynDNS und Portforwarding

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

OP-LOG

EasyWk DAS Schwimmwettkampfprogramm

MailUtilities: Remote Deployment - Einführung

How to install freesshd

Anleitung: DV4Mini auf einem Raspberry Pi

Anleitung zur Konfiguration eines NO-IP DynDNS-Accounts mit der TOOLBOXflex-3.2

Speichern. Speichern unter

Workshop: Eigenes Image ohne VMware-Programme erstellen

Übung: Verwendung von Java-Threads

Die Dateiablage Der Weg zur Dateiablage

! " # $ " % & Nicki Wruck worldwidewruck

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC

Anleitung zur Installation von SFirm 3.1 inklusive Datenübernahme

Schritt-Schritt-Anleitung zum mobilen PC mit Paragon Drive Copy 10 und VMware Player

-Bundle auf Ihrem virtuellen Server installieren.

Kapitel 3 Frames Seite 1

0. VORBEMERKUNG VORBEREITUNG DES SYSTEMS INSTALLATION UND KONFIGURATION VON PD-ADMIN Installation...3

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Aufklappelemente anlegen

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

OpenVPN unter Linux mit KVpnc Stand: 16. Mai 2013

SANDBOXIE konfigurieren

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Mein eigener Homeserver mit Ubuntu LTS

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

3. Update des edirectory Neustart des edirectory und Kontrolle edirectory neu starten Versionskontrolle 4

Artikel Schnittstelle über CSV

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Task: Nmap Skripte ausführen

In 15 Schritten zum mobilen PC mit Paragon Drive Copy 11 und VMware Player

Eine Einführung in die Installation und Nutzung von cygwin

Nutzung der VDI Umgebung

FTP-Leitfaden RZ. Benutzerleitfaden

eduroam mit SecureW2 unter Windows 7 Stand: 27. Januar 2015

Persönliches Adressbuch

Netzwerk-Migration. Netzwerk-Migration IACBOX.COM. Version Deutsch

Informatik I Tutorial

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Durchführung der Datenübernahme nach Reisekosten 2011

BUILDNOTES TOPAL FINANZBUCHHALTUNG

VERWALTUNG. Postfächer, Autoresponder, Weiterleitungen, Aliases. Bachstraße 47, 3580 Mödring

Leitfaden für die Installation der Videoüberwachung C-MOR

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

HAIKU Testen mit VitualBox

Leitfaden zur Einrichtung za-mail mit IMAP auf dem iphone

Installation Messerli MySQL auf Linux

WordPress lokal mit Xaamp installieren

Der vorliegende Konverter unterstützt Sie bei der Konvertierung der Datensätze zu IBAN und BIC.

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

[Geben Sie Text ein] ISCSI Targets mit der Software FreeNAS einrichten

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Adminer: Installationsanleitung

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

lññáåé=iáåé===pìééçêíáåñçêã~íáçå=

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

GITS Steckbriefe Tutorial

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Partitionieren in Vista und Windows 7/8

Witbox. Anleitung Repetier-Host. Witbox

1. Zuerst muss der Artikel angelegt werden, damit später die Produktvarianten hinzugefügt werden können.

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

Updateseite_BuV-PlugIn-NERZ-Gesamt

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Netzwerk einrichten unter Windows

UserManual. Handbuch zur Konfiguration einer FRITZ!Box. Autor: Version: Hansruedi Steiner 2.0, November 2014

ARAkoll 2013 Dokumentation. Datum:

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

Inkrementelles Backup

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

mygesuad Download: Wamp/Lamp Systemumgebungen:

Schulberichtssystem. Inhaltsverzeichnis

VIDA ADMIN KURZANLEITUNG

I. Travel Master CRM Installieren

KNX BAOS Gadget. Installations- und Bedienanleitung. WEINZIERL ENGINEERING GmbH. DE Burgkirchen Web:

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Verschlüsseln Sie Ihre Dateien lückenlos Verwenden Sie TrueCrypt, um Ihre Daten zu schützen.

COSIDNS 2 ISPconfig3. Version 0.1 ( )

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:

Netzwerkeinstellungen unter Mac OS X

Firmware-Update, CAPI Update

Elexis-BlueEvidence-Connector

8. Bintec Router Redundancy Protocol (BRRP) 8.1 Einleitung

Dokumentation zum Spielserver der Software Challenge

Windows 7 Winbuilder USB Stick

Datenaustausch mit Datenbanken

Transkript:

Prof. Dr. Ingo Claßen Studiengang Wirtschaftsinformtik FB Informatik, Kommunikation und Wirtschaft Projektbericht Titel Autoren Einführung in die Algorithmen k-means, Bayes und Recommender von Mahout 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 open- SUSE-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 CD- Laufwerk mit der autoinst iso- Datei entfernt werden. Wird dies Abbildung 1: VM-Einstellungen I 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 verarbeitenden Daten sind und wie diese Abbildung 3: Installations-Auswahl 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 n- beliebige 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 mahout-master mahout-slave-01 mahout-slave-02 mahout-slave-nn Domain mahout mahout mahout 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: 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ünscp -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 15

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 Eigenschaften 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 2 Vergl. Hartung 2007, S. 443 3 Vergl. Owen u.a. 2012, S. 125-128 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 5 Vergl. Owen u.a. 2012, S. 362 6 Vergl. Mahout Wiki 2011b 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 wget http://kdd.ics.uci.edu/databases/reuters21578/reuters21578.tar.gz tar xzvf reuters 21578.tar.gz 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) Beschreibung Download der Beispieldaten Entpacken der Beispieldaten 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 MAHOUT_LOCAL=true mahout seq2sparse --input $MAHOUT_HOME/input/kmeans/seqdir/ --output $MAHOUT_HOME/input/kmeans/seq2sparse/ Beispieldaten im SequenceFile-Format speichern, wobei der Zusatz Mahout_Local= True angibt, dass Mahout im Standalone-Modus arbeitet. 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 mahout clusterdump dt sequencefile d /hadoop/kmeans/vectors/dictionary.file-* -s /hadoop/kmeans/output/clusters-19 b 10 n 10 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) 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 Slaves Anzahl Master k-means 1(+1) 1 4,46 min 6 1 3,32 min 18 1 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 Vergl. Owen u.a. 2012, S. 225 9 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 Bayes- Theorem, 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. 11 Vergl. Backhaus u.a. 2011 S. 218 ff. 12 Vergl. Owen u.a. 2012, S. 274 f. 24