11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim



Ähnliche Dokumente
11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim

Hadoop. Eine Open-Source-Implementierung von MapReduce und BigTable. von Philipp Kemkes

Hadoop Demo HDFS, Pig & Hive in Action. Oracle DWH Konferenz 2014 Carsten Herbe

Einführung in Hadoop

Publizieren von Webs mit SmartFTP

Hadoop aus IT-Operations Sicht Teil 1 Hadoop-Grundlagen

MapReduce in der Praxis

Backup der Progress Datenbank

OP-LOG

Neue Ansätze der Softwarequalitätssicherung

Adminer: Installationsanleitung

1 Voraussetzungen für Einsatz des FRITZ! LAN Assistenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

KURZANLEITUNG DUPLICITY MIT CLOUD OBJECT STORAGE

Anwenderdokumentation PersoSim

Step by Step Webserver unter Windows Server von Christian Bartl

System-Update Addendum

IBM SPSS Modeler Entity Analytics - Erweiterte Konfiguration

Powermanager Server- Client- Installation

Lokale Installation von DotNetNuke 4 ohne IIS

Tutorial -

Senden von strukturierten Berichten über das SFTP Häufig gestellte Fragen

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

KURZANLEITUNG CLOUD OBJECT STORAGE

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

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

Installationsanleitung für pcvisit Server (pcvisit 15.0)

Eine Einführung in die Installation und Nutzung von cygwin

Installation der SAS Foundation Software auf Windows

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

Sichern der persönlichen Daten auf einem Windows Computer

Installationsanleitung für pcvisit Server (pcvisit 12.0)

Benutzer und Rechte Teil 1

Installation und Sicherung von AdmiCash mit airbackup

Anleitung: DV4Mini auf einem Raspberry Pi

FastViewer Remote Edition 2.X

OPERATIONEN AUF EINER DATENBANK

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

ESB - Elektronischer Service Bericht

MailUtilities: Remote Deployment - Einführung

TRIC DB Release 6.0. Refresh mit der Wiederherstellung der Produkte Siemens, Landis&Gyr und DEOS. für. Lizenznehmer der TRIC DB Version 6.0.

Installation Microsoft SQL Server 2008 Express

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

Die Installation des GeoShop Redirector für IIS (Internet Information Server, Version 4.0, 5.0 und 6.0) umfasst folgende Teilschritte:


Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

Daten Sichern mit dem QNAP NetBak Replicator 4.0

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

I. Travel Master CRM Installieren

Anwenderdokumentation AccountPlus GWUPSTAT.EXE

AnNoText. AnNoText Online-Update. Copyright Wolters Kluwer Deutschland GmbH

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Verschlüsseln von Dateien mit Hilfe einer TCOS-Smartcard per Truecrypt. T-Systems International GmbH. Version 1.0 Stand

Whitepaper. Produkt: combit Relationship Manager / combit address manager. SQL Server Backup mit SQLBackupAndFTP

Administrator Handbuch

Universität Leipzig - Softwaretechnik Praktikum 2014/2015 Installationsanleitung zum Projekt: Ein kartenbasiertes Multiplayer -Spiel

Clients in einer Windows Domäne für WSUS konfigurieren

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Warenwirtschaft Handbuch - Administration

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Dateisysteme und Datenverwaltung in der Cloud

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

SANDBOXIE konfigurieren

MSXFORUM - Exchange Server 2003 > Konfiguration NNTP unter Exchange 2003

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Update von Campus-Datenbanken (FireBird) mit einer Version kleiner 9.6 auf eine Version größer 9.6

Installation des edu- sharing Plug- Ins für Moodle

FIREBIRD BETRIEB DER SAFESCAN TA UND TA+ SOFTWARE AUF MEHR ALS EINEM COMPUTER

Automatische Installation (wenn das SSO-Applet nicht vorhanden ist)! Abbildung 1:Auswahldialog für Installationslaufwerk

MapReduce. Johann Volz. IPD Snelting, Lehrstuhl Programmierparadigmen

desk.modul : WaWi- Export

Einrichtung Secure-FTP

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

ISA Server 2004 Protokollierung - Von Marc Grote. Die Informationen in diesem Artikel beziehen sich auf:

Musterlösung für Schulen in Baden-Württemberg. Windows Basiskurs Windows-Musterlösung. Version 3. Stand:

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

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

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

Umbenennen eines NetWorker 7.x Servers (UNIX/ Linux)

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

telpho10 Update 2.1.6

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

Whitepaper. Produkt: List & Label 16. List & Label 16 unter Linux/Wine. combit GmbH Untere Laube Konstanz

Beheben von verlorenen Verknüpfungen

Kurzanleitung zur Installation des OLicense-Servers in Verwendung mit SimDiff/SimMerge

4D Server v12 64-bit Version BETA VERSION

Profi cash 10. Electronic Banking. Installation und erste Schritte. Ihre Spezialisten für den elektronischen Zahlungsverkehr und moderne Bezahlsysteme

INSTALLATIONSANLEITUNG

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Software-Lizenzierung und Aktivierung: Verteilen von Software mit Apple Remote Desktop

Ihr CMS für die eigene Facebook Page - 1

Datensicherung EBV für Mehrplatz Installationen

Installation Linux agorum core Version 6.4.5

Medea3 Print-Client (m3_print)

Wissenswertes über LiveUpdate

TechNote. Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung

