48
Ruprecht-Karls-Universität Heidelberg Institut für Informatik Lehrstuhl für Parallele und Verteilte Systeme Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME-Workflowsystem zwecks Analyse großer Datenmenge Name: Max Ernst Matrikelnummer: 2743117 Betreuer: Prof. Dr. Artur Andrzejak, Dipl.-Math. Lutz Büch Datum der Abgabe: 30.07.2014

Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

Ruprecht-Karls-Universität HeidelbergInstitut für Informatik

Lehrstuhl für Parallele und Verteilte Systeme

Bachelorarbeit

Einbindung des Mahout-Frameworks in dasKNIME-Workflowsystem zwecks Analyse

großer Datenmenge

Name: Max ErnstMatrikelnummer: 2743117Betreuer: Prof. Dr. Artur Andrzejak, Dipl.-Math. Lutz BüchDatum der Abgabe: 30.07.2014

Page 2: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

Ich versichere, dass ich diese Bachelor-Arbeit selbstständig verfasst und nur die angegebenenQuellen und Hilfsmittel verwendet habe.

Heidelberg, 30.07.2014

Page 3: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

Zusammenfassung

In der heutigen Zeit gewinnt Data-Mining immer mehr an Bedeutung. Dabei wird versucht,aus einem Datenbestand neue Muster zu erkennen. Data-Mining Tools wie „KNIME“ (Kon-stanz Information Miner) bieten dem Benutzer eine grafische Oberfläche für die Verarbeitungder Daten mit Hilfe des maschinellen Lernens an. Aus Speicherplatzgründen ist es jedoch nurmöglich relativ kleine Datenmengen zu verarbeiten.

