Leseprobe
Inhaltsverzeichnis
Abbildungsverzeichnis
Tabellenverzeichnis
Verzeichnis der Listings
Abkürzungsverzeichnis
1 Einleitung
1.1 Big Data
1.2 Zielsetzung
1.3 Methodik
1.4 Aufbau der Arbeit
2 Grundlagen
2.1 Hadoop
2.2 YARN
2.3 MapReduce
2.4 Hadoop Distributed File System
2.5 Support Vector Machine
2.6 Statistiksoftware und Programmiersprache R
3 Strukturierte Qualitätsberichte von Krankenhäusern
3.1 Grundlagen der strukturierten Qualitätsberichte
3.2 Aufbau der strukturierten Qualitätsberichte
4 Installation und Administration von Hadoop
4.1 Setup
4.2 Installation und Einrichtung des Ubuntu-Servers
4.3 Installation und Einrichtung von Hadoop
4.4 Test der Hadoop Installation
5 Durchführung der Analyse
5.1 Vorüberlegungen
5.2 Analyseverfahren
5.2.1 k-Means Clustering
5.2.2 Regressionsanalyse mit einer Support Vector Machine
5.3 Anforderungen an die Programme
5.4 Auswertungsergebnisse
5.4.1 Durchführung k-Means Clustering in R
5.4.2 Durchführung der Support Vector Regression in R
6 Diskussion und Zusammenfassung
7 Fazit und Ausblick
7.1 Fazit der Analyse von strukturierten Qualitätsberichten
7.2 Ausblick
Literaturverzeichnis
Abbildungsverzeichnis
Abbildung 1: Das 3-V Modell nach Doug Laney
Abbildung 2: Die vier Vs von Big Data
Abbildung 3: Abgrenzung der Datengruppen
Abbildung 4: Lineare Skalierbarkeit des Hadoop Frameworks
Abbildung 5: Interaktion Client und Hadoop Cluster
Abbildung 6: Hierarchische Struktur eines Hadoop Clusters
Abbildung 7: Ablauf eines MapReduce Programms
Abbildung 8: Architektur und Funktionsweise des HDFS
Abbildung 9: Datensätze zu erfolgreichen und nicht erfolgreichen Operationen
Abbildung 10: Verschiedene berechnete mögliche Trennlinien zwischen den Daten
Abbildung 11: Durch die SVM berechnete Hyperebene
Abbildung 12: Ausschnitt eines Qualitätsberichts
Abbildung 13: Setup für den Aufbau eines Hadoop-Clusters
Abbildung 14: Clustering nach k-Means
Abbildung 15: Regressionsgerade und -linie einer SVR
Abbildung 16: Prozess der Datenextraktion
Abbildung 17: Schematische Darstellung der Hierarchie der XML Dokumente
Abbildung 18: Auswertungsergebnis aus MapReduce und Verarbeitung in R
Abbildung 19: Support Vector Regression der diagnostizierten Rückenleiden
Tabellenverzeichnis
Tabelle 1: Übersicht über die drei Dimensionen der Qualität
Tabelle 2: Übersicht über das Setup
Tabelle 3: Möglichkeiten einer Regressionsanalyse mit Beispielen
Tabelle 4: Übersicht der Hadoop Jobs
Tabelle 5: Komponenten des Hadoop-Ecosystems
Verzeichnis der Listings
Listing 1: Zwei XML Dateien, die jeweils ein Buch beschreiben
Listing 2: Pseudo-Code einer Map-Funktion für das Programm WordCount
Listing 3: Pseudo-Code einer Reduce-Funktion für das Programm WordCount
Listing 4: Installation des JDK unter Ubuntu Linux mithilfe von apt-get
Listing 5: Einrichten des SSH-Zugangs für den Benutzer hduser
Listing 6: Umgebungsvariablen für Hadoop 2.7.2
Listing 7: Manuelles Starten der einzelnen Hadoop Dienste
Listing 8: Main-Methode des Programms WordCount
Listing 9: Innere Klasse für die Map-Phase
Listing 10: Codeausschnitt für den Reducer des Testprogramms
Listing 11: Aufbau eines Drivers am Beispiel AnalyzeDiagnosePlzDriver.class
Listing 12: Ermittlung aller Kindknoten für die Analyse der ICD_10 Codes
Listing 13: Ausschnitt der Konfigurationsdatei pom.xml eines Maven-Projekts
Listing 14: Ausschnitt des Ergebnisses der Auswertung AnalyzeBfKhQuote.jar
Listing 15: R-Skript k-Means Clustering
Abkürzungsverzeichnis
Abbildung in dieser Leseprobe nicht enthalten
1 Einleitung
1.1 Big Data
Der Begriff Big Data ist ein Synonym für die ansteigenden und täglich generierten Datenmengen, die gespeichert und verwaltet werden müssen. Aus diesen Daten lassen sich neue Informationen und Wissen ableiten. Da es für den Begriff Big Data keine eindeutige Definition gibt, wird der Begriff sehr häufig beschrieben als unstrukturierte, in großen Mengen und in verschiedenen Formaten vorliegende Daten, die in die festen Strukturen der relationalen Datenbanksysteme (RDBS) nur schwer übernommen werden können. Wird der Begriff Big Data in der Internetsuchmaschine Google eingegeben, werden ca. 431.000.000 Suchergebnisse in 0,48 Sekunden zurückgegeben.[1]
Die unumstrittene Definition von Big Data wurde durch das Unternehmen Gartner im Jahre 2011 entwickelt. Gartner stützt sich in der Definition auf das 3-V Modell, dessen Entstehung auf dem Forschungsbericht '3D Data Management: Controlling Data Volume, Velocity, and Variety' von Doug Laney aus dem Jahre 2001 basiert. Das sogenannte 3-V Modell nach Doug Laney wird in Abbildung 1 veranschaulicht.[2]
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 1: Das 3-V Modell nach Doug Laney.[3]
Wie in der Abbildung 1 dargestellt, besteht Big Data aus den drei Dimensionen:
- Die Dimension Velocity (engl. Geschwindigkeit) beschreibt die ansteigende Geschwindigkeit, mit der Daten erzeugt werden.
- Variety (engl. Vielfalt) zeigt die steigende Vielfalt der generierten Daten an und
- Volume (engl. Volumen) stellt den steigenden Speicherbedarf bzw. das Volumen der Daten dar.[4]
Das Unternehmen IBM erweiterte das 3-V Modell schließlich um die vierte Dimension Veracity (engl. Wahrhaftigkeit). Je mehr Daten gesammelt werden, desto höher ist die Wahrscheinlichkeit, dass Daten falsch bzw. verfälscht werden, unvollständig sind oder nur wenig Informationsgehalt haben. Diese Daten zu bereinigen und von den vollständigen Daten zu filtern, ist mit großem Aufwand verbunden. Die folgende Abbildung 2 zeigt die vier Vs von Big Data in der Übersicht.[5]
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 2: Die vier Vs von Big Data.[6]
Ein weiterer Aspekt von Big Data ist der Verarbeitungsaufwand. Pavlo Baron schreibt in seinem Buch „Ich hatte z.B. einen Fall, bei dem es um lächerliche Datenmengen ging, die problemlos auf einen USB-Stick gepasst hätten. Man erwartete allerdings simultane Zugriffszahlen im zweifachen Millionenbereich pro Sekunde [...] das ist definitiv Big [...]“[7] Aus dieser Perspektive betrachtet man nicht nur die Größe der Daten, sondern auch ihre Komplexität der Aufbereitung und Informationsgewinnung. Freiknecht be-
schreibt in seinem Buch ,Big Data in der Praxis‘ ein Beispiel über eine wenige 100 Megabyte (MB) große Videoaufzeichnung eines Kaufhauses. Mit dieser Aufzeichnung sollen Kundenströme analysiert und situationserkennende Algorithmen implementiert werden. Die Beispiele von Freiknecht und Baron zeigen, dass Big Data nicht nur im Zusammenhang mit großen Datenmengen zu sehen ist, sondern auch die Komplexität von Daten betrachtet werden muss.[8]
1.2 Zielsetzung
Mit der zunehmenden Digitalisierung von Prozessen und Arbeitsschritten wird eine Vielzahl umfangreicher Daten generiert. Diese Daten können in eine der nachstehenden Gruppen eingeordnet werden. Die Datengruppen unterscheiden sich in
- unstrukturierte,
- semi-strukturierte und
- strukturierte Daten.[9]
Unter den unstrukturierten Daten werden u.a. Fließtexte oder Daten verstanden, die kein erkennbares Muster haben. Semi-strukturierte Daten weisen ein bestimmtes aber nicht standardisiertes Schema auf. Strukturierte Daten finden sich primär in relationalen Datenbanksystemen wieder. Die Daten werden in festen Tabellen (Schemata) gespeichert, die in Beziehung zueinander stehen. Die nachstehende Abbildung 3 verdeutlicht die Abgrenzung der Datengruppen anhand gängigster Technologien.[10]
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 3: Abgrenzung der Datengruppen.[11]
Wie in Abbildung 3 zu erkennen ist, sind semi-strukturierte Daten weder vollkommen unstrukturiert noch besitzen Sie eine gänzlich festgelegte Struktur. Dieser Zusammenhang wird am nachstehenden Beispiel zweier eXtensible Markup Language (XML) Dateien im Listing 1 deutlich.[12]
Abbildung in dieser Leseprobe nicht enthalten
Listing 1: Zwei XML Dateien, die jeweils ein Buch beschreiben.[13]
Listing 1 zeigt an einem Beispiel von zwei XML Dateien über Buchdatensätze, dass semistrukturierte Daten eine innere Struktur besitzen, sich aber untereinander unterscheiden können. Die im Listing 1 gezeigte Datei Buch_1.xml besitzt im Gegensatz zu Buch_2.xml zusätzlich zu den Angaben des Autors und des Titels die Informationen ISBN und Verlag.[14]
Zielsetzung dieser Arbeit ist es, strukturierte Qualitätsberichte des Gemeinsamen Bundesausschusses (G-BA) von Krankenhäusern im Dateiformat XML mithilfe des Frameworks und Programmiermodels Hadoop MapReduce zu analysieren. Die Herausforderung besteht darin, dass die strukturierten Qualitätsberichte einen definierten Aufbau haben, sich aber wie die Beispiele aus Listing 1 unterscheiden können.
1.3 Methodik
Zur Durchführung der Textanalysen wird ein Hadoop Cluster mit drei Servern erstellt. Die Server werden als virtuelle Maschinen (VM) mit dem Betriebssystem Ubuntu Linux Server installiert. Die Erstellung des Clusters, die Installation der Server mit Hadoop sowie die Administration werden in Kapitel 4 genauer erläutert. Für die Analyse der strukturierten Qualitätsberichte werden MapReduce Programme in der Programmiersprache Java -Version 8- entwickelt. Als Entwicklungsumgebung wird die integrierte Entwicklungsumgebung (IDE) Eclipse in der Version 4.5.2 -Projektname Mars.2- eingesetzt. Für die Literaturrecherche werden sowohl klassische Literatur als auch Literatur und Fachaufsätze aus den Plattformen IEEE Xplore und EBSCO Host herangezogen.
1.4 Aufbau der Arbeit
Das Kapitel 2 beschreibt die Grundlagen des Hadoop Frameworks und erläutert die Architektur Yet Another Resource Manager (YARN), den Aufbau und Ablauf des Programmiermodells MapReduce sowie die Funktionsweise des Hadoop Distributed File System (HDFS). Im Anschluss daran werden das mathematische Modell der Support Vector Machines (SVM) und die Statistiksoftware R vorgestellt. In Kapitel 3 werden die zu untersuchenden strukturierten Qualitätsberichte aus Krankenhäusern beschrieben und deren Aufbau erläutert. Das Kapitel 4 behandelt das Setup für diese Arbeit und beschreibt die Installation und Administration der Server und von Hadoop.
Im darauf folgenden Kapitel 5 wird die Durchführung der Analyse beschrieben. Im Wesentlichen werden die Vorüberlegungen und das Erstellen der MapReduce Programme betrachtet. Anschließend werden die Auswertungsergebnisse und eine weitere mögliche Verarbeitung mit den vorgestellten Analyseverfahren k-Means Clustering und der Support Vector Regressionsanalyse (SVR) in R erläutert. Das Kapitel 6 setzt sich mit der Diskussion der Vor- und Nachteile des Einsatzes von Hadoop im Zusammenhang mit der
Analyse von Qualitätsberichten auseinander. In Kapitel 7 wird ein Fazit über das eingesetzte Verfahren zur Analyse gezogen und ein Ausblick auf weitere Technologien gegeben.
2 Grundlagen
Die Menge unstrukturierter Daten wächst im Zeitalter von Social Web und Industrie 4.0 stark an. Dies liegt zum Einen an den neuen Technologien und Übertragungsgeschwindigkeiten, zum Anderen an der Verbreitung neuer elektronischer Geräte wie bspw. Smartphones und Tablets oder der Drahtloskommunikationstechnologien Radio Frequency Identification (RFID) und Near Field Communication (NFC). Mit dem Open Source Framework der Apache Foundation Hadoop lassen sich die generierten Daten ggü. nicht verteilten Systemen durch Verteilung auf verschiedene Knoten effizienter verarbeiten. In diesem Kapitel werden die Grundlagen und Kernbestandteile von Hadoop sowie die Support Vector Machines und die Statistiksoftware R erläutert.[15]
2.1 Hadoop
Hadoop ist ein Softwareframework der Apache Foundation für die verteilte Verarbeitung großer Datenmengen mithilfe von Server-/Computer-Clustern. Ein Cluster besteht aus mehreren miteinander vernetzten Rechnern bzw. Servern. Zum Einen erhöht ein Cluster die Rechenkapazität, zum Anderen wird die Ausfallsicherheit eines Systems erhöht. Ha- doop wurde von der Apache Foundation so konzipiert, dass die Erweiterung von einem kleinen zu einem größeren Cluster mit einer Vielzahl von Computern/Servern mit verhältnismäßig wenig Aufwand durchführbar ist. Eine der großen Stärken von Hadoop ist, dass Fehler und Probleme in Soft- und Hardware bereits auf der Anwendungsschicht erkannt und behandelt werden können. Dies bedeutet im Umkehrschluss, dass mit Einsatz von Hadoop Kosten für teure neue Hardware eingespart werden können.[16]
Für die dezentrale Verarbeitung von großen Datenmengen gibt es einen großen Markt mit vielen Softwareherstellern (z.B. Microsoft Data Warehouse). Hadoop hat gegenüber vielen Herstellern die nachstehenden sechs besonderen Eigenschaften:
- Erreichbarkeit,
- Robustheit,
- Skalierbarkeit,
- Verfügbarkeit,
- Open Source und
- Einfachheit.[17]
Unter der Erreichbarkeit versteht man, dass Hadoop auf großen Clustern oder als Service in der Cloud wie bspw. Amazons Elastic Compute Cloud (EC2) angeboten wird. Der Zugriff auf Hadoop ist 24 Stunden am Tag und an 7 Tagen in der Woche möglich. Die Robustheit eines Hadoop Systems liegt darin begründet, dass das Framework zum Einen sowohl auf aktuellen als auch auf älteren oder ausrangierten Systemen problemlos läuft. Zum Anderen ist Hadoop so konzipiert, dass das System trotz fehlerhafter Hardware lauffähig bleibt.[18]
Das Hadoop Framework ist linear skalierbar und das Hinzufügen von weiteren Recheneinheiten (Rechner/Server) innerhalb eines Clusters ist mit verhältnismäßig wenig Aufwand möglich. Die lineare Skalierbarkeit eines Systems kann mit der Formel
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 4: Lineare Skalierbarkeit des Hadoop Frameworks.[20]
Hadoop ist eine Open Source Software, die kostenlos von der Webseite des Apache Projektes heruntergeladen werden kann. Die Dokumentation des Projektes beinhaltet sowohl eine ausführliche Installationsanleitung als auch ausführliche Beispiele. Hadoop bietet zudem -wie viele andere Open Source Projekte- eine große Community zum gegenseitigen Austausch.[21]
Die Einfachheit von Hadoop liegt darin begründet, dass Anwendungen für Hadoop mit wenig Aufwand erstellt werden können. Diese Anwendungen müssen nicht zwangsläufig in Java geschrieben werden, sondern können auch in anderen Programmier- und Skriptsprachen wie bspw. Python oder C erstellt werden. Für die Ausführung von MapReduce Jobs bietet sich u.a. auch die an die Structured Query Language (SQL) angelehnte Skriptsprache Pig (engl. Schwein) an. Für Pig sind keine besonderen Programmierkenntnisse erforderlich und die Erstellung von MapReduce Jobs ist mit dieser Skriptsprache mit wenig Aufwand möglich.[22]
Die Kommunikation mit einem Hadoop Cluster erfolgt i.d.R. über die Clients (Desktop- PCs, Notebooks etc.). Die nachstehende Abbildung 5 veranschaulicht die Interaktion von Clients mit einem Hadoop Cluster.[23]
Wie zu erkennen ist, besteht ein Hadoop Cluster aus mehreren Rechnern bzw. Servern, die über ein Netzwerk miteinander verbunden sind. Diese Systeme befinden sich in einem Data-Center, oft auch im gleichen Serverschrank (engl. Rack). Die Speicherung und Verarbeitung der Daten werden im Cluster vorgenommen. Für die Verarbeitung von Daten senden unterschiedliche Nutzer ihre Verarbeitungsjobs an den Cluster. Die Verteilung der Daten und Jobs innerhalb des Clusters erfolgt automatisch durch den sogenannten Mas- ter-Knoten.[24] [25]
Innerhalb eines Clusters koordiniert der Master-Knoten (Master-Node) alle ihm unterstellten Knoten (Slave-Node). Dem Master-Node ist bekannt, auf welchem Slave-Node welche Daten gespeichert sind, und er kennt die zurzeit ausgeführten Jobs. Während des Betriebs übernimmt der Master die Aufgaben
- Entgegennahme,
- Steuerung,
- Verteilung,
- Überwachung der Jobs,
- Datenbereitstellung sowie
- Überwachung des Clusters.[26]
Aufgrund der umfangreichen Steuerungsfunktionen wird der Master-Knoten in der Literatur häufig als ,Single Point of Failure‘ bezeichnet. Ein Ausfall des Master-Knotens hätte einen Ausfall des Gesamtsystems zur Folge. Da der Master-Knoten selbst keine Berechnungen und Auswertungen übernimmt, ist ein Ausfall der Maschine relativ selten. Die nachstehende Abbildung 6 zeigt den organisatorischen Aufbau eines Hadoop-Clusters.[27] [28]
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 6: Hierarchische Struktur eines Hadoop Clusters.218
In der Abbildung 6 werden auch die Dienste gezeigt, die jeweils auf einem Knoten in einer Hierarchiestufe ausgeführt werden. Auf dem Master Knoten werden die Dienste Resource Manager, Name Node, Job History Server sowie JobTracker ausgeführt. Der Masterknoten verteilt mithilfe dieser Dienste die Jobs optimal an die ihm untergeordneten Slaves (z.B. anhand der Auslastung oder Erreichbarkeit), übernimmt die Fehlerbehandlung und nimmt die Ergebnisse der Verarbeitung entgegen. Die Dienste Node Manager und Data Node werden von den Slaves ausgeführt. Der Node Manager fordert sogenannte Datencontainer vom Resource Manager des Masters an und verwaltet diese. Der Data Node beinhaltet die Datencontainer und dient als Speicher. Der Name-Node und der Data- Node sind im engeren Sinn Programme, die in der Programmiersprache Java geschrieben worden sind und können daher unabhängig von der Plattform bzw. des Betriebssystems ausgeführt werden. Im Umkehrschluss bedeutet das, dass jeder Rechner, auf dem Java installiert ist, einen Name- und Data-Node erstellen kann. Diese Dienste sind Teil der Softwarearchitektur YARN, die im folgenden Kapitel 2.2 genauer beschrieben wird.[29]
2.2 YARN
Mit der Version 2 von Hadoop wurde die Softwarearchitektur Yet Another Resource Manager (YARN) eingeführt. Mit Einführung von YARN können Benutzer des Systems nicht nur MapReduce Programme, sondern auch andere verteilte Programmtypen auf Hadoop ausführen. Hadoop verwendet in einem Cluster einen sog. Resource Manager, um alle Jobs zu planen und zu verwalten. Die Verwaltung der Slaves übernimmt der Node Manager, der auf jedem Slave ausgeführt wird und mit dem Resource Manager des Masterknotens kommuniziert. Die Kapazitäten (Rechenleistung und Speicher) der Slaves werden in sog. Containern eingeteilt. Der Resource Manager des Masters und die Node Manager der Slaves haben keine Informationen über die aktuellen Jobs -sie verwalten lediglich die Container. Diese beiden Prozesse sind taskneutral und belegen daher keine Kapazitäten.[30]
Jede Anwendung, die Berechnungen durchführt, muss den sog. Application Master starten. Dieser Dienst verwaltet den auszuführenden Job. Die Ausführung des Application Master Dienstes erfolgt innerhalb eines Datencontainers und benötigt somit Rechenkapazitäten. Um eine Anwendung auszuführen, muss der Application Master zur Laufzeit beim Resource Manager ggf. weitere Container anfordern bzw. gibt Container bei Nichtgebrauch wieder frei. Dies hat zur Folge, dass die Beziehung zwischen dem Resource Manager und dem Application Master zur Laufzeit eines Programms dynamisch ist.[31]
Der Workflow eines Hadoop Jobs verläuft i.d.R. wie folgt:
1. Der Client übermittelt den Job an den Resource Manager.
2. Der Resource Manager wählt einen Knoten im Cluster aus und lässt über den Node Manager einen Application Master starten.
3. Der Application Master, der in einem Container läuft, fordert für die Durchführung des Jobs weitere Container beim Resource Manager an.
4. Die anschließend zugewiesenen Container werden von den entsprechenden Node Managern aktiviert und verwaltet.
5. Sobald der Application Master mit den zugewiesenen Containern den Job ausführt, treten die Prozesse Resource Manager und der Node Manager in den Hintergrund.
6. Der Zustand eines Jobs wird an den Application Master gemeldet.
7. Sobald der Job abgeschlossen ist, werden die Container (Ressourcen) durch den Application Master an den Resource Manager wieder freigegeben.[32]
2.3 MapReduce
MapReduce ist ein Programmiermodell zur Verarbeitung großer Datenmengen auf verteilten Systemen. Das Modell wurde erstmals im Jahr 2004 von den Google Mitarbeitern Jeffrey Dean und Sanjay Ghemawat vorgestellt. Google stand damals vor der Herausforderung, die riesigen und durchaus komplexen Datenmengen schnell zu verarbeiten. Hierzu wurden verschiedene und komplexe Programmiermodelle entwickelt, die jeweils nur für eine bestimmte Aufgabenstellung verwendet werden konnten. Google sah sich daher gezwungen, ein neues, abstrakteres Modell zu entwickeln, das für die meisten Problemstellungen verwendet werden kann. Aus dieser Problemstellung entstand das Programmiermodell MapReduce. MapReduce lässt sich in die drei Phasen
- Map,
- Combine und
- Reduce unterteilen.[33]
In der Map-Phase werden Schlüssel/W ert-Paare vom Programm erstellt, indem der Benutzer einen gewünschten Index festlegt. Diesem Index werden Teile der Eingabedaten zugeordnet, sodass am Ende eine Liste mit Schlüssel/Wert-Paaren ausgegeben wird. Die in der Map-Phase erstellten Indizes können mehrfach vorkommen. In der darauf folgenden Combine-Phase werden alle Werte aggregiert, sodass keine doppelten Indizes mehr vorhanden sind. In der letzten Phase, der sog. Reduce-Phase, werden die aggregierten Schlüssel/W ert-Paare zusammengefasst. Die nachstehende Abbildung 7 verdeutlicht den Ablauf eines MapReduce Programms anhand der Aufsummierung von Kfz Neuzulassungen in verschiedenen Städten.[34]
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 7: Ablauf eines MapReduce Programms.[35]
Bei den Eingabedaten beschreiben die ersten Alpha-Zeichen die Stadt und die letzten beiden Zahlen die Anzahl der Neuzulassungen an einem Tag[36]. Die übergebenen Eingabedaten werden in der Map-Phase zu Schlüssel/Wert-Paaren umgewandelt. In der darauf folgenden Combine-Phase werden die Daten aggregiert, sodass die Schlüssel eindeutig sind. In der Reduce-Phase werden die Werte eines Schlüssels aufsummiert. Die Erstellung eines MapReduce Programms erfolgt immer nach dem gleichen Muster. Der nachstehende Pseudocode in Listing 2 verdeutlicht den Aufbau der Map-Phase am Beispiel des Programms WordCount. Mit dem Programm WordCount sollen alle Wörter gezählt werden, die in einem Dokument vorkommen.[37]
Abbildung in dieser Leseprobe nicht enthalten
Listing 2: Pseudo-Code einer Map-Funktion für das Programm WordCount.[38]
Die Map-Phase übernimmt die Funktion map aus Listing 2. Der Parameter key beinhaltet den Namen eines Dokuments und der Parameter value speichert den Inhalt des Dokuments. In der For-Schleife ab Zeile 4 wird für jedes Wort der Wert 1 gesetzt und als neues Schlüssel/Wert-Paar zurückgegeben. Die anschließende Reduce-Phase wird mit dem Pseudo-Code in Listing 3 verdeutlicht.[39]
Abbildung in dieser Leseprobe nicht enthalten
Listing 3: Pseudo-Code einer Reduce-Funktion für das Programm WordCount.[40]
Die Reduce-Phase nimmt als Eingabeparameter den Schlüssel key und die Werte values in Form einer Liste entgegen. In der Schleife ab Zeile 6 im Pseudo-Code werden für alle Schlüssel die Werte (1) aufaddiert.[41]
2.4 Hadoop Distributed File System
Das Hadoop Distributed File System (HDFS) ist das Dateisystem von Hadoop. Mit dem HDFS wird es ermöglicht, Dateien und Daten auf einen Knoten im Cluster abzulegen. Das HDFS entstand aus einem Bericht der Firma Google zum Thema Google File System (GFS). Google entwickelte das GFS, um die Datenmengen in Clustern besser verwalten und verarbeiten zu können. Aus Googles GFS entwickelte die Apache Foundation das Hadoop Distributed File System. Das HDFS soll die folgenden Anforderungen erfüllen können:
- Betrieb auf sog. Commodity Hardware (engl. ausrangierte/gebrauchte Hardware),
- Ausfallsicherheit,
- Speicherung großer Datenmengen,
- Verarbeitung großer Datenmengen und
- Skalierbarkeit.[42]
Das HDFS setzt auf den bereits existierenden Dateisystemen auf (z.B. Fourth Extended Filesystem (ext4)), sodass das Anlegen einer separaten Partition entfällt. Einer der wesentlichen Unterschiede des HDFS gegenüber traditioneller Dateisysteme ist, dass die Blockgröße durchschnittlich zwischen 64 MB und 128 MB groß ist. Die traditionellen Dateisysteme arbeiten typischerweise mit Blockgrößen von 1 Kilobyte (KB) bis 64 KB. Durch die deutlich größeren Blockgrößen kann Hadoop größere Datenblöcke im HDFS verteilen. Die nachstehende Abbildung 8 veranschaulicht die Architektur und Funktionsweise des HDFS.[43] [44]
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 8: Architektur und Funktionsweise des HDFS.44
Der Name Node erhält vom Client eine Datei, die im HDFS gespeichert werden soll. Der Name Node benötigt die Informationen über die Aufteilung der Datei (Blockgröße) und Anzahl der Repliken. Mit diesen Metadaten werden so viele Data Nodes gesucht, wie der Client durch die Replikenanzahl fordert. Die Adressen der Data Nodes werden an den Client übermittelt, sodass dieser beginnen kann, die Daten zu übertragen. Um die Effizienz des Systems zu steigern, sortiert der Name Node die Liste der Data Nodes vor der Übergabe der Datei nach bestimmten Parametern (z.B. bester Datendurchsatz, beste Erreichbarkeit etc.). Der Client weiß somit, welcher Knoten im Cluster am besten erreichbar und geeignet ist.[45]
2.5 Support Vector Machine
Eine Support Vector Machine (SVM) ist ein mathematisches Verfahren zur Mustererkennung von Objekten. Die SVM ist in das Themengebiet des maschinellen Lernens einzuordnen und kann sowohl für die Klassifizierung von Objekten als auch für die Regressionsanalyse eingesetzt werden. Um Objekte in einem Datenuniversum zu klassifizieren, berechnet die SVM eine Entscheidungslinie -die sog. Hyperebene (engl. Hyperplane).
[...]
[1] Vgl. Collins (2015), S. 101; Google Suche ausgeführt am 26.04.2016 um 18:45 Uhr; Schroeck et al. (2012), S. 1; Zwick et al. (2013), S. 35
[2] Vgl. Gartner (2011); Klein et al. (2013), S. 320; Laney (2001), S. 1 ff.
[3] Quelle: In Anlehnung an Laney (2001), S. 3
[4] Vgl. Klein et al. (2013), S. 320; Laney (2001), S. 1 ff.; Schroeck et al. (2012), S. 4f.
[5] Vgl. Freiknecht (2014), S. 13; Gupta (2015), S. 1398; Schroeck et al. (2012), S. 5
[6] Quelle: In Anlehnung an Schön (2015), S. 5
[7] Quelle: Baron (2013), S. 1
[8] Vgl. Baron (2013); Freiknecht (2014), S. 14
[9] Vgl. Geisler (2014), S. 496 ff.
[10] Vgl. Schön (2015), S. 303
[11] Quelle: In Anlehnung an Geisler (2014), S. 497
[12] Vgl. Becher (2003), S. 3 ff.
[13] Quelle: Eigene Darstellung
[14] Vgl. Becher (2003), S. 3 ff.
[15] Vgl. Apache (2016); Wiehr (2011)
[16] Vgl. Apache (2016); Wartala (2012), S. 21; Sivaraman/Manickachezian (2014), S. 32; Zhu et al. (2014), S. 321
[17] Vgl. Apache (2016); Gupta (2015), S. 1399
[18] Vgl. Gunther et al. (2015), S. 48 f.; Lam (2011), S. 4 ff.
[19] Vgl. Gunther et al. (2015), S. 48
[20] Quelle: In Anlehnung an Gunther et al. (2015), S. 48
[21] Vgl. Apache (2016); Freiknecht (2014), S. 20
[22] Vgl. Gunther et al. (2015), S. 48 f.; Lam (2011), S. 4 ff.
[23] Vgl. Gunther et al. (2015), S. 48 f.; Lam (2011), S. 4 ff.
[24] Quelle: In Anlehnung an Lam (2011), S. 5
[25] Vgl. Lam (2011), S. 5
[26] Vgl. Eadline (2016), S. 19 ff.; Freiknecht (2014), S. 68 ff.
[27] Vgl. Freiknecht (2014), S. 68 f.
[28] Quelle: In Anlehnung an Freiknecht (2014), S. 69; Narayan et al. (2012), S. 536
[29] Vgl. Borthakur (2008), S. 5; Eadline (2016), S. 13 f.; Freiknecht (2014), S. 69 f.
[30] Vgl. Eadline (2016), S. 178 ff.; Freiknecht (2014), S. 25 ff.; Huang et al. (2015), S.80
[31] Vgl. Eadline (2016), S. 13
[32] Vgl. Eadline (2016), S. 13 f.
[33] Vgl. Apache MapReduce Tutorial (2016); Çatak/Balaban (2016), S. 7 ff.; Dean/Ghemawat (2004), S. 1; Dean/Ghemawat (2010), S. 72 ff.; Eadline (2016), S. 8; Narayan et al. (2012), S. 536; Zhang et al. (2014), S. 396
[34] Vgl. Dean/Ghemawat (2004), S. 2 ff.; Dean/Ghemawat (2010), S. 72; Freiknecht (2014), S. 42 f.; Kiran et al. (2013), S. 319; Narayan et al. (2012), S. 536
[35] Quelle: In Anlehnung an Çatak/Balaban (2016), S. 7; Freiknecht (2014), S. 43; Kiran et al. (2013), S. 320; Narayan et al. (2012), S. 536; Wartala (2012), S. 28
[36] Anm. des Autors: Die Zahlen sind frei erfunden
[37] Vgl. Apache MapReduce Tutorial (2016); Dean/Ghemawat (2010), S. 72
[38] Quelle: In Anlehnung an Apache MapReduce Tutorial (2016); Dean/Ghemawat (2010), S. 72
[39] Vgl. Apache MapReduce Tutorial (2016); Dean/Ghemawat (2010), S. 72
[40] Quelle: In Anlehnung an Apache MapReduce Tutorial (2016); Dean/Ghemawat (2010), S. 72
[41] Vgl. Borthakur (2008), S. 3 ff.; Dean/Ghemawat (2010), S. 72
[42] Vgl. Borthakur (2008), S. 3 f.; Freiknecht (2014), S. 21 f.; Lim/Choi (2013), S. 8
[43] Vgl. Borthakur (2008), S. 1 ff.; Freiknecht (2014), S. 21 f.; Ghemawat et al. (2003), S. 1 ff.; Narayan et al. (2012), S. 535 f.
[44] Quelle: In Anlehnung an Borthakur (2008), S. 5; Freiknecht (2014), S. 22; Lim/Choi (2013), S. 8
[45] Vgl. Borthakur (2008), S. 5; Freiknecht (2014), S. 22
- Arbeit zitieren
- Thorsten Kalweit (Autor:in), 2016, Installation und Anwendung einer Support Vector Machine: Hadoop MapReduce erläutert, München, GRIN Verlag, https://www.grin.com/document/368497
Kostenlos Autor werden
Kommentare