Transkript:

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 1/80 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim Dr. Christian Baun wolkenrechnen@gmail.com 7.12.2011

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 2/80 Wiederholung vom letzten Mal Peer-to-Peer (P2P) Grundlagen Einsatzgebiete Zentralisiertes P2P Napster Pures bzw. reines P2P Gnutella Version 0.4 Hybrides P2P Gnutella Version 0.6 FastTrack BitTorrent Verteilte Hashtabelle Bitcoins P2PTV Wuala P2P und Cloud

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 3/80 Heute Eckdaten Grundlagen Ablauf Einsatzgebiete Google PageRank Komponenten und Erweiterungen Hadoop Distributed File System (HDFS) Pig Hive HBase Cloudera Installationsanleitung Beispiele mit der Installation Amazon Elastic MapReduce Weitere MapReduce-Implementierungen

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 4/80 Unternehmen wie Google, Yahoo, Facebook und Twitter müssen täglich Datenmengen im Bereich mehrerer GB und PB speichern und verarbeiten Die Verarbeitung großer Datenmengen geschieht heute häufig mit verteiltem Rechnen in Clustern Es existieren 2 grundlegende Aufgabenbereiche: 1 Die Daten müssen möglichst effizient gespeichert werden 2 Die Daten müssen möglichst effizient verarbeitet werden

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 5/80 Datenspeicherung und Datenverarbeitung Zur effizienten Datenspeicherung entwickelte Google das verteilte Cluster-Dateisystem Google File Sytem (GFS) GFS arbeitet nach dem Master-Slave-Prinzip Fehlertoleranz bei Hardwareausfällen erreicht GFS durch Replikation S. Ghemawat, H. Gobioff, S. Leung. The Google File System. Google. 2003 http://labs.google.com/papers/gfs-sosp2003.pdf Das Standardvorgehen bei verteilten Systemen ist üblicherweise: Es findet ein Transfer der zu verarbeitenden Daten zum Programm statt Ein Programm startet auf einem Rechner und holt die benötigten Eingabedaten von einer Quelle (z.b. FTP-Server oder Datenbank) Dieses Vorgehen ist bei großen Datenmengen wegen des Datentransfers ein Flaschenhals und somit nicht optimal Lösung: Die Datenverarbeitung muss dort stattfinden, wo die Daten gespeichert sind = Das ist mit dem MapReduce-Programmiermodell möglich

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 6/80 Zwei Bedeutungen von MapReduce Mit MapReduce sind häufig 2 Dinge gemeint 1 MapReduce-Programmiermodell Für die parallele Datenverarbeitung in Clustern 2 MapReduce-Frameworks (z.b. Hadoop) Arbeiten nach dem MapReduce-Programmiermodell Unterscheiden sich durch die Wahl der Programmiersprache und in den Implementierungsdetails

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 7/80 Eckdaten zu MapReduce J. Dean, S. Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. Google 2004 http://labs.google.com/papers/mapreduce-osdi04.pdf Das MapReduce-Programmiermodell teilt Aufgaben in kleine Teile auf und verteilt sie zur gleichzeitigen Verarbeitung auf unterschiedliche Rechenknoten Das Endergebnis entsteht durch die Zusammenführung der Teilergebnisse Oliver Fischer. Verarbeiten großer verteilter Datenmengen mit Hadoop. heise Developer. 2010 http://heise.de/-964755 Google stellte MapReduce 2003 und das Google File System 2004 vor Das führte zum Entstehen freier Reimplementierungen (Open Source) Die Implementierungen von Google wurden nicht veröffentlicht

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 8/80 Eckdaten zu Hadoop 2005 implementierte Doug Cutting MapReduce für Nutch Nutch ist eine freie in Java geschriebene Suchmaschine http://nutch.apache.org Cuttings Implementierung war die Grundlage des Projekts Hadoop Hadoop ist eine freie Implementierung von GFS und MapReduce http://hadoop.apache.org Seit 2008 koordiniert die Apache Software Foundation die Entwickelung Hadoop ist ein Top-Level-Projekt der Apache Software Foundation Im Juli 2009 hat ein Hadoop-Cluster von Yahoo 100 Terabyte in 2 Stunden und 53 Minuten sortiert (http://sortbenchmark.org)

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 9/80 Wurzeln von MapReduce Das Konzept MapReduce hat seine Wurzeln in Lisp Lisp kennt die beiden Funktionen map() und reduce() Lisps map-funktion wird mit einer Liste von Eingabewerten und einer Funktion als Parameter aufgerufen Die übergebene Funktion wird auf jeden Wert der Liste anwendet Lisps reduce-funktion ruft man auch mit einer Funktion und einer Liste mit Eingabewerten auf Reduce arbeitet ähnlich wie map, führt aber alle Ergebnisse zusammen

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 10/80 MapReduce und funktionale Programmierung MapReduce basiert auf dem Prinzip funktionale Programmierung Funktionale Programmierung ist ein Programmierstil, bei dem Programme ausschließlich aus Funktionen bestehen Funktionale Programme sind eine Menge von (Funktions)-Definitionen (Funktions)-Definitionen sind partielle Abbildungen von Eingabedaten auf Ausgabedaten Die Eingabedaten werden nie verändert! Die Funktionen sind idempotent (frei von Seiteneffekten) Bei jedem identischen Aufruf wird das gleiche Ergebnis zurückgeliefert Es werden ausschließlich Berechnungen mit Eingabedaten durchgeführt und dann neue (Zwischen-)Ergebnisse gebildet Google verwendet MapReduce für den PageRank-Algorithmus

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 11/80 MapReduce Michael Nebel. Arbeiten mit großen verteilten Datenmengen: Hadoop. ix 3/2007. S.84-86 MapReduce besteht aus 3 Schritten: 1 Partitionierung der Ausgangsdaten 2 Abbilden (Mappen) der Daten auf eine Datenstruktur, die aus einem Schlüssel-Wert-Paar besteht und Kombinieren der Daten map (k1,v1) list (k2,v2) 3 Reduzieren (Reduce) der Schlüssel-Wert-Paare zum Ergebnis reduce (k2,list(v2)) list (v2)

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 12/80 MapReduce Ablauf Das MapReduce-Programmiermodell unterteilt die Verarbeitung in eine Map- und eine nachfolgende Reduce-Phase, die verteilt auf allen Rechnern eines Clusters ausgeführt werden Quelle: Christophe Bisciglia, Tob White. An Introduction to Hadoop. 2009 Ein zentraler Master, der die verfügbaren Worker einer der beiden Phasen zuordnet, koordiniert und überwacht die MapReduce-Anwendungen