Auf der anderen Seite benutzt die neue Generation der parallelen Algorithmen für ma-schinelles Lernen das Map-Reduce Paradigma, um eine hohe Skalierbarkeit, insbesonderefür große Daten, zu erlangen. So wurden, zum Beispiel, in dem Projekt Apache Mahout(http://mahout.apache.org/) eine Vielzahl von Algorithmen implementiert, die das FrameworkHadoop benutzen. Schwierigkeiten, die sich dabei ergeben, sind zum Einen, dass viel Zeitsowohl für die Einrichtung und Konfiguration als auch in die Einarbeitung von Mahout inves-tiert werden soll, bevor damit angefangen zu arbeiten werden kann und zum Anderen, dassder Output nicht so einfach in ein KNIME Workflow übernommen werden kann.In dieser Arbeit werden für die freie Software „KNIME“ (Konstanz Information Miner) Kno-ten mit einer Anbindung an Mahout implementiert, um die Datenanalyse von großen Daten-mengen dem Benutzer zu ermöglichen.Mit dem Einsatz von Mahout werden große Daten außerhalb von KNIME verarbeitet und nureine kleine Datenmenge als Output dem nächsten Knoten übergeben.Die Verwendung von Mahout innerhalb eines KNIME-Knotens bietet den Vorteil, dass dieVerarbeitung der Daten über Mahout in ein KNIME-Workflow eingebunden werden kann.Das Ganze wird in Form einer virtuellen Maschine dem Benutzer zur Verfügung stehen.

Abstract

Today data mining is becoming increasingly important. It attempts to identify new patternsfrom a data sets. Data mining tools such as „KNIME“ (Konstanz Information Miner) providethe user with a graphical interface for processing the data with the help of machine learning.Space reasons, however, it is only possible to process relatively small amounts of data.On the other hand, the new generation of parallel algorithms for machine learning uses theMap-Rreduce paradigm to achieve high scability. Variety of algorithms in Apache MahoutProject, for example, were implemented using the Hadoop framework. One problem is that alot of time both should be invested for the installation and configuration as well as the incor-poration of Mahout, before it can be started to work and secondly, that the output can not be

iii

Page 4: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

used so easily in a KNIME workflow.In this work nodes for the free software „KNIME“(Konstanz Information Miner) with aconnection to Mahout to simplify the data analysis of large data sets will be implemented.With the use of Mahout large data are processed outside of KNIME and only a small amountof data passed as output to the next node.Using Mahout within KNIME node has the advantage that the processing of data on Mahoutcan be integrated in a KNIME workflow.The whole work will be available within a virtual machine.

iv

Page 5: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

Inhaltsverzeichnis

Abbildungsverzeichnis vii

Tabellenverzeichnis viii

1 Einleitung 1

1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Ziele der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Grundlagen 4

2.1 Related Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Parallele Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.3 Map-Reduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.3.1 Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3.2 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.4 Apache Hadoop Framework . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4.1 Job- und TaskTracker . . . . . . . . . . . . . . . . . . . . . . . . . . 82.4.2 Hadoop Distributed File System . . . . . . . . . . . . . . . . . . . . 8

2.5 KNIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.6 Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.7 Recommender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.8 Mahout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3 Implementierung und Ausführung Mahout-Knoten 12

3.1 Mahout-Knoten Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.2 Oracle VM VirtualBox Einrichtung . . . . . . . . . . . . . . . . . . . . . . . 133.3 Mahout-KMeans-Knoten Ausführung . . . . . . . . . . . . . . . . . . . . . 143.4 Ausführung innerhalb eines Hadoop-Clusters . . . . . . . . . . . . . . . . . 173.5 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

v

Page 6: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

Inhaltsverzeichnis

3.6 Fehlerbehebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4 Workflow aus Mahout-Knoten 22

4.1 Beschreibung Mahout-Knoten . . . . . . . . . . . . . . . . . . . . . . . . . 22

5 Szenario und Evaluation 27

5.1 Szenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.1.1 KNIME K-Means . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.1.2 Mahout K-Means . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.2 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.2.1 Einzelinstanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.2.2 Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

6 Schlussbetrachtung 38

6.1 Ergebnisse dieser Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

7 Anhang 39

Literaturverzeichnis 40

vi

Page 7: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

Abbildungsverzeichnis

2.1 Pervasive Big Data & AnalyticsTM . . . . . . . . . . . . . . . . . . . . . . . 52.2 Datenfluss beim Map-Reduce Verfahren . . . . . . . . . . . . . . . . . . . . 62.3 KNIME Workflow (http://www.knime.org/screenshots) . . . . . . . . . . . . 9

3.1 Mahout-Knoten Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.2 Mahout-KMeans-Knoten Beispiel . . . . . . . . . . . . . . . . . . . . . . . 203.3 CSV Writer Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4.1 Mahout Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.2 Konfiguration Start-Knoten . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.3 Konfiguration Input-Knoten . . . . . . . . . . . . . . . . . . . . . . . . . . 244.4 Konfiguration Clustering-Knoten . . . . . . . . . . . . . . . . . . . . . . . . 254.5 Konfiguration Fetch-Knoten . . . . . . . . . . . . . . . . . . . . . . . . . . 254.6 Konfiguration Stop-Knoten . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.7 Konfiguration Recommender-Knoten . . . . . . . . . . . . . . . . . . . . . . 26

5.1 KNIME K-Means vor der Ausführung . . . . . . . . . . . . . . . . . . . . . 285.2 KNIME K-Means nach der Ausführung . . . . . . . . . . . . . . . . . . . . 285.3 Mahout K-Means vor der Ausführung . . . . . . . . . . . . . . . . . . . . . 295.4 Mahout K-Means nach der Ausführung . . . . . . . . . . . . . . . . . . . . 305.5 K-Means Java heap space overflow . . . . . . . . . . . . . . . . . . . . . . . 325.6 Verarbeitungsgeschwindigkeit Einzelinstanz und Hadoop Cluster . . . . . . . 36

vii

Page 8: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

Tabellenverzeichnis

5.1 Vergleich K-Means KNIME und Mahout (Laufzeiten) . . . . . . . . . . . . . 315.2 Vergleich K-Means Mahout und Mahout Workflow (Laufzeiten) . . . . . . . 345.3 Vergleich K-Means Mahout Einzelinstanz und Cluster . . . . . . . . . . . . . 35

viii

Page 9: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

1 Einleitung

1.1 Motivation

In der heutigen Zeit werden immer schnellere Rechenleistungen verlangt und vorausgesetzt. Inden letzten Jahrzehnten sind Prozessoren und Arbeitsspeicher um Vielfaches schneller gewor-den, Festplatten besitzen Kapazitäten, die man vor einiger Zeit noch für unmöglich gehaltenhat, was wiederum dazu führt, dass schnellere Prozessoren mit mehr Daten belastet werden.Die Datenmengen werden tendenziell immer größer und sind leichter verfügbar (Stichwort"Big Data") und wegen des begrenzten Hauptspeichers muss auf verteilte Systeme ausgewi-chen werden.Bei sehr großen Datenmengen findet häufig das von Google eingeführte Framework „Map-Reduce“ den Einsatz. Dabei werden die Daten auf mehrere Rechner innerhalb eines Rechner-verbands (Computercluster) verteilt, separat verarbeitet und die Ergebnisse dann zusammen-gefügt. Innerhalb eines Rechners werden die Daten z.B. auf mehrere Kerne verteilt.Das Problem mit den großen Datenmengen und Verarbeitungszeit stellt sich auch bei der Clus-teranalyse, Klassifikationsverfahren und allgemein im Bereich des maschinellen Lernens.Die Apache Mahout Sammlung bietet eine Menge von skalierbaren Algorithmen, um Klassifi-katoren zu trainieren / testen, aber auch um Cluster zu bilden. Durch das Hinzufügen weitererKnoten / Rechnern steigt auch proportional die Leistung.Bei einer Verteilung von Daten bringt uns Map-Reduce nicht nur schnellere Verarbeitung mitsich, sondern auch die Sicherheit, dass alle Daten verarbeitet werden. Beim Ausfall eines Kno-tens muss sichergestellt werden, dass Daten, die diesem Rechner zugewiesen wurden, nichtins Leere gehen, sondern einem anderen Knoten zugewiesen und über diesen zum Outputweitergeleitet werden. Wäre dies nicht der Fall, so könnten manche Daten verloren gehen unddas Ergebnis letztendlich verfälscht werden.Alle diese Eigenschaften machen Mahout zu einem mächtigen und ziemlich stabilen Werk-zeug. Jedoch bietet Mahout keine grafische Benutzeroberfläche.Für eine Datenanalyse mit grafischer Oberfläche wird oft das Werkzeug „KNIME“ eingesetzt.Dem Benutzer ist es möglich, mit Hilfe unterschiedlicher Knoten, Workflows zu bilden. Jeder

1

Page 10: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

1 Einleitung

Knoten verarbeitet die Daten auf seine vordefinierte Art und Weise. Sind die Daten „klein“,können sie innerhalb eines Knotens erfolgreich verarbeitet werden, bei etwas größeren (dabeihandelt es sich um Daten, die wesentlich kleiner als 1 GB groß sind) oder ganz großen Daten(Tera-, Petabyte...) wird der Knoten die Ausführung einfach abbrechen, da der Speicher fürdie Verarbeitung nicht ausreichend vorhanden ist.In dieser Arbeit werden neue KNIME-Knoten für das Clustern großer Datenmengen imple-mentiert, die die Verarbeitung nicht intern ausführen, sondern einen Mahout Prozess starten,der die Daten verarbeitet, und das Ergebnis an den nächsten Knoten übergibt. Somit wird dieVorteile von Mahout (Verarbeitung großer Datenmengen) und KNIME (Datenanalyse übergrafische Benutzeroberfläche) miteinander kombiniert.

1.2 Ziele der Arbeit

In dieser Arbeit wird eine Schnittstelle zwischen KNIME und Mahout gebildet, um paralleleMahout-Algorithmen von KNIME aus starten zu können.Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der Daten und ihre Verarbeitung auf mehrere Rechner erlaubt. Aber auch wenn die Datenauf einem Rechner verarbeitet werden, ist es möglich viel größere Datensätze zu übergebenals es von KNIME standardmäßig vorgesehen ist. Dafür muss Hadoop und Mahout konfigu-riert werden. Für die Mahout Einrichtung muss der Benutzer viel Zeit aufwenden. Das ersteZiel ist also, die Einrichtung und Arbeit mit Mahout zu vereinfachen, so dass sich der Benut-zer nur mit der Verarbeitung seiner Daten beschäftigen muss.KNIME bietet die Möglichkeit, verschiedene Algorithmen über grafische Knoten auszufüh-ren. D.h. der Benutzer kann alle Einstellungen über die grafische Benutzeroberfläche vorneh-men, ohne tiefe Kenntnisse in den Terminalbefehlen zu haben. Es fehlt jedoch die Schnitt-stelle zwischen Mahout und KNIME, es ist also nicht möglich einen Mahout-Befehl in einemKNIME-Knoten und somit in einem Workflow auszuführen. Ein weiteres Ziel ist somit einenMahout-Knoten für KNIME zu erstellen, welcher nur die Eingangsdaten benötigt und dieAusgabe innerhalb eines Workflows weiterleitet oder in ein vom Benutzer eingegebenes Ver-zeichnis schreibt.Der Mahout-Knoten soll Mahout und KNIME vereinigen. Beispielhaft wurde der K-MeansAlgorithmus integriert, bei dem der Benutzer als Eingabedaten die Vektoren, die Anzahl derCluster und ggf. maximale Anzahl der Iterationen übergibt. Es wird als gewöhnlicher KNIME-Knoten ausgeführt und die Ausgabe kann wiederum als Eingabe in weiteren Knoten verwen-det werden.

2

Page 11: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

1.3 Aufbau der Arbeit

1.3 Aufbau der Arbeit

In Kapitel 2 werden grundlegende Methoden und Konzepte für diese Arbeit vorgestellt. Die-se Grundlagen sollen dem Verständnis über eingesetzte Frameworks und damit verbundenenThemen helfen und sich dahinter befindliche Abläufe kurz vorstellen.

Kapitel 3 beschreibt die Umsetzung der Anforderungen und Einsatzmöglichkeiten der ent-wickelten Knotenen. Ebenfalls wird auf die Konfiguration der Knoten, mögliche Fehler unddazugehörige Lösungen eingegangen. Diese Knoten dienen als Prototypen und werden imnächsten Schritt in weitere Knoten zerteilt.

4 Kapitel beschreibt weitere Entwicklung der Knoten, die den Aufbau der Workflows, durchdas Trennen der Ausführungen einzelner Aufgaben, flexibler macht.

Im Kapitel 5 wird ein mögliches Szenario für den Einsatz des Mahout Knotens präsentiert.Zusätzlich findet noch ein Vergleich zwischen dem standardmäßigen K-Means Knoten ausKNIME und dem Mahout K-Means Knoten statt.

3

Page 12: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

2 Grundlagen

Die in diesem Kapitel vorgestellte Bereiche sollen das Verständnis über Technologien, diein dieser Arbeit eingesetzt werden, erweitern und letztendlich den Sinn und den Zweck die-ser Arbeit erläutern. Eingesetzte Verfahren aus der Mahout-Sammlung zur Datenanalyse wieClustering und Recommender werden beschrieben.

2.1 Related Works

Das Problem mit der Verarbeitung großer Datenmengen bei KNIME ist nicht neu, deswegenwerden KNIME Erweiterungen von Pervasive Big Data & AnalyticsTM für verteilte Frame-works wie Hadoop entwickelt. „Pervasive RushAnalytics for KNIME“ wurde mit dem Zielentwickelt, den maximalen Vorteil aus der Infrastruktur der parallelen Verarbeitung zu erzie-len und damit eine höhere Verarbeitungsgeschwindigkeit zu erreichen. [3]Abbildung 2.1 zeigt, dass RushAccelerator for KNIME 2 bis 10 und RushAnalytics 10 bis100 Mal schneller als KNIME sind.Im Download Center werden unterschiedliche Versionen zur Verfügung gestellt und könnennach einer Anmeldung als virtuelle Maschinen heruntergeladen werden.

2.2 Parallele Algorithmen

Ein Algorithmus heißt parallel, wenn er erstens so in Einzelschritte zerlegt werden kann, dassdiese auf verschieden Prozessoren (Rechner) verteilt werden können, und wenn zweitens die-se Prozessoren unabhängig und gleichzeitig arbeiten. [10]Diese Vorgehensweise wird z.B. von Google zum Einsatz gebracht, um extrem große Daten-mengen verarbeiten zu können, bräuchte eine einzelne Maschine mehrere Jahre, um Suchin-dexe zu erstellen. So eine lange Verarbeitungszeit würde dazu führen, dass Google die Datenniemals aktuell halten könnte, deswegen wird mit parallelen Algorithmen gearbeitet, die esmöglich machen, große Datenmenge auf viele Maschinen zu verteilen. Parallele Algorithmenwerden auch bei Mahout (Abschnitt 2.8) eingesetzt.

4

Page 13: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

2.3 Map-Reduce

Abbildung 2.1: Pervasive Big Data & AnalyticsTM

Bei parallelen Algorithmen werden die Daten zerlegt und getrennt voneinander verarbeitet,was uns zum nächsten Begriff führt - Map-Reduce.

2.3 Map-Reduce

Map-Reduce ist ein Framework für nebenläufige Berechnungen über große Datenmengen. Eswurde von Jeffrey Dean und Sanjay Ghemawa im Jahr 2004 bei Google entwickelt.Dadurch, dass die Daten auf mehrere Rechner verteilt werden, ist es möglich große Daten-mengen in kurzer Zeit zu bearbeiten.Ein weiterer Vorteil ist, dass man keine spezielle High-End Server bereitstellen muss, sondernauf handelsüblichen Computern die Verarbeitung durchführen kann.Wie der Name schon sagt, besteht Map-Reduce aus zwei Phasen: Map und Reduce, genau soheißen die Funktionen, die nebenläufig verwendet werden.Die map() Funktion berechnet die Werte für alle Eingabeelemente und stellt sie in modifizier-ter Form wieder dar. Die reduce() Funktion fasst die Ergebnisse zusammen und reduziert sieauf eine Ausgabedatei(-wert).

5

Page 14: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

2 Grundlagen

Abbildung 2.2: Datenfluss beim Map-Reduce Verfahren

2.3.1 Vorgehensweise

Abbildung 2.2 stellt Map- und Reducephasen mit jeweiligen Ergebnissen dar, einzelne Schrit-te sind im Folgenden erklärt:

• Daten werden auf unterschiedliche Map-Prozesse verteilt und parallel berechnet

• Berechnungen werden als Zwischenergebnisse gespeichert, wobei jede Map-Funktionihre Ergebnisse auf jedes Zwischenergebnis verteilen kann

• sind alle Map-Prozesse fertig, ist die Map-Phase zu Ende

• nun beginnt die Reduce-Phase, die aus jedem Zwischenergebnis ein Endergebnis be-rechnet, Reduce-Prozesse laufen ebenfalls parallel ab

Die Map-Phase stellt Zwischenergebnisse als Schlüssel-Wert-Paare dar und die Reduce-Phasefasst diese zusammen und gibt auch Schlüssel-Wert-Paare aus. Formal gesehen ist Map-Reduce-Framework eine Abbildung:

(K × V)∗ → (L ×W)∗

[(k1, v1), ..., (kn, vn)] 7→ [(l1,w1), ..., (lm,wm)],

wobei K und L Schlüssel, V und W Werte enthalten.

6

Page 15: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

2.4 Apache Hadoop Framework

2.3.2 Beispiel

Man kann sich viele Anwendungen für das parallele Berechnen vorstellen, an dieser Stellewird das gängigste Einführungsbeispiel vorgestellt. Das „Hello World!“ Beispiel aus der Pro-grammierung ist in Map-Reduce das Beispiel Wörter in einem Text zu zählen, d.h. es wirdgezählt wie oft jedes Wort in einem Text vorkommt.In der Map-Phase wird der Text geteilt und verschiedenen Rechnern zugeteilt, jeder Rechnerberechnet Anzahl Wörter, die in seinem Teil vorkommen und legt sie als Zwischenergebnisseim Speicher ab. So kann es vorkommen, dass das Wort „ich“ vom ersten Map-Prozess 5 malgezählt wurde und vom zweiten Map-Prozess 7 mal, d.h. es sind 2 Ergebnisse, die aber zusam-mengefasst werden sollen, was auch die einzelnen Reduce-Phasen machen und als Ergebniseine Liste aus Wörtern (Schlüsseln) und der jeweiligen Anzahl (Werte) ausgeben.Pseudo-Code:

map(String key, String value):

// key: document name

// value: document contents

for each word w in value:

EmitIntermediate(w, "1");

reduce(String key, Iterator values):

// key: a word

// values: a list of counts

int result = 0;

for each v in values:

result += ParseInt(v);

Emit(AsString(result));

2.4 Apache Hadoop Framework

Map-Reduce Framework nimmt dem Entwickler viel Arbeit ab, so müssen nur die Map- undReducefunktionen implementiert werden, alles andere, wie Fehlerbehandlungen, SchedulingVerfahren für die Jobverteilung und Koordination, d.h. technische Details werden vom Systemerledigt. Ein konkretes Framework wird in diesem Abschnitt vorgestellt.

Das von Google entwickelte Map-Reduce Framework ist kostenpflichtig und urheberrecht-lich geschützt, deswegen wird an dieser Stelle das Open-Source, in Java entwickeltes Frame-work der Apache Foundation verwendet.

7

Page 16: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

2 Grundlagen

Es stehen 3 Modi zur Verfügung, in denen Hadoop-Framework gestartet werden kann:

• Standalone mode: Programm startet in einem einzigen Prozess

• Pseudo-distributed mode: Programm startet auf einem Rechner, wird jedoch in mehrereJava Prozesse gesplittet

• Cluster mode oder Fully distributed: läuft auf einem Cluster aus mehreren Rechnern

Hadoop ist offen für alle Entwickler, bietet eine sehr hohe Fehlertoleranz und eignet sich damitbestens für diese Arbeit.

2.4.1 Job- und TaskTracker

In einem Framework gibt es zwei Arten von Prozessen, die für die Verarbeitung der Datenzuständig sind - der eine wird als JobTracker-Prozess bezeichnet, alle andere Prozesse werdenTaskTracker-Prozesse genannt (Google verwendet dazu die Begriffe Master und Worker.).Der JobTracker-Prozess weist den einzelnen Rechnern im Cluster Jobs zu, welche wieder-um Map- oder Reducefunktionen sind. Nach der Zuweisung werden die Daten mit Hilfe vonRemote Method Invocation (RMI) aus dem Speicher gelesen und verarbeitet. Nachdem alleMap- und Reduceprozesse beendet sind, weckt der JobTracker ein Benutzerprogramm auf,dass alle Daten berechnet wurden und weitergeleitet werden können.Es gibt also genau einen JobTracker und mehrere TaskTracker; JobTracker bekommt Map-und Reducefunktionen, die er an einzelne Knoten (TaskTracker) verteilt. Dem JobTracker istbekannt, an welchem Knoten welche Daten zu finden sind, dies wird bei der Arbeitszuwei-sung berücksichtigt, wodurch das Verschicken der Daten über das Netzwerk vermieden undZeit gespart wird. Daten werden nur in dem Fall zum nächsten Rechner im Cluster geschickt,falls auf einem anderen momentan keine Funktion ausgeführt werden kann.

2.4.2 Hadoop Distributed File System

Hadoop Distributed File System (HDFS) ist von Apache entwickeltes Dateisystem. Es wirdeigenes Dateisystem verwendet, da es speziell für große Datenmengen auf verteilten Rechnernerstellt wurde. Die Verteilung auf die Cluster wird möglichst optimal durchgeführt und dieZugriffszeiten sind sehr kurz.

In einem Cluster gibt es unterschiedliche Typen von Knoten mit jeweiligen Aufgaben,auf die sie spezialisiert sind. Der sogenannte „NameNode“ ist für die Steuerung des Name-spaces, Metadaten des Dateisystems und Rechenzugriffe zuständig. Auf den „DataNodes“

8

Page 17: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

2.5 KNIME

werden tatsächliche Daten, die bearbeitet werden, gespeichert. Als letztes existiert noch ein„SecondaryNameNode“, der die Änderungen des ursprünglichen Dateisystems als Log-Filesspeichert.

2.5 KNIME

KNIME ist eine freie Software, die in solchen Bereichen wie Mathematik, Bioinformatik,Statistik usw. für die Datenanalyse eingesetzt wird. Dabei bietet es zahlreiche Verfahren desmaschinellen Lernens und Data-Mining an.Ein Workflow in KNIME besteht aus Knoten, die Daten verarbeiten, und Kanten, die einenDatenfluss darstellen. Ein Knoten kann sowohl eine als auch mehrere Eingangskanten als In-put haben, genauso ist es aber möglich zu verarbeitende Daten von der Festplatte zu laden(zumindest der erste Knoten bekommt seine Daten nicht von einem anderen Knoten).Abbildung 2.2 zeigt die Arbeitsfläche von KNIME. Auf der linken Seite werden unterschied-

Abbildung 2.3: KNIME Workflow (http://www.knime.org/screenshots)

liche Knoten kategorisiert aufgelistet, die je nach Art der Analyse und den Eingangsdatenausgewählt werden können.Im mittleren Bereich wird der ganze Workflow dargestellt. Die Knoten können unterschied-liche Status besitzen, dies sieht man an der Farbe, die sich unter dem Knoten befindet: gelb

9

Page 18: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

2 Grundlagen

bedeutet, dass der Knoten notwendige Daten enthält und bereit für die Ausführung ist; bei rotmüssen noch Daten angegeben werden; grün - der Knoten wurde bereits ausgeführt.

2.6 Clustering

Clustering - Datensätze werden nach ihrer Ähnlichkeit dermaßen in Cluster unterteilt, dass einCluster Datensätze enthält, die zueinander ähnlich und möglichst unterschiedlich zu den Da-tensätzen aus anderen Clustern sind. Wie ähnlich die Datensätze zueinander sind wird durcheine Distanzfunktion bestimmt, z.B. durch die Euklidische Distanzfunktion.Im Gegensatz zur Klassifikation sind die Cluster am Anfang unbekannt, es findet also keinLernvorgang mit Trainingsdaten statt. Es ist jedoch möglich die Anzahl der Cluster und dieDistanzfunktion innerhalb dieser Cluster zu bestimmen.Als ein Beispiel, wird an der Stelle ein einfaches Clusteringverfahren K-Means vorgestellt.

K-Means ist ein einfaches und das meistverbreitete Clusteringverfahren. Jeder Cluster beiK-Means besitzt seinen eigenen Schwerpunkt, den sogenannten „Centroid“. Anzahl der Clus-ter wird vor der Ausführung angegeben, die Schwerpunkte werden dann zufällig verteilt. DasZiel dabei ist es, den durchschnittlichen quadratischen Abstand vom Schwerpunkt zu mini-mieren, indem iterativ jeder Datensatz einem Cluster zugewiesen wird und anschließend dieSchwerpunkte neuberechnet werden.Der letzte Schritt wird solange ausgeführt, bis eine bestimmte Anzahl von Iterationen erreichtist oder bis die Schwerpunkte sich nicht mehr bewegen.Einsatzgebiet von K-Means ist oft in der Computergraphik die Bildsegmentierung. Das Bildwird in bestimmte Bereiche (Segmente) unterteilt, in welchen die Bildpunkte gemeinsameEigenschaften besitzen. Welche Eigenschaften es sind, hängt vom Kontext ab; auf den Rönt-genbildern z.B. werden zusammengehörende Elemente über Farbintensität den Clustern zu-geordnet.

Es existieren unterschiedliche Variationen von K-Means wie z.B. K-Means++, bei demversucht wird bessere Startpunkte zu finden, oder Fuzzy K-Means, wo jeder Datensatz nichteinem bestimmten Cluster, sondern ein Satz Gewichte zugeordnet wird, die angeben wie starkdie Zugehörigkeit zu einem bestimmen Cluster ist.

10

Page 19: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

2.7 Recommender

2.7 Recommender

Recommender System (Empfehlungsdienst) ist ein Verfahren, welches dazu benutzt wird,ähnliche Objekte zu ermitteln und Empfehlungen zu erstellen. Anhand bestehender Daten(Kontext) kann bestimmt werden welche weitere Daten als Empfehlung verwendet werdenkönnen.Eine Recommender Engine kann beispielsweise bei Videofilmen oder Büchern eingesetzt wer-den. Bereits ausgeliehene Bücher stellen die Vorlieben eines Benutzers dar. Darüber kann er-fahren werden, welche Autoren oder Genre der Benutzer bevorzugt; ebenso können das Alter,das Geschlecht und die Herkunft der Person eingesetzt werden, um passende Vorschlage ma-chen zu können.Die Eingabe enthält somit eine Liste der gelesenen Büchern und einer Liste noch zusätzlichvorhandener Bücher. Daraus wird eine Rankingliste erstellt.

2.8 Mahout

Mahout ist ein Apache Projekt, welches sich mit der skalierbaren Implementierung von ma-schinenlernenden Algorithmen auf der Hadoop Plattform befasst. Es enthält einige Algorith-men für z.B. Clustering und Klassifikation. So ist auch im Abschnitt 2.6 vorgestelltes K-Means Clusteringverfahren in der Mahout Sammlung vorhanden.Mahout modifiziert die Inputdaten nicht, somit bleibt der Benutzer flexibel und kann Algorith-men mit verschiedenen Parametern ausführen, um diese auszuprobieren, zu testen und zumbestmöglichen Ergebnis zu kommen. Die Daten werden jedoch zwischen verschiedenen Aus-führungen nicht im Speicher gehalten, sondern müssen immer wieder neu geladen werden.

11

Page 20: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

3 Implementierung und Ausführung

Mahout-Knoten

In diesem Kapitel werden zu implementierende Methoden und Algorithmen und jeweiligeEntscheidungen gezeigt und vorgestellt.Als Einstieg in die KNIME-Implementierung wird zuerst ein KMeans-Knoten implementiertund die Ausführung mit den jeweiligen Konfigurationen gezeigt. Wie der Name bereits verrät,ist dieser Knoten nur auf K-Means beschränkt und sogar bei diesem Verfahren können nurwichtigste Konfigurationen vorgenommen werden.Ein weiterer wichtiger Teil dieses Kapitels ist die Vorstellung und der Umgang mit der vir-tuellen Maschine. Da man diese Mahout-Knoten nicht in jede beliebige KNIME Umgebungeinbinden kann, werden die Knoten zusammen mit dem Betriebssystem (mit installiertem Ha-doop Framework etc.) als virtuelle Maschine herausgegeben. Somit müssen zumindest Grund-legende Bereiche der virtuellen Maschine, aber auch, falls es zu Problemen kommen sollte,Schritte, die bei Fehlerbehebungen durchzuführen sind, erwähnt werden.

3.1 Mahout-Knoten Aufbau

Um einen Mahout-Knoten implementieren zu können, werden einige Klassen von KNIMEtech

zur Verfügung gestellt, die auf eigene Anforderungen vervollständigt und angepasst werdenkönnen. Im folgenden werden diese Klassen vorgestellt.

NodeModel - diese Klasse ist für die allgemeine Beschreibung des Knotens verantwort-lich. Der Konstruktor definiert die Anzahl der Ein- und Ausgangsports. Da die Eingangsdatenvon unserem Knoten sehr groß sein und auch meistens von außen hinzugefügt werden, besitztder Mahout-Knoten keinen Eingangsport. Die Ausgabe wird jedoch so klein sein, dass sie alsEingabe für den nächsten Knoten genommen werden kann und auch soll.Weiterhin werden alle Dialog-Komponenten angegeben, welche der Benutzer bei der Konfi-guration des Knotens angezeigt bekommt. Im Falle des Mahout-Knotens handelt es sich um

12

Page 21: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

3.2 Oracle VM VirtualBox Einrichtung

solche Komponenten wie Ein- und Ausgabepfade, Anzahl der Cluster und maximale Anzahlder Iterationen. Diese werden mit Default-Werten erzeugt, die dann später vom Benutzer ge-ändert werden können / müssen.Wichtige Methoden aus dieser Klasse sind validateSettings(), saveSettingsTo() und loadVali-

datedSettingsFrom(), um die Einstellungen zu prüfen, ob erforderliche Daten angegeben wur-den; Einstellungen zu speichern und diese zu laden. execute() enthält Anweisungen für dieAusführung des Knotens.

NodeDialog - platziert die in der NodeModel definierte Komponente auf das Fenster (panel)bzw. Dialog, den der Benutzer angezeigt bekommt. Dabei geht es im Wesentlichen um diePositionen der einzelnen Komponente und ihrem Verhalten wie beispielsweise Verschwindeneinzelner Einstellungen beim Setzen eines Hakens.

NodeView - zeigt die Ausgabe graphisch an.

3.2 Oracle VM VirtualBox Einrichtung

Das Endergebnis dieser Arbeit wird in Form einer virtuellen Maschine allen Benutzern zurVerfügung gestellt. Eine ganze Maschine deswegen, weil es nicht nur der implementierte Kno-ten als Plugin in KNIME eingebunden werden muss (was auch möglich wäre, nur den Knotenin KNIME zu importieren), sondern auch Hadoop und Mahout eingerichtet und lauffähig seinmüssen.Es existiert eine Reihe von virtuellen Maschinen, solche wie „Windows Virtual PC“, „VM-ware Workstation“, „Parallels Workstation“ usw. Da nicht alle Maschinen kostenlos sind undauch die Einrichtung bei manchen viel Aufwand erfordert, fiel die Entscheidung auf die eineder bekanntesten und zugleich kostenlose virtuelle Maschine „Oracle VM Virtual Box“.Obwohl die Maschine lauffähig zur Verfügung gestellt wird, müssen vom Benutzer dennocheinige Einstellungen, Änderungen oder Anpassungen vorgenommen werden. Dieser Abschnittbeschreibt grundlegende Operation, die notwendig oder sinnvoll für die Ausführung der Vir-tualBox sein können.

Maschine Einbinden:Um eine neue Maschine in die Virtual Box aufzunehmen, wird im Menü „Maschine –> Hin-zufügen“ entsprechende Maschine ausgewählt. Damit wird die neue Maschine eingebundenund kann bereits gestartet werden. Administrator „VM“ mit dem Passwort „admin“ ist ange-legt.

13

Page 22: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

3 Implementierung und Ausführung Mahout-Knoten

Gemeinsamen Ordner definieren:Es muss evtl. eine Schnittstelle zwischen dem echten Betriebssystem und der virtuellen Ma-schine geschaffen werden, nämlich ein gemeinsamer Ordner (oder mehrere) den die beidenSysteme nutzen. Dazu wird in der Virtual Box die entsprechende Maschine markiert undMenüpunkt „Ändern“ausgewählt. Daraufhin erscheint ein Fenster mit dem Unterpunkt „Ge-meinsame Ordner“. Hier kann ein gemeinsamer Ordner definiert werden, als Beispiel wird einder Stelle Verzeichnis „C:\Gemeinsamer Ordner“ verwendet.Dieses Verzeichnis muss auch in der virtuellen Maschine eingebunden werden, dies geschiehtim Terminal mit der Ausführung des Befehls:sudo mount -t vboxsf Gemeinsamer_Ordner /home/vm/Desktop/Shared/ ,wobei „Gemeinsamer_Ordner“ der Ordner-Name ist, der beim Hinzufügen in die Virtual Boxangezeigt wurde und „/home/vm/Desktop/Shared/“ das Verzeichnis, in welchem der Inhaltdes gemeinsames Ordners unter Linux angezeigt werden soll.Nach der Eingabe des Passworts sollen beide Systeme auf den gemeinsamen Ordner zugreifenkönnen.

Netzwerk einrichten:Die Maschine besitzt 2 Netzwerkadapter, einen, um Zugang ins Internet zu bekommen undeinen zweiten, um sich mit dem echten Betriebssystem in einem Netzwerk befinden zu kön-nen. Dies ist z.B. für einen Cluster notwendig. Werden mehrere virtuelle Maschinen eingebun-den muss evtl. die Mac-Adresse unter „Ändern“ –> „Netzwerk“ –> „Adapter 2“ –> „MAC-Adresse:“ –> „aktualisieren“ geändert werden.Auch sonstige Einstellungen bzgl. des Netzwerkes und Adapter können hier angepasst wer-den.

3.3 Mahout-KMeans-Knoten Ausführung

Dieser Abschnitt beschreibt Einzelschritte, die bei der Ausführung des ersten Knotens passiertwerden.

Im Kapitel 2 wurde ein Clustering-Verfahren K-Means vorgestellt. Dieses Verfahren führt dererste Knoten aus. Der Vorteil dieses Knotens ist, dass der Benutzer alle Einstellungen übergrafische Oberfläche vornehmen kann. Es ist ein reiner K-Means Knoten, der nur K-Meansausführt und keine Kenntnisse über Terminal-Befehle von Mahout erfordert. Das ganze Pro-jekt wird nicht auf einem „normalen“ Betriebssystem, sondern auf einer virtuellen Maschine

14

Page 23: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

3.3 Mahout-KMeans-Knoten Ausführung

durchgeführt. Als Betriebssystem wurde Linux-Distribution Ubuntu 12.10 verwendet. Diesesbeinhaltet alle notwendigen Pakete, um darauf Hadoop und Mahout ausführen zu können.

Bevor dieser Knoten näher erläutert wird, wird an dieser Stelle genauer auf den Umgang mitMahout eingegangen. Um einen Mahout-Befehl in der Kommandozeile auszuführen, muss derBenutzer in den Systemeinstellungen den Pfad zu der Ausführungsdatei von Mahout angebenund damit Mahout aus jedem beliebigen Verzeichnis starten können oder zum Unterverzeich-nis „bin/mahout“ von Mahout navigieren und von dort aus Befehle an Mahout übergeben.Eine Eingabe hat etwa folgende Gestalt:

bin/mahout kmeans \

− i < input vectors directory > \

− c < input clusters directory > \

− o < output working directory > \

− k < optional number o f initial clusters to sample f rom input vectors > \

− dm < DistanceMeasure > \

− x < maximum number o f iterations > \

− cd < optional convergence delta. De f ault is 0.5 > \− ow < overwrite output directory i f present > \

− cl < run input vector clustering a f ter computing Canopies > \

−xm < execution method : sequential or mapreduce > [6]

Das Beispiel listet 10 Eingabeparameter auf. Der K-Means Knoten kann diese Anzahl vonArgumenten natürlich nicht aufnehmen, über den Dialog können lediglich: -i, -o, -k, -x Para-meter konfiguriert werden.Notwendige Benutzereingaben für den Knoten sind:

1. Pfad zu Vektoren (-i)

2. Anzahl der Cluster (-k)

Als optionale Parameter können

• Ausgabeverzeichnis (-o)

• Maximale Anzahl Iterationen (-x)

• Hadoop auf einem Cluster laufen lassen

15

Page 24: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

3 Implementierung und Ausführung Mahout-Knoten

(a) Max. Anzahl Iterationen wird gesetzt (b) Standartwert für Max. Anzahl der Iterationen ver-wenden

Abbildung 3.1: Mahout-Knoten Dialog

angegeben werden. Wird der Haken jedoch nicht gesetzt, wird die Anzahl der Iterationen stan-dardmäßig auf 10 gesetzt. Beide Darstellungen werden in der Abbildung 3.1 gezeigt.

Wie in Kapitel 2 bereits erwähnt, muss auf der Maschine Hadoop laufen, um einen Mahout-Job ausführen zu können. D.h. vor einem Mahout-Algorithmus muss Hadoop konfiguriert undgestartet werden. Der Knoten führt folgende Schritte durch:

• Hadoop stoppen

• HDFS formatieren

• Hadoop starten

• 30 Sekunden Pause, damit Hadoop vollständig hochfährt

• Mahout-Algorithmus ausführen

Als Erstes wird Hadoop gestoppt, da es vorkommen kann, dass Hadoop bereits auf der Ma-schine läuft und sowohl der dritte Schritt (Starten) fehlschlagen als auch der Rest nicht ausge-führt wird.Ohne Formatierung könnte es vorkommen, dass sich fälschlicherweise alte Daten auf demDateisystem befinden und diese der Ausführung Probleme bereiten. Mit der Formatierung

16

Page 25: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

3.4 Ausführung innerhalb eines Hadoop-Clusters

wird sichergestellt, dass nur die zu verarbeitende Daten sich auf dem Dateisystem befinden.Für die korrekte Ausführung braucht Hadoop für das Starten eine gewisse Zeit, 30 Sekundensollten im Normalfall ausreichen, so dass die Ausführung eines Algorithmus nicht zu schnellkommt.Diese einzelne Befehle werden an ein Terminal übergeben und als Kommandozeilen aus-geführt. Um den Verlauf beobachten zu können, wird die Ausgabe in der unteren KNIME-Konsole als Info ausgegeben. So ist es für den Benutzer möglich einzelne Befehle, Fortschrittoder Fehler dort auszulesen.

3.4 Ausführung innerhalb eines Hadoop-Clusters

Abschnitt 3.3 beschreibt den Ablauf auf einem einzelnen Rechner. Es ist aber genauso möglichdie Ausführung auf mehrere Rechner, sprich Cluster, zu verteilen. Die Vorgehensweise unddafür notwendige Konfigurationen werden in diesem Abschnitt beschrieben.

Es gibt eine Reihe von Konfigurationen, die nur ein Mal eingetragen werden müssen undkeine Änderung mehr benötigen, falls man die virtuelle Maschine mehrmals klont. Werden je-doch andere Maschinen verwendet, müssen diese Konfigurationen auf allen Maschinen durch-geführt werden, damit Hadoop auf einem Cluster laufen kann.

In einem Cluster muss eine Maschine existieren, von der aus alle Befehle gestartet werden,diese Maschine wird im Folgenden master genannt. Andere Maschinen, die die Aufgabennur durchführen werden als slave bezeichnet. Auf welcher Maschine welche Änderungenvorgenommen werden müssen, werden mit dem jeweiligen Namen gekennzeichnet.Für die Ausführung auf einem Rechner wird /home/vm/local/hadoop Verzeichnis verwendet,für die Ausführung auf einem Cluster - /home/vm/local/hadoop-cluster. D.h. alle Änderungen,die jetzt folgen werden, werden auf das letzte Verzeichnis angewendet.

Als Erstes müssen alle IP-Adressen unter /etc/hosts eingetragen werden, z.B.:192.168.0.1 master192.168.0.2 slave192.168.0.3 slave2

Diesen Eintrag kann nur der Administrator durchführen:mit sudo vim /etc/hosts gelangt mant zum Vim-Fenstermit I (insert) kann man den Inhalt editierennach dem die Änderung vorgenommen wurde: Esc –> :wq (write + quit) –> Enter

17

Page 26: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

3 Implementierung und Ausführung Mahout-Knoten

Dateien, die im Verzeichnis /home/vm/local/hadoop-cluster angepasst werden:

conf/masters (master):master

conf/slaves (master):

masterslaveslave2

conf/core-site.xml (alle Maschinen):

<property>

<name>fs.default.name</name>

<value>hdfs://master:54310</value>

<description>

The name of the default file system</description>

</property>

conf/mapred-site.xml (alle Maschinen):

<property>

<name>mapred.job.tracker</name>

<value>master:54311</value>

<description>

The host and port that the MapReduce jobtracker runs</description>

</property>

conf/hdfs-site.xml (alle Maschinen):

<property>

<name>dfs.replication</name>

<value>2</value>

<description>

Default block replication</description>

</property>

18

Page 27: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

3.5 Beispiel

Auf allen Maschinen kann unter /home/vm/local/hadoop-cluster mit jps geschaut werden,welche Java-Prozesse laufen. Beim slave könnten die Ausgaben beispielsweise so aussehen:

Nach dem HDFS deamons gestartet wurden:

15183 DataNode15616 Jps

Nach dem MapReduce deamons gestartet wurden:

15183 DataNode15897 TaskTracker16284 Jps

HDFS und MapReduce daemons werden von dem Mahout-Knoten bei der Ausführung au-tomatisch gestartet.Wie man an der letzten Ausgabe erkennen kann, müssen DataNode und TaskTracker laufen,dies bedeutet, dass alles korrekt läuft. Ist die Ausgabe anders, wurde etwas falsch konfiguriert.Die einzelnen Prozess-ID’s werden sich von dem Beispiel höchstwahrscheinlich unterschei-den und ihr Wert spielt an dieser Stelle selbstverständlich keine Rolle.

3.5 Beispiel

Dieser Abschnitt beschreibt die Ausführung des Knotens anhand von synthetic_control.data.Die Datei befindet sich unter „Home“ –> „Mahout Example“.Schritt 1 KNIME starten, Doppelklick auf den MahoutKMeans-Knoten.Schritt 2 Knoten Konfigurieren: entweder über Doppelklick auf den Knoten oder rechterMausklick auf den Knoten und „Configure...“.Schritt 3 Als „Input file“ den Pfad „ /home/vm/Mahout Example/synthetic_control.data“wählen.Schritt 4 Für „Output working directory “ kann beliebiges Verzeichnis gewählt werden, z.B.„/home/vm/Mahout Example/output “ .Schritt 5 „Number of clusters“ auf 10 setzen (kann auch beliebig sein).Schritt 6 „CSV Writer “ Knoten hinzufügen und Ausgabedatei setzen.Schritt 7 Beide Knoten verbinden.Schritt 8 Ok & rechter Mausklick auf den Knoten –> „Execute“.

19

Page 28: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

3 Implementierung und Ausführung Mahout-Knoten

Abbildung 3.2 stellt den fertigen Workflow dar.

Abbildung 3.2: Mahout-KMeans-Knoten Beispiel

Nach einer erfolgreichen Ausführung wird eine Ausgabedatei im Ordner „output“ von Ma-hout angelegt. Diese beinhaltet gelabelte Vektoren.Die Struktur der Daten, wie sie an weitere Knoten von K-Means Knoten übergeben wird, siehtman in der von CVS Writer Knoten erstellten Datei (Abbildung 3.3). Die Zeilen in der CSV-Datei stellen je einen Vektor dar, die letzte Zelle beinhaltet das Label. Die Labels werden vonMahout vergeben und gelangen unverändert in den Output vom K-Means Knoten.Somit werden 10 Vektoren der Länge 60 und eine Spalte fürs Label erstellt.

Abbildung 3.3: CSV Writer Ausgabe

3.6 Fehlerbehebung

Dieses Kapitel beschreibt mögliche Fehler, die bei der Konfiguration auftauchen können undLösungen, die zur Behebung weiterhelfen sollen. Hauptsächlich handelt es sich um die Ein-richtung der virtuellen Maschine, da diese als Voraussetzung (für die korrekte Ausführung derKnoten) richtig konfiguriert werden soll und um Fehlermeldungen, die während der Ausfüh-rung der Knoten auftauchen können.

Einbinden der Platte Falls das Hinzufügen der Platte einen Fehler derart „virtual box could

20

Page 29: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

3.6 Fehlerbehebung

not find an open hard disk with uuid...“ auftaucht, kann man mit folgenden Schritten die Ma-schine auf andere Art und Weise hinzufügen:

1. Neue Maschine erstellen.

2. Z.B. „Ubuntu“ benennen, Arbeitsspeichergröße wählen.

3. Vorhandene Festplatte verwenden.

4. Gewünschte virtuelle Maschine auswählen.

5. Maschine starten.

IP-Adresse vergeben Bekommen mehrere virtuelle Maschinen die gleiche IP-Adresse, mussdie MAC-Adresse geändert werden. Dies ist unter „Ändern“ –> „Netzwerk“ –> „Adapter 2“–> „MAC-Adresse:“ –> „aktualisieren“ möglich.

Grafikkartenanzeige verbessern Wird die Anzeige etwas verlangsamt, d.h. Fenster werdenmit Zeitverzögerung aufgemacht, kann unter „Ändern“ –> „Anzeige“ Grafikspeicher erhöhtund 3-D Beschleunigung aktiviert werden. Dies wird die Reaktionszeit der Anzeige verbes-sern.DiskErrorException Bei einer Exception: „org.apache.hadoop.util.DiskChecker$DiskErrorException:Could not find output/spill0.out in any of the configured local directories “ führen Sie denKnoten erneut aus oder starten Sie die ganze Maschine neu.

21

Page 30: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

4 Workflow aus Mahout-Knoten

Im Kapitel 3 beschriebene Knoten sind einzelne Knoten, die die ganze Mahout Aufgabe ineinem einzelnen Knoten ausführen. Angefangen mit dem Kopieren von Daten ins HDFS bishin zur Verarbeitung der Daten lokal oder auf einem Cluster.Auf der einen Seite bieten solche Knoten die Möglichkeit, gewünschte Einstellungen schnellin einem Knoten vorzunehmen und nur diesen einen Knoten auszuführen, auf der anderenSeite kann es aufgrund großer Datenmenge, die verarbeitet wird, ziemlich lästig werden z.B.einzelne Parameter zu ändern und den Algorithmus erneut auszuführen. Denn dadurch wer-den die Daten wieder ins HDFS kopiert, obwohl sie schon ohnehin auf dem HDFS vorhandenwaren.Damit ist die Ausführung in einem einzelnen Knoten nicht immer sinnvoll, da man den ganzenAblauf neustarten muss und nicht erst ab dem Punkt, an dem sich die Einstellungen geänderthaben. Um diese Einschränkung zu beseitigen wird der ganze Ablauf in mehrere Knoten ge-splittet.

4.1 Beschreibung Mahout-Knoten

Die Ausführung beinhaltet 5 Schritte. Diese 5 Schritte entsprechen auch den einzelnen Kno-ten:

1. Starten von Hadoop

2. Kopieren der Daten ins HDFS

3. Verarbeitung der Daten (z.B. Clustering)

4. Holen der Daten aus HDFS und Übergabe an den nächsten Knoten

5. Stoppen von Hadoop

Durch so eine Aufteilung kann der Ablauf ab einem beliebigen Knoten neugestartet werden,ohne, dass vorherige Knoten ausgeführt werden. Möchte man beispielsweise die Anzahl der

22

Page 31: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

4.1 Beschreibung Mahout-Knoten

Abbildung 4.1: Mahout Workflow

Abbildung 4.2: Konfiguration Start-Knoten

Cluster ändern, so muss eine Änderung beim dritten Knoten vorgenommen werden, damitwerden Knoten 1 und 2 nicht mehr wiederholt ausgeführt, es werden die selben Daten ausHDFS verwendet, die zuvor übertragen wurden.

Knotenübersicht:Start (Abbildung 4.2):Der Benutzer kann Hadoop lokal oder auf einem Cluster starten. Falls Hadoop bereits läuft,kann angegeben werden, dass dieser Knoten nur als Startknoten verwendet wird, ohne Ha-doop zu starten.

Input (Abbildung 4.3):Beim Input muss eine Datei ausgewählt werden, die ins HDFS übertragen wird. Dieser Kno-

23

Page 32: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

4 Workflow aus Mahout-Knoten

Abbildung 4.3: Konfiguration Input-Knoten

ten übergibt dann dem nächsten Knoten die Referenz auf die Daten, so dass die Verarbeitungim nächsten Knoten stattfinden kann.

Clustering (Abbildung 4.4):In diesem Knoten kann der Algorithmus ausgewählt und dazu notwenige Parameter wie An-zahl der Cluster, maximale Anzahl der Iterationen gesetzt werden.

Fetch (Abbildung 4.5):Fetch-Knoten bietet die Möglichkeit, Daten von HDFS auf lokalem Rechner zu speichernoder die Daten an den nächsten Knoten zu übergeben.

Stop (Abbildung 4.6):Dieser Knoten kann ausgeführt werden, um Hadoop zu stoppen.

Recommender (Abbildung 4.7):Bei einem Recommender-Knoten kann die Anzahl der Empfehlungen gesetzt werden.

24

Page 33: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

4.1 Beschreibung Mahout-Knoten

Abbildung 4.4: Konfiguration Clustering-Knoten

Abbildung 4.5: Konfiguration Fetch-Knoten

25

Page 34: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

4 Workflow aus Mahout-Knoten

Abbildung 4.6: Konfiguration Stop-Knoten

Abbildung 4.7: Konfiguration Recommender-Knoten

26

Page 35: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

5 Szenario und Evaluation

In diesem Kapitel wird ein mögliches Szenario vorgestellt, wie der Mahout Knoten in Einsatzgebracht werden kann. In diesem Szenario wird der Mahout Knoten in ein KNIME Work-flow eingebunden. Für die Evaluation wird der standardmäßige Knoten aus KNIME mit demMahout Knoten verglichen.

5.1 Szenario

Es wird ein einfaches Szenario mit einem Clustering Verfahren und einem Klassifikator be-trachtet. Ein Klassifikator benötigt 2 Eingangsquellen. Beim ersten Input handelt es sich umTrainingsdaten, d.h. Daten die bereits klassifiziert wurden, anhand dieser Daten wird der zwei-te Input, den sogenannten Testdaten, analysiert und klassifiziert. Als letzter Schritt wird dasErgebnis in einem Diagramm grafisch dargestellt.Als Clustering Verfahren wird „K-Means“ gewählt, für den Klassifikator empfiehlt sich andieser Stelle der „K Nearest Neighbor“ Klassifikator. Warum die Entscheidung auf „K Nea-rest Neighbor“ fiel, wird im Abschnitt 5.1.2 erläutert.

5.1.1 KNIME K-Means

KNIME besitzt bereits einen Knoten für das Clustern der Daten nach dem K-Means Algo-rithmus. Abbildungen 5.1 und 5.2 zeigen je den Workflow vor und nach der Ausführung.Die Trainingsdaten werden über den File Reader Knoten eingelesen und dem K-Means Kno-ten übergeben. Dieser clustert alle Eingangsvektoren und übergibt gelabelte Vektoren dem KNearest Neighbor Knoten. Ein zweiter File Reader Knoten liest die Testdaten ein und leitetsie ebenfalls an den K Nearest Neighbor Knoten als zweiter Input.Nach einer erfolgreichen Klassifikation werden die Testdaten über den Bar Chart Knoten imDiagramm angezeigt.

27

Page 36: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

5 Szenario und Evaluation

Abbildung 5.1: KNIME K-Means vor der Ausführung

Abbildung 5.2: KNIME K-Means nach der Ausführung

28

Page 37: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

5.1 Szenario

Abbildung 5.3: Mahout K-Means vor der Ausführung

5.1.2 Mahout K-Means

Im Gegensatz zu einem standardmäßigen K-Means Knoten aus KNIME ist der Mahout K-Means Knoten auf die Verarbeitung großer Daten ausgelegt, deswegen besitzt der letzte keineEingangskante für z.B. einen File Reader Knoten, da die Daten als Eingabedateien über dasDialogmenü übergeben werden. Ein File Reader Knoten nimmt bereits beim standardmäßi-gen K-Means viel Zeit in Anspruch und dies bevor K-Means überhaupt ausgeführt wird, beigrößeren Daten würde die Einlesezeit ins Unermessliche steigen und würde keinen Vorteilbringen, da die Daten sowieso ins HDFS kopiert werden und der Benutzer sie bereits auf dereigenen Platte hat. Dies hat zur Folge, dass der Workflow mit dem Mahout Knoten etwas klei-ner ausfällt.Ein weiterer Unterschied ist bei der Ausgabe des Mahout K-Means Knotens zu sehen. Es istnicht möglich alle Inputvektoren gelabelt auszugeben, da die Daten wiederum zu groß sindund der nächste Knoten überlastet wäre. Hilfe an der Stelle verschafft möglichst kleine Aus-gabe und dies ist nur möglich, wenn man Zentroide (Schwerpunkte) gelabelt ausgibt. D.h. beik gesetzten Clustern verkleinert sich die Ausgabe auf k gelabelte Vektoren.Besitzt man nur die Zentroide als Trainingsdaten, empfiehlt es sich für die Testdaten zu ent-scheiden, zu welchem Zentroid der jeweilige Vektor am nähesten liegt, aus diesem Grundwurde an der Stelle der „K Nearest Neighbor“ Klassifikator verwendet.Die Testdaten stellen kleine Daten dar. Somit bekommt der Klassifikator nur kleine Daten anbeiden Input-Kanten und führt die Klassifikation wesentlich schneller durch als beim KNIMEK-Means Knoten.

29

Page 38: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

5 Szenario und Evaluation

Abbildung 5.4: Mahout K-Means nach der Ausführung

5.2 Evaluation

5.2.1 Einzelinstanz

Um die Performance vergleichen zu können, wird bereits in diesem Kapitel vorgestelltes Sze-nario verwendet. Es werden die gleichen Daten für zwei Workflows verwendet und für denAblauf benötigte Zeit gemessen. Die beiden Workflows unterscheiden sich in der Anzahl derFile Reader Knoten, K-Means Knoten von Mahout benötigt keinen File Reader, und an denbeiden K-Means Knoten, Workflow 1 mit dem K-Means Knoten von KNIME, Workflow 2mit dem K-Means Knoten von Mahout.

Testumgebung:

• Intel(R) Core(TM) i7-2640M CPU 2.80 GHz

• 2 GB Arbeitsspeicher

• HDD Festplatte

• 10 MB Textdatei für die Testdaten

• 1 MB - 4 GB Textdateien für die Trainingsdaten

• 10 Cluster für K-Means Output

30

Page 39: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

5.2 Evaluation

• Maximal 10 Iterationen

Die Test- und Trainingsdaten wurden mit einem Generator erstellt.

KNIME K-MeansGröße FR1 FR2 K-Means KNN Gesamt1 MB 0 sec 4 sec 2 sec 13 sec 19 sec10 MB 5 sec 6 sec 15 sec 3:40 min 4:06 min50 MB 15 sec 5 sec 1:15 min 20:41 min 22:16 min200 MB 1:10 min 6 sec 5:19 min 1:41:06 h 1:47:41 h500 MB 1:47 min 4 sec 12:02 min HS HS1 GB 3:59 min 5 sec 26:38 min HS HS2 GB 9:10 min 5 sec 1:08 h HS HS4 GB 20:46 min 6 sec HS HS HS

Mahout K-MeansGröße FR K-Means KNN Gesamt1 MB 3 sec 2:01 min 1 sec 2:05 min10 MB 4 sec 2:06 min 1 sec 2:11 min50 MB 4 sec 2:31 min 1 sec 2:36 min200 MB 5 sec 3:53 min 0 sec 3:58 min500 MB 5 sec 6:56 min 0 sec 7:01 min1 GB 5 sec 11:18 min 1 sec 11:24 min2 GB 4 sec 20:50 min 0 sec 20:54 min4 GB 3 sec 42:21 min 2 sec 42:26 min

FR - File Reader vor dem K Nearest Neighbor Knoten (Testdaten Mahout)FR1 - File Reader vor dem K-Means Knoten (Trainingsdaten KNIME)FR2 - File Reader vor dem K Nearest Neighbor Knoten (Testdaten KNIME)HS - Java Heap Space OverflowKNN - K Nearest Neighbor

Tabelle 5.1: Vergleich K-Means KNIME und Mahout (Laufzeiten)

Tabelle 5.1 zeigt die Ausführungszeiten beider Workflows mit der jeweiligen Größe derTestdaten in der ersten Spalte. Dabei wurde nur die Zeit für der Verarbeitung betrachtet, d.h.die Zeit zwischen dem Starten und Beenden eines Workflows und nicht die, die für das Kon-figurieren eines Knotens benötigt wurde. Denn z.B. der File Reader Knoten benötigt bereitsbei der Konfiguration einer Datei, die größer als 50 MB ist, einige Minuten, um die Dateieinzulesen. Dies würde dann gegen den K-Means Knoten von KNIME sprechen, da dieserdie Daten vom File Reader übergeben bekommt. Die Testdaten haben eine geringe Größe undbenötigen bei beiden Workflows etwa die gleiche Zeit für das Einlesen, da sie Daten für denK Nearest Neighbor Knoten liefern.

31

Page 40: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

5 Szenario und Evaluation

Abbildung 5.5: K-Means Java heap space overflow

Die beiden File Reader Knoten (FR2 vom K-Means KNIME Knoten und FR vom K-MeansMahout Knoten) benötigen etwa die gleiche Zeit, da sie in beiden Fällen die gleiche Funktionerfüllen. FR1 ist im Workflow mit dem Mahout Knoten nicht vorhanden und ist somit nur beikleinen Daten vernachlässigbar.Der Vorteil für den K Nearest Neighbor Knoten bei Mahout, dass dieser höchstens 2 Sekun-den für die Verarbeitung braucht, liegt, wie im Abschnitt 5.1.2 beschrieben, daran, dass nurdie Zentroide an diesen übergeben werden und nicht der ganze Input gelabelt von K-Means.Bei einer Dateigröße bis 10 MB ist der Overhead für das Starten und Stoppen von Hadoop sogroß, dass es an der Stelle vorteilhafter ist den standardmäßigen K-Means Knoten von KNI-ME zu benutzen.Bei 500 MB bekommt der K Nearest Neighbor Knoten ein Java Heap Space Overflow Pro-blem. Obwohl K-Means mit den Dateien solcher Größe zurechtkommt, scheitert es am nächs-ten Knoten. Dabei ist die Verarbeitung mit dem Mahout Knoten nicht nur schneller, sondernüberhaupt möglich.Eine 4 GB große Datei kann auch der K-Means KNIME Knoten nicht mehr bewältigen, JavaHeap Space Overflow lautet wieder die Fehlermeldung (Abbildung 5.5). Mit einer Gesamt-laufzeit von 42:26 min ist die Verarbeitung derselben Datei im Workflow mit dem MahoutKnoten erfolgreich abgeschlossen.

32

Page 41: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

5.2 Evaluation

Die Entscheidung für die Verarbeitung zwischen den beiden Knoten lässt sich anhand derGröße der Trainingsdaten klären. Nur die Laufzeit der beiden K-Means Knoten zu messenund zu vergleichen macht wenig Sinn, da diese unterschiedliche Ausgaben haben. Wenn imWorkflow mit dem KNIME K-Means Knoten bei kleinen Daten die Laufzeit für den File Rea-der vernachlässigbar ist, so beträgt diese Zeit bereits bei 200 MB fast 1/3 der Gesamtlaufzeitim Workflow mit dem Mahout Knoten.In jedem Durchgang wurde der Workflow entweder abgebrochen oder mit einer bestimmtenGesamtlaufzeit und zu verarbeitenden Dateigröße erfolgreich beendet. Abbildung 5.2.1 zeigtdie durchschnittliche Menge an MB, die innerhalb einer Minute verarbeitet wurde. Rote Liniestellt den Workflow mit dem Mahout Knoten, blaue Linie den mit dem KNIME Knoten dar.Der höchste Wert beim KNIME Knoten konnte mit 1 MB in 19 sek. erreicht werden, diesentspricht etwa 3.16 MB/min. Danach hat die durchschnittliche Menge bei den Tests abge-nommen und endete mit dem 4-ten Durchlauf mit einer Dateigröße von 200 MB.Die durchschnittliche Menge im Workflow mit dem Mahout Knoten pro Minute stieg mit derwachsenden Größe der Daten bis 2 GB. Bei knapp über 2 GB wäre ein Hochpunkt zu er-warten. Danach nahm die Menge pro Minute langsam ab. Z.B bei einer Verdoppelung derDatenmenge von 2 GB auf 4 GB ist die Geschwindigkeit nur um fast 2 MB/min gefallen.

33

Page 42: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

5 Szenario und Evaluation

1 200 500 1024 2048 4096

0

10

20

30

40

50

60

70

80

90

100

3.16

Dateigröße in MB

MB

/min

Durchschnittlich verarbeitete Größe / Minute

Mahout KnotenKNIME Knoten

Bemerkung: Die Evaluation wurde mit dem K-Means-Knoten durchgeführt, da dieAufteilung des Knotens (in Start-, Input-, Clustering- und Fetch-Knoten) keine relevanteÄnderung mit sich bringt. Diese Knote führen die gleichen Aufgaben durch und übergebendie Ergebnisse weiter an den nächsten Knoten. Die Zeiten für die Ausführung werden in derTabelle 5.2 gegenübergestellt.

Mahout K-Means vs. Mahout WorkflowGröße Start Input Clustering Fetch Stop Gesamt K-Means1 GB 45 sec 1:14 min 10:08 min 8 sec 1 sec 12:16 min 11:18 min2 GB 45 sec 2:26 min 17:32 min 9 sec 1 sec 20:53 min 20:50 min4 GB 46 sec 6:20 min 33:50 min 9 sec 1 sec 40:20 min 42:21 min

Tabelle 5.2: Vergleich K-Means Mahout und Mahout Workflow (Laufzeiten)

34

Page 43: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

5.2 Evaluation

5.2.2 Cluster

Die Verarbeitung der Daten kann nicht nur auf einem Rechner stattfinden, sondern aufmehrere Knoten in einem Cluster verteilt werden. Als Cluster wird hier zum Vergleich nochein Rechner mit folgenden Werten und Testdaten zu der vorherigen Maschine hinzugefügt:

• AMD Phenom II X4 945 3 GHz

• 4 GB Arbeitsspeicher

• HDD Festplatte

• Netzwerkkarte mit 1 Gbit/s

• 10 MB Textdatei für die Testdaten

• 1 GB - 16 GB Textdateien für die Trainingsdaten

• 10 Cluster für K-Means Output

• Maximal 10 Iterationen

Daraus ergibt sich ein kleines Netzwerk aus insgesamt 2 Maschinen. Als Master wird diegleiche Maschine aus Abschnitt 5.2.1 verwendet. Die zweite Maschine wird in diesem Fallals Slave eingesetzt.

Einzelinstanz K-Means Cluster K-MeansGröße FR K-Means KNN Gesamt FR K-Means KNN Gesamt1 GB 5 sec 11:18 min 1 sec 11:24 min 5 sec 09:35 min 1 sec 09:41 min2 GB 4 sec 20:50 min 0 sec 20:54 min 5 sec 16:44 min 1 sec 16:50 min4 GB 3 sec 42:21 min 2 sec 42:26 min 5 sec 30:45 min 1 sec 30:51 min8 GB 3 sec 1:27:47 h 2 sec 1:27:51 h 4 sec 1:06:38 h 1 sec 1:06:43 h16 GB 5 sec 2:53:42 h 1 sec 2:53:48 h 4 sec 2:12:08 h 1 sec 2:12:13 h

FR - File Reader vor dem K Nearest Neighbor Knoten (Testdaten Mahout)KNN - K Nearest Neighbor

Tabelle 5.3: Vergleich K-Means Mahout Einzelinstanz und Cluster

Wie man aus der Tabelle 5.3 ablesen kann, sind bereits bei der kleinst gewählten Menge von1 GB Größe deutlich bessere Ergebnisse bei der Durchlaufzeit in einem Cluster zubeobachten. Die ganzen Daten müssen zwar über’s Netzwerk auf alle Rechner übertragenwerden, doch die Verteilung der Aufgaben auf mehrere Prozessorkerne bringt eine schnellereVerarbeitung und verkürzt somit auch die Gesamtlaufzeit. Bei 4 GB z.B. ist dieDurchlaufzeit um ca. 25% schneller.

35

Page 44: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

5 Szenario und Evaluation

1 2 4 8 16

90

100

110

120

130

Dateigröße in GB

MB

/min

Durchschnittlich verarbeitete Größe / Minute

EinzelinstanzCluster

Abbildung 5.6: Verarbeitungsgeschwindigkeit Einzelinstanz und Hadoop Cluster

36

Page 45: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

5.2 Evaluation

Abbildung 5.6 stellt den Vergleich zwischen einer einzelnen Maschine (blau) und einemCluster aus zwei Maschinen (rot) dar. Der starke Abfall der Performanz bei 8 GB wird durcheine zusätzliche Auslastung der Rechner verursacht, was wiederum zeigt, dass die Leistungder einzelnen Maschinen von großen Bedeutung ist.Insgesamt betrachtet ist eine deutliche Steigerung der Performanz im Gegensatz zu einerMaschine zu sehen.

37

Page 46: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

6 Schlussbetrachtung

6.1 Ergebnisse dieser Arbeit

In dieser Bachelorarbeit konnte ich mein im Studium erlerntes Wissen in der Entwicklungdes Projektes anwenden und vertiefen. Angefangen mit der Planung des gesamten Ablaufesüber Programmierung bzw. einer Weiterentwicklung eines bestehendes Projektes bis hin zumkontinuierlichen Testen und der Evaluation des Endergebnisses.Im Laufe der Arbeit bin ich auf einige Schwierigkeiten gestoßen, die ich mit Hilfe meinerAnsprechpartner (Betreuer), beseitigen konnte.

Obwohl das Ergebnis dieser Arbeit nicht die ultimative Lösung für alle Algorithmen ausMahout ist, sehe ich das Projekt als erfolgreich an, da dieses die Möglichkeit bietet, KNIMEund Mahout zu verbinden und dadurch das Arbeiten mit Mahout den KNIME Nutzern zurealisieren.

6.2 Ausblick

Der Mahout-Knoten stellt bereits eine Schnittstelle zwischen Mahout und KNIME dar, es istaber genauso möglich weitere Knoten zu erstellen. Der erste Grund warum es nicht nur einenMahout-Knoten für alle Algorithmen gibt, ist, dass die Eingabe unterschiedlich sein kann,aber auch die Ausgabe bei den meisten Algorithmen auf eine andere Art und Weiseausgelesen werden muss. Ein weiterer Grund ist die Weitergabe der Daten innerhalb einesWorkflows, denn auch hier ist der Entwickler für die Weitergabe der Daten, also wie undwelche Daten weitergeleitet werden, verantwortlich. Zusätzlich müssen Entscheidungengetroffen werden, welche Einstellungen der Benutzer für den jeweiligen Knoten vornehmendarf.In dieser Arbeit vorgestellte Clustering Verfahren und Recommendation können nochzusätzlich um Klassifikatoren erweitert werden. Dabei handelt es sich um mehrereKlassifikatoren aus der Mahout Sammlung.

38

Page 47: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

7 Anhang

Beiliegend zu dieser Ausarbeitung ist eine DVD mit der virtuellen Maschine verfügbar.Diese enthält unter ’Documents’ die Entwicklungsumgebung mit dem Quellcode, dieKNIME-Umgebung und die Beispieldaten auf dem Desktop.

39

Page 48: Bachelorarbeit Einbindung des Mahout-Frameworks in das KNIME … · 2014-10-08 · Mahout enthält Algorithmen, die auf Hadoop Plattform ausgeführt werden und somit Vertei-lung der

Literaturverzeichnis

[1] KNIME.com AG, 2013. CTAN: http://www.knime.org.

[2] Cheng-Tao Chu, Sang Kyun Kim, Yi-An Lin, Yuan Yuan Yu, Gary Bradski, Andrew Y.Ng, and Kunle Olukotun. Map-Reduce for Machine Learning on Multicore.

[3] Actian Corporation. Pervasive partner, 2013. CTAN:http://bigdata.pervasive.com/Partners/KNIME.aspx.

[4] J. Deanl and S. Ghemawat.MapReduce - Simplified Data Processing on Large Clusters. San Francisco, USA,2004.

[5] The Apache Software Foundation. Hdfs users guide, 2012. CTAN:http://hadoop.apache.org/common/docs/current/hdfs_user_guide.html.

[6] The Apache Software Foundation. K-means clustering, 2013. CTAN: https://cwiki.apache.org/confluence/display/MAHOUT/K-Means+Clustering.

[7] Maciej Niemczyk. Entwurf und Implementierung eines Verfahrens zur Analysekomplexer Daten insbesondere auf strukturelle Ähnlichkeit. pages 46–47, 2011.

[8] Michael G. Noll, 2013. CTAN: http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/.

[9] Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout In Action. 2011.

[10] Paul Levi und Ulrich Rembold. Einführung in die Informatik für Naturwissenschaftlerund Ingenieure. (4), 2003.

40