MapReduce Ablauf im Detail (1) Quelle: J. Dean, S. Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. Google. 2004 Quelle: Rainer Grimm. Funktionale Programmierung (3): Das MapReduce-Framework. Linux Magazin. 2009 1 Das MapReduce-Framework unterteilt die Eingabe in m Teile, startet den Master und die Worker-Prozesse im Cluster 2 Der Master weist die m Map-Aufgaben und r Reduce-Aufgaben den entsprechenden Knoten zu 3 Jeder Map-Prozess liest die Eingabedaten Schlüssel-Wert-Paare ein, verarbeitet sie mit der Map-Funktion und schreibt die Zwischenergebnisse in den Speicher 4 Jeder Map-Prozess schreibt die Zwischenergebnisse periodisch in r Dateien auf seine Festplatte und teilt die Namen der Dateien dem Master mit Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 13/80

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 14/80 MapReduce Ablauf im Detail (2) Quelle: J. Dean, S. Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. Google. 2004 Quelle: Rainer Grimm. Funktionale Programmierung (3): Das MapReduce-Framework. Linux Magazin. 2009 5 Jeder Reduce-Prozess bekommt vom Master die Adressen der Zwischenergebnisse mitgeteilt, liest alle für ihn bestimmten Schlüssel-Wert-Paare ein und sortiert die Schlüssel-Wert-Paare nach deren Schlüsseln 6 Jeder Reduce-Prozess iteriert über die Schlüssel-Liste-von-Werten-Paare für jeden Schlüssel und akkumuliert die Liste von Werten zu einem Ausgabewert 7 Das MapReduce-Framework wartet, bis alle Map- und Reduce-Prozesse durchgelaufen sind und übergibt die Kontrolle wieder an die Anwendung

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 15/80 Beispiele, wo MapReduce hilfreich ist Verteilte Häufigkeitsanalyse Wie häufig kommen welche Wörter in einem umfangreichen Text vor? Map-Funktion: Schreibt <Wort, 1> in einen Zwischenspeicher Reduce-Funktion: Addiert die Werte für ein Wort zu <Wort, Summe> Verteiltes grep In welchen Zeilen eines Textes kommt ein Suchmuster vor? Map-Funktion: Schreibt gefundene Zeilen in einen Zwischenspeicher Reduce-Funktion: Reicht die Zwischenergebnisse zur Ausgabe durch Berechnung von Webseiten-Anfragen Map-Funktion: Durchsucht die Webserver-Logdaten und schreibt Schlüssel-Wert-Paare <URL, 1> in einen Speicher für Zwischenergebnisse Reduce-Funktion: Addiert die Werte für eine URL zu <URL, Summe> Graph mit Seitenverweisen (Web-Link Graph) Map-Funktion: Gibt <Ziel, Quelle> für jeden Link zu einer URL (Ziel) innerhalb einer Seite (Quelle) Reduce-Funktion: Schreibt alle Seiten (Quellen) in eine Liste, die mit einer URL (Ziel) assoziiert sind und gibt <Ziel, list(quelle)> zurück

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 16/80 Google PageRank Der PageRank-Algorithmus von Google bewertet verknüpfte (verlinkte) Dokumente (Webseiten) Entwickelt und patentiert von Larry Page und Sergei Brin Grundlage der Suchmaschine Google für die Bewertung von Webseiten Prinzip: Je mehr Links auf eine Webseite verweisen, umso höher ist ihr Gewicht (PageRank) Jede Webseite hat ein Gewicht Je höher das Gewicht der verweisenden Webseiten, desto größer ist der Effekt

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 17/80 Arbeitsweise des PageRank geklaut von Wikipedia Das Gewicht PR i einer Webseite i berechnet sich aus den Gewichten PR j der auf i verweisenden Seiten j Verweist j auf insgesamt C j verschiedene Seiten, so wird das Gewicht von PR j anteilig auf diese Webseiten aufgeteilt Definition des PageRank-Algorithmus durch diese Formel: PR i = 1 d N + d j {(j,i)} PR j C j N ist die Gesamtanzahl der Seiten d ist ein Dämpfungsfaktor zwischen 0 und 1 (üblicherweise 0,85) Ein kleiner Anteil des Gewichts (1 d) wird von jeder Webseite abgezogen und gleichmäßig auf alle erfassten Webseiten verteilt Verhindert, das das Gewicht zu Webseiten abfließt, die auf keine andere Webseite verweisen

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 18/80 PageRank mit MapReduce Schritt 1: Parse die Webseiten nach ausgehenden Links Schritt 2: Berechne iterativ den PageRank Schritt 3: Sortiere die Webseiten nach dem Pagerank

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 19/80 PageRank - Schritt 1: URL Parsen Mapper: Eingabe: index.html <htnl><a href="me.html">ich</a></html> Ausgabe für jeden ausgehenden Link: key: index.html value: me.html Reducer: Eingabe: key: index.html values: me.html, house.html, car.html,... Ausgabe: key: index.html value: 1.0, me.html, house.html, car.html,...

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 20/80 PageRank - Schritt 2: PageRank Berechnung Mapper: Eingabe: key: index.html value: pagerank me.html house.html car.html... Ausgabe: key: me.html value: index.html pagerank number of outlinks Reducer: Eingabe: key: me.html value: index.html 0.5 23 value: family.html 2.4 2... Ausgabe: key: me.html value: neuer pagerank index.html car.html...

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 21/80 PageRank: Iteration

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 22/80 PageRank - Schritt 3: Sortierung der Websites Sortiere alle Websites nach ihren PageRanks Mapper: Eingabe: key: index.html value: pagerank outlinks Ausgabe: key: pagerank value: index.html

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 23/80 Hadoop Komponenten und Erweiterungen Hadoop Distributed File System (HDFS) Pig: Datenbanksprache von Yahoo Hive: Data Warehouse von Facebook HBase: Datenbank zur Verwaltung sehr großer Datenmengen Das ist nur eine Auswahl der populären Komponenten/Erweiterungen Es gibt weitere Erweiterungen wie z.b. Chukwa und ZooKeeper Chukwa dient der Echtzeitüberwachung sehr großer verteilter Systeme ZooKeeper vereinfacht die Konfiguration verteilter Systeme Gute deutschsprachige Einführung zu Pig und Hive Ralf Falk, David Knaak, Michael Köster, Marko Salchow http://wiki.fh-stralsund.de/index.php/vergleich_hive_vs._pig

Hadoop Distributed File System (HDFS) Hadoop enthält das Hadoop Distributed File System (HDFS) Quelloffene Reimplementierung des Google File System (GFS) Fehlertolerantes, verteiltes Dateisystem Bildquelle: http://hadoop.apache.org Mehr Informationen: http://hadoop.apache.org/hdfs/ Von den Google-Clustern ist bekannt, dass sie aus kostengünstiger Standardhardware bestehen Ausfall einzelner Knoten keine Ausnahme, sondern der Normalfall = Fehlertoleranz ist ein wichtiges Ziel von GFS und HDFS Neue Knoten sollen leicht hinzugefügt werden können Datenmengen im Petabyte-Bereich müssen verwaltet werden können Gute Quelle: The Google file system, Ghemawat, Gobioff, Leung, 2003 Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 24/80

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 25/80 Architektur von HDFS (folgt dem Master/Slave-Schema) Namenode (Master) speichert und verwaltet die Metadaten und reagiert auf Ausfälle Existiert exakt ein Mal innerhalb eines HDFS-Clusters = Single Point of Failure Speichert keine Nutzdaten, sondern ausschließlich Metadaten Kennt alle im HDFS-Cluster existierenden Dateien und Verzeichnisse Erfasst die Blöcke (Chunks) der Dateien, die Anzahl der Kopien und deren Positionen (Datanodes) Überwacht die Verfügbarkeit der einzelnen Datanodes und verteilt die Blöcke neu, sobald ein Datanode ausfällt Datanodes (Slaves) speichern nur die Nutzdaten Besonderheit bei HDFS und GFS: Größe der Chunks ist 64 MB Die entstehende interne Fragementierung wird zugunsten des geringeren Netzwerkoverheads in Kauf genommen Clients kommunizieren mit dem Namenode und den Datanodes Der Namenode agiert nur als Verzeichnisdienst Er gibt Auskunft, auf welchen Datanodes eine gesuchte Datei liegt Lese- und Schreibzugriffe der Clients gehen direkt über die Datanodes

Datensicherheit bei HDFS Bildquelle: http://hadoop.apache.org/common/ docs/current/hdfs_design.html Dreifache Replikation der Nutzdaten auf unterschiedlichen Knoten garantiert Datensicherheit bei häufigen Ausfällen von Knoten Datanodes melden sich regelmäßig via Heartbeat beim Namenode Kommen von einem Datanode keine Meldungen mehr beim Namenode an, erklärt dieser den Datanode für ausgefallen Der Namenode weist dann die Replikation der betroffenen Datenblöcke an, um nicht unter die Mindestanzahl an Replikationen zu fallen Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 26/80

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 27/80 Lesezugriffe bei HDFS Der HDFS-Client ruft einen Webservice (zum Lesen) auf dem Namenode mit dem gewünschten Dateinamen als Parameter auf Der Namenode überprüft im Namespace, der sich im Arbeitsspeicher befindet, auf welchen Datanodes sich die Blöcke (Chunks) befinden Der Namenode liefert dem Client sog. Chunk-Handles, die Identifizierer eines Blocks auf den Datanodes darstellen, sowie eine Liste von Datanodes, die die Blöcke speichern Der HDFS-Client ruft den Webservice eines oder mehrerer Datanodes auf, um die Nutzdaten zu erhalten Die Datanodes lesen mit Hilfe der Identifizierer die HDFS-Blöcke von ihrer Festplatte und übertragen diese als Ergebnis zum Client

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 28/80 Schreibzugriffe bei HDFS (1) Der HDFS-Client ruft einen Webservice (zum Schreiben) auf dem Namenode mit dem gewünschten Dateinamen als Parameter auf Der Namenode überprüft, ob der Client Schreibrechte hat und ob die Datei bereits existiert Sind die Überprüfungen für den Client positiv, speichert der Namenode die Metainformation der Datei im Namespace Ist die Datei vorhanden oder hat der Client keine Schreibberechtigung, bricht der Namenode den Prozess durch eine Exception ab Es ist in HDFS nicht möglich, Dateien zu überschreiben Dateien überschreiben geht nur mit Löschen und Wiedereinstellen Der Client teilt die zu speichernde Datei in Blöcke und stellt diese in eine Queue Der Client arbeitet die Queue iterativ ab und ruft bei jedem Block die Webservice-Schnittstelle des Namenode auf, der eine Liste von Datanodes zurückliefert, die den Datenblock speichern soll Zusätzlich erhält der Client einen Identifizierer für den Block

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 29/80 Schreibzugriffe bei HDFS (2) Die Auswahl der Datanodes zur Speicherung eines Blocks ist konfigurationsabhängig Es existieren Konfigurationsmöglichkeiten, wie z.b. die Definition von Racks, um physisch benachbarte Server zu einem virtuellen Rack zusammenzuschließen (= rack-awareness) Ziel: Netzwerkverkehr einsparen Der HDFS-Client überträgt den Block und die Liste der Datanodes zu einem Datanode, der diese mit dem Identifizierer lokal speichert Nach der erfolgreichen Übertragung des Blocks leitet der Datanode den Block zur Speicherung zu einem weiteren Datanode der Liste weiter Der Vorgang wiederholt sich mit einem weiteren Datanode aus der Liste, bis die konfigurierte Anzahl der Replikation eines Blocks erreicht ist Alternative Dateisysteme in Hadoop Man muss nicht zwingend HDFS verwenden. Alternativen sind u.a. S3, CloudStore und FTP

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 30/80 Secondary Namenode bei HDFS Um Datenintegrität und nach einem Ausfall des Namenodes einen raschen Neustart zu gewährleisten, existiert der Secondary Namenode Dieser kann den Namenode bei einem Ausfall nicht ersetzen Der Secondary Namenode kommuniziert zu keiner Zeit mit den Clients Namenode speichert die Metadaten in Form eines Abbildes (Namespace) und einer Liste von Transaktionen auf diesem Abbild Beim Ausfall des Namenode müsste dieser alle Transaktionen virtuell durchführen, um das letzte bekannte Abbild wieder zu erhalten Das dauert bei großen Dateisystemen lange Der Secondary Namenode speichert das Abbild (Namespace) in Intervallen zur Sicherung Beim Ausfall des Namenode kann dieser beim Neustart das zuletzt gesicherte Abbild vom Secondary Namenode laden

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 31/80 Architektur des Google File System (GFS) Bildquelle: Google

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 32/80 Pig Kann für die Analyse sehr großer semi-strukturierter, strukturierter oder relationaler Datenmengen eingesetzt werden Enthält eine Programmiersprache für Datenabfragen und einen Compiler Die Programmiersprache ist Pig Latin (Schweine-Latein) Pig Latin wird als Dataflow Language (Datenflusssprache) bezeichnet Man definiert Abfolgen einzelner Transformationen auf Daten Somit sind ad-hoc Analysen in großen Datenbeständen möglich Der Compiler übersetzt Pig Latin-Anweisungen in MapReduce-Jobs Pig orchestriert auch die Ausführung der Jobs im Hadoop-Cluster Pig wird mit der Pig-Shell (Grunt) benutzt Grunt kann auch Skripte laden, um Befehle im Batch-Modus auszuführen

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 33/80 Pig Pig liest alle Datenformate ein, unabhängig von deren Aufbau Standardmäßig erwartet Pig die Daten als Klartext und Tab separiert Für die Interpretation anderweitig formatierter Daten kann man User Defined Functions (UDF) angeben Mit UDF kann man eigenen Code in Pig-Programme integrieren Apache mit Piggybank ein offenes Repository an http://svn.apache.org/repos/asf/pig/trunk/contrib/piggyban UDFs werden in Java geschrieben und als JAR-Datei in Pig integriert Vorteil von Pig: Reduktion der Komplexität gegenüber MapReduce-Abfragen

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 34/80 Kommandos von Pig Kommando load store foreach filter group/cogroup join order distinct union split stream dump limit Bedeutung Daten vom Dateisystem einlesen Daten in das Dateisystem schreiben Einen Ausdruck für alle Datensätze anwenden Alle Datensätze verwerfen, die nicht dem Filterregeln entsprechen Datensätze mit dem gleichen Schlüssel aus einer oder mehreren Eingabequellen sammeln Zwei oder mehr Eingabequellen nach einem Schlüssel kombinieren Datensätze nach einem Schlüssel sortieren Doppelte Datensätze löschen Zwei Datensätze zusammenführen Daten mit Filterregeln in zwei oder mehr Datensätze aufteilen Alle Datensätze zu einer angegebenen Binärdatei übertragen Die Ausgabe nach stdout schreiben Die Anzahl der Datensätze beschränken Quelle: Introduction to Pig. Cloudera. 2009 http://www.cloudera.com/videos/introduction_to_pig

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 35/80 Beispiel für einen Job in Pig Latin Dieses Beispiel macht die Reduktion der Komplexität von MapReduce-Abfragen gegenüber Pig Latin-Abfragen deutlich Abfrage der 5 meistbesuchten Seiten einer Webseite von Personen die 18 bis 25 Jahre alt sind Die Benutzerdaten und Daten der Webseite befinden sich in 2 verschiedenen Dateien Das Beispiel und die Bilder sind von der ApacheCon Europe 2009

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 36/80 Zum Vergleich: Die Anweisungen im MapReduce-Format

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 37/80 Übersetzten der Pig Latin-Anweisungen Übersetzten der Pig Latin-Anweisungen in MapReduce-Jobs

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 38/80 Einsparungen durch Pig

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 39/80 Pig Gute Zusammenfassung von Cloudera

Bildet ein Data Warehouse auf Basis von Hadoop Ein Data Warehouse (Datenlager)... ist eine Datensammelstelle in Form einer Datenbank bezieht seine Daten aus verschiedenen Quellen (z.b. weiteren Datenbanken) Datenmodell analog zu relationalen Datenbanksystemen mit Tabellen Die Nutzdaten speichert Hive in HDFS Die Tabellen werden durch Ordner im HDFS abgebildet Die Daten der Tabellen liegen serialisiert in Dateien innerhalb der Ordner Metadaten werden in der relationalen Datenbank Metastore gespeichert Unterstützt diverse Spaltentypen (u.a. integer, string, date, boolean) Abfragen erfolgen in der deklarativen Sprache HiveQL Die Abfragesprache bietet eine SQL-ähnliche Syntax Hive übersetzt HiveQL-Anweisungen in MapReduce-Jobs Hive orchestriert auch die Ausführung der Jobs im Hadoop-Cluster Steuerung via Kommandozeilenschnittstelle, Weboberfläche oder JDBC/ODBC-Schnittstelle Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 40/80 Hive

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 41/80 Textdaten in Hive-Tabellen laden und analysieren Bei jeden Zugriff auf einen Webserver werden aufgezeichnet: Servername oder IP-Adresse des zugreifenden Clients, Datum und Uhreit, Zeitzone, Datei, Ergebnis des Zugriffs (HTTP-Statusmeldung) und übertragene Bytes. client.anbieter.de - - [08/Oct/2010:22:35:51-0100] "GET /pfad/index.html HTTP/1.1" 200 1832 Die Log-Daten in access.log in eine Tabelle importieren: LOAD DATA LOCAL INPATH access.log OVERWRITE INTO TABLE apachelog; Die ersten 20 Zeilen der Tabellen, sortiert nach IP-Adressen ausgeben: SELECT * FROM apachelog SORT BY ipaddress LIMIT 20; Alle Datensätze ausgeben, die die IP-Adresse 84.171.184.103 enthalten: SELECT * FROM apachelog WHERE ipaddress = 84.171.184.103 ; Quelle: Ramin Wartala. Analyse großer Datenmengen mit Hive. ix 12/2010

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 42/80 Hive Beispiele (Quelle: http://wiki.apache.org/hadoop/hive/languagemanual/ddl) Tabelle page_view erzeugen: CREATE TABLE page_view(viewtime INT, userid BIGINT, page_url STRING, referrer_url STRING, ip STRING COMMENT IP Address of the User ) COMMENT This is the page view table PARTITIONED BY(dt STRING, country STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY \001 LINES TERMINATED BY \012 STORED AS SEQUENCEFILE; Tabelle löschen: DROP TABLE [IF EXISTS] table_name Tabellennamen ausgeben: SHOW TABLES identifier_with_wildcards Partitionen einer Tabelle ausgeben: SHOW PARTITIONS table_name Tabelle umbenennen: ALTER TABLE table_name RENAME TO new_table_name Spalten hinzufügen oder ersetzen: ALTER TABLE table_name ADD REPLACE COLUMNS (col_name data_type [COMMENT col_comment],...)

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 43/80 Unterscheidung zwischen Pig und Hive Kriterium Pig Hive Typische Logfile Analyse Logfile Analyse, Data Mining, Anwendungsszenarien Webanalysen in Echtzeit, Data Warehousing Zielsetzung Vereinfachung von Vereinfachung von MapReduce-Abfragen im MapReduce-Abfragen im Stil einer Skriptsprache Stil der SQL Abfragesprache Pig Latin (prozedural) HiveQL9 (deklarativ) Metadaten keine im Metastore gespeichert Benutzerschnittstellen Kommandozeilenoberfläche Kommandozeilenoberfläche, (Grunt) Weboberfläche Exportschnittstellen keine ODBC/JDBC Eingabedatenstruktur unstrukturiert strukturiert Eingabedatenformate Rohdaten Rohdaten Ausgabedatenformate Rohdaten Rohdaten Hauptentwickler Yahoo Facebook Quelle: http://wiki.fh-stralsund.de/index.php/vergleich_hive_vs._pig

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 44/80 HBase http://hbase.apache.org Spaltenorienterte Datenbank zur Verwaltung sehr großer Datenmengen in Hadoop-Clustern Geeignet für große Datenmengen, die selten verändert, aber dafür häufig ergänzt werden Geeignet für Milliarden Spalten und Millionen Zeilen verteilt auf vielen Servern aus Standardhardware Freie Reimplementierung der Google BigTable Google BigTable baut auf GFS und dessen Eigenschaften auf HBase baut auf HDFS auf (freie Reimplementierung von GFS) Chang, Dean, Ghemawat, Hsieh, Wallach, Burrows, Chandra, Fikes, Gruber. Bigtable: A Distributed Storage System for Structured Data. Google. 2006. http://labs.google.com/papers/bigtable-osdi06.pdf

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 45/80 Hadoop Erfolgsgeschichten (http://wiki.apache.org/hadoop/poweredby) EBay Cluster mit 532 Knoten (4.256 CPU-Kerne, 5,3 PB Speicher) Aufgabe: Optimierung der Suche Facebook Cluster mit 1.100 Knoten (8.800 CPU-Kerne, 12 PB Speicher) Cluster mit 300 Knoten (2.400 CPU-Kerne, 3 PB Speicher) Aufgabe: Speichern und Analyse der Log-Daten Last.fm Cluster mit 44 Knoten (352 CPU-Kerne, 176 TB Speicher) Aufgabe: Speichern und Analyse der Log-Daten, Berechnen der Charts Twitter Aufgabe: Speichern und Analyse der Log-Daten, Speichern der Tweets Yahoo Mehrere Cluster mit zusammen > 40.000 Knoten und > 100.000 CPUs Größter Cluster: 4.500 Knoten (je 8 CPUs und 4 TB Speicher) Aufgabe: Websuche und Werbung Mehr Informationen: http://developer.yahoo.com/blogs/hadoop/

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 46/80 Hadoop und IBM Watson vs. Menschheit http://www.ditii.com/2011/02/18/watson-powered-by-apache-hadoop-defeated-jeopardy-defenders-ken-jennings-and-brad-rutter/

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 47/80 Cloudera Cloudera ist eine leistungsfähige Hadoop-Distribution Enthält neben Hadoop u.a. die Programmiersprache Pig und die auf Hadoop aufsetzende SQL-Datenbank Hive, die Spaltendatenbank HBase, Apache Zookeeper und das Hadoop-Browser-Forntend Hue Pakete für Debian, Ubuntu, RedHat und SuSE 03/2009: Cloudera s Distribution for Hadoop (CDH1) 03/2009: $5 Millionen Risikokapital von Accel Partners 06/2009: $11 Millionen Risikokapital von Greylock Partners 08/2009: Doug Cutting wechselt von Yahoo zu Cloudera 03/2010: Cloudera s Distribution for Hadoop Version 2 (CDH2) 10/2010: $25 Millionen Risikokapital von Meritech Capital Partners 04/2011: Cloudera s Distribution for Hadoop Version 3 (CDH3) http://www.cloudera.com

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 48/80 Cloudera (CDH3) unter Ubunutu 10.10 installieren (1) Diese Anleitung installiert einen Cluster auf einem Knoten Pseudo Distributed Modus Die Anleitung orientiert sich an http://cloudera-tutorial.blogspot.com Instanz mit Ubuntu 10.10 (ami-08f40561) in US-East starten Die Ports 22, 50030 und 50070 in der Sicherheitsgruppe freigeben DNS: ec2-50-17-58-144.compute-1.amazonaws.com Paketquellen einfügen in /etc/apt/sources.list.d/cloudera.list $ sudo add-apt-repository "deb http://archive.canonical.com/ubuntu maverick partner" $ sudo add-apt-repository "deb http://archive.cloudera.com/debian maverick-cdh3 contrib" Schlüssel der Paketquelle von Cloudera importieren $ sudo curl -s http://archive.cloudera.com/debian/archive.key sudo apt-key add - Pakete installieren $ sudo apt-get update $ sudo apt-get install sun-java6-jdk $ sudo apt-get install hadoop-0.20-conf-pseudo Cloudera-Dienste starten $ for service in /etc/init.d/hadoop-0.20-*; do sudo $service start; done

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 49/80 Cloudera (CDH3) unter Ubunutu 10.10 installieren (2) Schauen, welche Dateien Cloudera installiert hat $ dpkg -L hadoop-0.20-conf-pseudo Kontrollieren, ob die Cloudera-Dienste laufen $ sudo jps 2232 SecondaryNameNode 2539 Jps 1994 DataNode 2074 JobTracker 2154 NameNode 2317 TaskTracker Bei einer solchen Ausgabe war die Installation erfolgreich! Weboberfläche des Namenode http://ec2-50-17-58-144.compute-1.amazonaws.com:50070 Weboberfläche des Job Trackers http://ec2-50-17-58-144.compute-1.amazonaws.com:50030 Cloudera-Dienste wieder beenden $ for x in /etc/init.d/hadoop-* ; do sudo $x stop ; done

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 50/80 Weboberfläche des Namenode

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 51/80 Weboberfläche des Job Trackers

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 52/80 Einfache Beispiele mit der Cloudera-Installation (1) Beispiel zur Berechnung von π $ hadoop jar /usr/lib/hadoop/hadoop-*-examples.jar pi 10 100 Number of Maps = 5 Samples per Map = 1000 Wrote input for Map #0 Wrote input for Map #1 Wrote input for Map #2 Wrote input for Map #3 Wrote input for Map #4 Starting Job 11/06/06 19:18:15 INFO mapred.fileinputformat: Total input paths to process : 5 11/06/06 19:18:16 INFO mapred.jobclient: Running job: job_201106061916_0001 11/06/06 19:18:17 INFO mapred.jobclient: map 0% reduce 0% 11/06/06 19:18:23 INFO mapred.jobclient: map 40% reduce 0% 11/06/06 19:18:27 INFO mapred.jobclient: map 60% reduce 0% 11/06/06 19:18:28 INFO mapred.jobclient: map 80% reduce 0% 11/06/06 19:18:29 INFO mapred.jobclient: map 100% reduce 0% 11/06/06 19:18:36 INFO mapred.jobclient: map 100% reduce 100% 11/06/06 19:18:36 INFO mapred.jobclient: Job complete: job_201106061916_0001... 11/06/06 19:18:36 INFO mapred.jobclient: Launched reduce tasks=1... 11/06/06 19:18:36 INFO mapred.jobclient: Launched map tasks=5... Job Finished in 20.638 seconds Estimated value of Pi is 3.14160000000000000000

Berechnung von π via Monte-Carlo-Simulation A r K Q = Flächeninhalt = Radius = Kreis = Quadrat π kann man via Monte-Carlo-Simulation approximieren 1.Schritt: Einen Kreis in ein Quadrat einbeschreiben A Q = (2r) 2 = 4r 2 A K = πr 2 = π = A K r 2 Wie können wir π approximieren? 1 Zufällig Punkte im Quadrat erzeugen 2 Anzahl der Punkte auf A K zur Anzahl der Punkte auf A Q ist gleich dem Flächenverhältnis A K = πr 2 A Q 4r 2 = A K = π A Q 4 Zufälliges Erzeugen der Punkte kann durch die Worker parallelisiert werden Der Master erhält die Punkte und berechnet π Bildquelle: Wikipedia Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 53/80

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 54/80 Berechnung von π mit MapReduce NUMPOINTS = 100000; // some large number - the bigger, the closer the approximation p = number of WORKERS ; numperworker = NUMPOINTS / p; countcircle = 0; // one of these for each WORKER // each WORKER does the following : for (i = 0; i < numperworker ; i ++) { generate 2 random numbers that lie inside the square ; xcoord = first random number ; ycoord = second random number ; if ( xcoord, ycoord ) lies inside the circle countcircle ++; } MASTER : receives from WORKERS their countcircle values computes PI from these values : PI = 4.0 * countcircle / NUMPOINTS ; Quelle: Introduction to Parallel Programming and MapReduce http://code.google.com/edu/parallel/mapreduce-tutorial.html

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 55/80 Einfache Beispiele mit der Cloudera-Installation (2) Beispiel zu grep $ hadoop-0.20 fs -mkdir input $ hadoop-0.20 fs -put /etc/hadoop-0.20/conf/*.xml input $ hadoop-0.20 fs -ls input $ hadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-*-examples.jar grep input output dfs[a-z.]+ 11/06/06 20:05:49 INFO mapred.fileinputformat: Total input paths to process : 7 11/06/06 20:05:49 INFO mapred.jobclient: Running job: job_201106061916_0010 11/06/06 20:05:50 INFO mapred.jobclient: map 0% reduce 0% 11/06/06 20:05:55 INFO mapred.jobclient: map 28% reduce 0% 11/06/06 20:05:59 INFO mapred.jobclient: map 42% reduce 0% 11/06/06 20:06:00 INFO mapred.jobclient: map 57% reduce 0% 11/06/06 20:06:02 INFO mapred.jobclient: map 71% reduce 0% 11/06/06 20:06:03 INFO mapred.jobclient: map 85% reduce 0% 11/06/06 20:06:05 INFO mapred.jobclient: map 100% reduce 0% 11/06/06 20:06:10 INFO mapred.jobclient: map 100% reduce 28% 11/06/06 20:06:11 INFO mapred.jobclient: map 100% reduce 100% 11/06/06 20:06:12 INFO mapred.jobclient: Job complete: job_201106061916_0010... 11/06/06 20:06:12 INFO mapred.jobclient: Launched reduce tasks=1... 11/06/06 20:06:12 INFO mapred.jobclient: Launched map tasks=7...

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 56/80 Einfache Beispiele mit der Cloudera-Installation (3) Ausgabe des grep-beispiels $ hadoop fs -ls output Found 3 items -rw-r--r-- 1 ubuntu supergroup 0 2011-06-06 19:33 /user/ubuntu/output/_success drwxr-xr-x - ubuntu supergroup 0 2011-06-06 19:32 /user/ubuntu/output/_logs -rw-r--r-- 1 ubuntu supergroup 129 2011-06-06 19:33 /user/ubuntu/output/part-00000 Ergebnis des grep-beispiels $ hadoop-0.20 fs -cat output/part-00000 1 dfs.datanode.plugins 1 dfs.name.dir 1 dfs.namenode.plugins 1 dfs.permissions 1 dfs.replication 1 dfs.thrift.address 1 dfsadmin Zur Kontrolle... $ grep dfs[a-z.] /etc/hadoop-0.20/conf/*.xml /etc/hadoop-0.20/conf/hadoop-policy.xml: dfsadmin and mradmin commands to refresh the security... /etc/hadoop-0.20/conf/hdfs-site.xml: <name>dfs.replication</name> /etc/hadoop-0.20/conf/hdfs-site.xml: <name>dfs.permissions</name> /etc/hadoop-0.20/conf/hdfs-site.xml: <name>dfs.name.dir</name> /etc/hadoop-0.20/conf/hdfs-site.xml: <name>dfs.namenode.plugins</name> /etc/hadoop-0.20/conf/hdfs-site.xml: <name>dfs.datanode.plugins</name> /etc/hadoop-0.20/conf/hdfs-site.xml: <name>dfs.thrift.address</name>

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 57/80 Einfache Beispiele mit der Cloudera-Installation (4) Beispiel zu Word-Count $ hadoop-0.20 fs -mkdir inputwords $ hadoop-0.20 fs -put /etc/hadoop-0.20/conf/*.xml inputwords $ hadoop-0.20 fs -ls inputwords $ hadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-*-examples.jar wordcount inputwords outputwords 11/06/06 20:46:59 INFO input.fileinputformat: Total input paths to process : 7 11/06/06 20:46:59 INFO mapred.jobclient: Running job: job_201106061916_0014 11/06/06 20:47:00 INFO mapred.jobclient: map 0% reduce 0% 11/06/06 20:47:05 INFO mapred.jobclient: map 28% reduce 0% 11/06/06 20:47:08 INFO mapred.jobclient: map 42% reduce 0% 11/06/06 20:47:10 INFO mapred.jobclient: map 57% reduce 0% 11/06/06 20:47:11 INFO mapred.jobclient: map 71% reduce 0% 11/06/06 20:47:13 INFO mapred.jobclient: map 85% reduce 0% 11/06/06 20:47:14 INFO mapred.jobclient: map 100% reduce 0% 11/06/06 20:47:17 INFO mapred.jobclient: map 100% reduce 100% 11/06/06 20:47:17 INFO mapred.jobclient: Job complete: job_201106061916_0014... 11/06/06 20:18:20 INFO mapred.jobclient: Launched reduce tasks=1... 11/06/06 20:18:20 INFO mapred.jobclient: Launched map tasks=7...

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 58/80 Einfache Beispiele mit der Cloudera-Installation (5) Ausgabe des Word-Count-Beispiels $ hadoop-0.20 fs -ls outputwords Found 3 items -rw-r--r-- 1 ubuntu supergroup 0 2011-06-06 20:47 /user/ubuntu/outputwords/_success drwxr-xr-x - ubuntu supergroup 0 2011-06-06 20:46 /user/ubuntu/outputwords/_logs -rw-r--r-- 1 ubuntu supergroup 7913 2011-06-06 20:47 /user/ubuntu/outputwords/part-00000 Ergebnis des Word-Count-Beispiels $ hadoop-0.20 fs -cat outputwords/part-00000... based 1 be 20 being 1 below 3 below 2 between 1 beyond 1 blank 12 block 1 by 26...

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 59/80 Mit Cloudera (CDH3) einen Hadoop-Cluster einrichten (1) Diese Anleitung installiert einen verteilten Hadoop-Cluster Distributed Mode (Multi Node Cluster) Die Anleitung orientiert sich an http://cloudera-tutorial.blogspot.com Laufende Cloudera-Dienste beenden $ for x in /etc/init.d/hadoop-* ; do sudo $x stop ; done Alternative Hadoop-Konfigurationen auflisten $ update-alternatives --display hadoop-0.20-conf Standard-Konfiguration kopieren $ sudo cp -r /etc/hadoop-0.20/conf.empty /etc/hadoop-0.20/conf.cluster Neue Konfiguration aktivieren $ sudo update-alternatives --install /etc/hadoop-0.20/conf hadoop-0.20-conf /etc/hadoop-0.20/conf.cluster 50 Neue Konfiguration kontrollieren $ update-alternatives --display hadoop-0.20-conf hadoop-0.20-conf - auto mode link currently points to /etc/hadoop-0.20/conf.cluster /etc/hadoop-0.20/conf.cluster - priority 50 /etc/hadoop-0.20/conf.empty - priority 10 /etc/hadoop-0.20/conf.pseudo - priority 30 Current best version is /etc/hadoop-0.20/conf.cluster.

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 60/80 Mit Cloudera (CDH3) einen Hadoop-Cluster einrichten (2) Eine weitere Instanz (ami-08f40561) starten (= Slave) DNS: ec2-50-17-77-111.compute-1.amazonaws.com Alias-Einträge für die Knoten in /etc/hosts einfügen 10.122.67.221 ec2-50-17-58-144.compute-1.amazonaws.com master 10.120.69.158 ec2-50-17-77-111.compute-1.amazonaws.com slave1 SSH-Client und Server installieren $ sudo apt-get install openssh-server openssh-client SSH-Schlüssel erzeugen, um sich ohne Passwort anzumelden $ ssh-keygen -t rsa -P "" SSH-Schlüssel in $HOME/.ssh/id_rsa.pub auf den Slave-Knoten in $HOME/.ssh/authorized_keys kopieren /etc/hadoop-0.20/conf.cluster/masters Pro Master (Namenode) eine Zeile mit dem öffentlichen DNS oder Alias Hat man mehrere Master (= Datei masters anpassen) In diesem Beispiel steht in der Datei masters nur master

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 61/80 Mit Cloudera (CDH3) einen Hadoop-Cluster einrichten (3) /etc/hadoop-0.20/conf.cluster/slaves Pro Slave-Knoten eine Zeile mit dem öffentlichen DNS oder Alias Slaves sind Knoten mit den Diensten Datanode und/oder Tasktracker In diesem Beispiel steht in der Datei slaves nur slave1 /etc/hadoop-0.20/conf.cluster/core-site.xml <configuration> <property> <name>fs.default.name</name> <value>hdfs://master:54310</value> </property> </configuration> /etc/hadoop-0.20/conf.cluster/mapred-site.xml <configuration> <property> <name>mapred.job.tracker</name> <value>master:54311</value> </property> </configuration>

Mit Cloudera (CDH3) einen Hadoop-Cluster einrichten (4) /etc/hadoop-0.20/conf.cluster/hdfs-site.xml <value>1</value> ist die Anzahl der Slaves <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> Auf dem Slave die Paketquellen und Schlüssel importieren sowie Hadoop-Pakete installieren $ sudo add-apt-repository "deb http://archive.canonical.com/ubuntu maverick partner" $ sudo add-apt-repository "deb http://archive.cloudera.com/debian maverick-cdh3 contrib" $ sudo curl -s http://archive.cloudera.com/debian/archive.key sudo apt-key add - $ sudo apt-get update $ sudo apt-get install sun-java6-jdk $ sudo apt-get install hadoop-0.20-conf-pseudo Verzeichnis /etc/hadoop-0.20/conf.cluster auf den Slave kopieren Auf dem Master: $ sudo apt-get install zip $ sudo zip -r conf.cluster.zip /etc/hadoop-0.20/conf.cluster $ scp conf.cluster.zip slave1:~ Auf dem Slave: $ sudo apt-get install zip $ sudo unzip -d / conf.cluster.zip Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 62/80

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 63/80 Mit Cloudera (CDH3) einen Hadoop-Cluster einrichten (5) Alias-Einträge für die Knoten in /etc/hosts auf dem Slave einfügen 10.122.67.221 ec2-50-17-58-144.compute-1.amazonaws.com master 10.120.69.158 ec2-50-17-77-111.compute-1.amazonaws.com slave1 Neue Konfiguration auf dem Slave aktivieren $ sudo update-alternatives --install /etc/hadoop-0.20/conf hadoop-0.20-conf /etc/hadoop-0.20/conf.cluster 50 Dienste auf allen Knoten starten, um die Konfiguration zu aktivieren $ for x in /etc/init.d/hadoop-0.20-*; do sudo $x start; done Dienste auf allen Knoten wieder stoppen $ for x in /etc/init.d/hadoop-0.20-*; do sudo $x stop ; done Namenode formatieren $ sudo -u hdfs hadoop namenode -format Dienste auf dem Master (Namenode) starten $ sudo /etc/init.d/hadoop-0.20-namenode start $ sudo /etc/init.d/hadoop-0.20-secondarynamenode start $ sudo /etc/init.d/hadoop-0.20-jobtracker start Dienste auf dem Slave (Datanode) starten $ sudo /etc/init.d/hadoop-0.20-datanode start $ sudo /etc/init.d/hadoop-0.20-tasktracker start Wenn die Dienste starten, hat die Installation des Clusters geklappt

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 64/80 Weboberfläche des Namenode Der Datenode wurde gefunden

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 65/80 Weboberfläche des Namenode Detailansicht Datanodes Detailansicht der Datanodes

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 66/80 Amazon Elastic MapReduce Elastic MapReduce (EMR) ist ein Dienst für virtuelle Hadoop-Cluster Es ist einfacher/schneller mit EMR MapReduce-Jobs zu starten, als einen Hadoop-Cluster manuell in EC2 auszusetzen Speicherung der Quelldaten und Ergebnisse in S3 Informationen zum aktuellen Stand der Hadoop-Jobs werden in SimpleDB gespeichert Maximilian Hoecker. Hadoop as a Service (HaaaS) auf Basis von Eucalyptus und Cloudera. Bachelorthesis. HS-Mannheim 2011

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 67/80 Amazon Elastic MapReduce (EMR) Um eine MapReduce-Anwendung zu starten, muss ein Job-Flow definiert sein Ein Job-Flow ist eine Konfiguration eines Hadoop-Clusters (in EC2) Die Konfiguration beinhaltet u.a. den Instanztyp und MapReduce-Parameter Jeder Job-Flow ist in Steps aufgeteilt Ein Step ist entweder ein MapReduce-Step (MapReduce-Anwendung) oder ein Konfigurationsstep (Konfigurationsskript oder Konfigurationsbefehl um die EC2-Instanzen zu konfigurieren) EMR führt alle Steps sequentiell aus EMR führt als erstes die Konfigurationssteps durch, um zuerst den Cluster zu konfigurieren und anschließend die MapReduce-Anwendungen auszuführen Job-Flows können mit Kommandozeilenwerkzeugen, in der Weboberfläche und über die SOAP- und REST-Schnittstellen angelegt und gestartet werden

EMR Definition eines Job-Flows Die Definition eines Job-Flows besteht aus vier Informationsbereichen 1 Jobart Definiert, ob der Job eine eigene JAR-Datei, ein Pig-Skript, ein Hive-Skript oder ein Hadoop Streaming-Programm sein soll Die Jobarten Pig und Hive können auch interaktiv gestartet werden Interaktiven Jobarten stellen nach dem Start des Clusters einen SSH Port bereit, auf dem die Pig- oder Hive-Shell kontrolliert werden kann 2 Jobparameter Jobparameter fallen nur bei interaktionslosen Jobs an Die Parameter definieren die Buckets zur Ein- und Ausgabe sowie den Speicherort des Skripts bzw. der JAR-Datei 3 Instanzparameter Instanztypen der zu startenden Instanzen in EC2 Mit aktiver Debugging-Option schreibt Hadoop die controller-, stderr-, stdout- und syslog-ausgaben nach dem Ausführen in den angegebenen S3-Bucket 4 Bootstrap Konfigurationsoptionen für Hadoop und/oder dessen Hintergrunddienste (Daemons) Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 68/80

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 69/80 EMR Ablauf eines Job-Flows Sind die Programme/Skripte und die Eingabedaten in die jeweils eingestellten S3 Buckets geladen, kann ein Job-Flow gestartet werden Während der Laufzeit kann ein Job-Flow sieben Zustände erreichen 1 Completed Alle Steps sind abgeschlossen und der Hadoop-Cluster heruntergefahren 2 Failed Es ist ein Fehler in einem Step aufgetreten und der Hadoop-Cluster wurde heruntergefahren 3 Running Ein Step ist in Bearbeitung 4 Shutting Down Der Hadoop-Cluster fährt herunter und die Instanzen werden terminiert 5 Starting EMR startet, installiert und konfiguriert einen Hadoop-Cluster 6 Terminated Der Kunde hat den Job-Flow abgebrochen 7 Waiting Das Hadoop-Cluster wartet auf einen weiteren Job

EMR Erfolgreicher Ablauf eines Job-Flows Ein erfolgreicher Ablauf eines Job-Flows besteht aus vier Schritten 1 Clusterstart EMR startet die im Job-Flow konfigurierte Anzahl von EC2-Instanzen Die Anzahl der Worker Nodes des Clusters ist immer entsprechend der konfigurierten Anzahl der EC2-Instanzen Das gestartete Image ist ein von Amazon gebündeltes Image mit Hadoop 0.18.3 Nach dem Start der Instanzen installiert EMR, abhängig von der Job-Flow-Definition, Hadoop-Erweiterungen (z.b. Pig) 2 Download der Eingabedaten: Der gestartete Hadoop-Cluster lädt die Eingabedaten aus dem angegebenen S3 Bucket in das verteilte Dateisystem (HDFS) 3 Hadoop-Jobausführung Der Hadoop-Cluster führt den MapReduce-Job aus 4 Upload der Ausgabedaten: Die Ausführung des MapReduce-Jobs ist beendet Der Cluster kopiert die Ausgabedaten in den angegebenen S3 Bucket Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 70/80

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 71/80 Mit EMR arbeiten (1/7)

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 72/80 Mit EMR arbeiten (2/7)

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 73/80 Mit EMR arbeiten (37)

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 74/80 Mit EMR arbeiten (4/7)

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 75/80 Mit EMR arbeiten (5/7)

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 76/80 Mit EMR arbeiten (6/7)

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 77/80 Mit EMR arbeiten (7/7)

Dr. Christian Baun 11.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 78/80 Kosten von EMR Amazon verlangt für EMR einen Aufpreis gegenüber EC2