Datenbanksysteme Wintersemester 2015/16 Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern [email protected] MapReduce, NoSQL Big Data Challenge source:dilbert.com Inhalte der nächsten Vorlesungen Methoden große Datenmengen (Big Data!) zu verarbeiten, insbesondere Das MapReduce-Framework (Hadoop) sowie Cloud-Computing und NoSQL Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 2 / 44 MapReduce, NoSQL Big Data Challenge Motivation: Big Data Analytics Algorithmen zur Datenanalyse Wie häufig kommt ein Wort in den HTML Dokumenten vor? Wie häufig treten Worte zusammen auf? Was sind die einflussreichsten Webseiten? Was waren die Twitter-Trends der vergangenen Woche? Welche Suchbegriffe sind am populärsten? Paradigma und Ziel Sammle Daten und analysiere sie später Ziel: Gewinnung von Erkenntnissen/Informationen! Teilweise hoher materieller Wert (Platzierung von Werbung, Empfehlung von Produkten) Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 3 / 44 MapReduce, NoSQL Big Data Challenge The 4th Paradigm Erkenntnisgewinn in der Wissenschaft, traditionell durch .... Experimente (seit tausenden von Jahren) Theorie (seit hunderten von Jahren) Berechnungen und Simulation (seit wenigen Jahrzehnten) Nun: Erkenntnisgewinn durch Datenanalyse. Literatur: http://research.microsoft.com/en-us/collaboration/fourthparadigm/ Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 4 / 44 MapReduce, NoSQL Big Data Challenge Große Datenmengen Beispiel: Google Viele Milliarden Webseiten Terabytes an Daten Nicht nur Webseiten Auch Videos (Youtube), Bilder, Benutzerprofile, Emails Interne Daten: HTTP (etc.) Access-Logs Google server, circa, 1999. source: http://flickr.com/photos/jurvetson/157722937/ Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 5 / 44 MapReduce, NoSQL Big Data Challenge Geschätzte Datenmengen Google: 15 000 PB (=15 Exabytes) Facebook: 300 PB Ebay: 90 PB Spotify: 10 PB MB = 106 Bytes Verarbeitete Datenmenge pro Tag GB=109 Bytes Google: 100 PB TB (Terabyte)=1012 Bytes Ebay: 100 PB PB (Petabyte)=1015 Bytes NSA: 29 PB EB (Exabyte)=1018 Bytes Facebook: 600 TB Twitter: 100 TB Spotify: 2,2 TB Quelle: https: //followthedata.wordpress.com/2014/06/24/data-size-estimates/ Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 6 / 44 MapReduce, NoSQL Big Data Challenge Gigabyte, Terabyte, Petabyte Aus Platzgründen nur teilweise dargestellt Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 7 / 44 MapReduce, NoSQL Big Data Challenge The Big Data Challenge: Die 4 V Volume Es gibt sehr viele Daten. Velocity Daten ändern sich und Datenmenge wächst rasant. Variety Daten und Datenquellen sind heterogen. Verity Sind die Informationen wahr oder inkorrekt? Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 8 / 44 MapReduce, NoSQL Big Data Challenge Problem und Konsequenzen Beispiel: Lesen von 10TB von einer Festplatte Nehmen wir an wir haben eine 10 TB große Datei auf der Festplatte Wir möchten die Daten (z.B. Twitter tweets) nun analysieren Mit einer Festplatte mit 100MB/s Lesegeschwindigkeit (sequentielles Lesen) brauchen wir alleine für das Lesen an sich 100000 Sekunden bzw. 1666 Minuten bzw. 27 Stunden Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 9 / 44 MapReduce, NoSQL Big Data Challenge Horizontale vs. Vertikale Skalierung Horizontale Skalierung (scale out): Viele Maschinen (hunderte, tausende) in Rechenzentren Vertikale Skalierung (scale up): Aufrüsten eines Servers; mehr RAM, mehr/bessere CPU, mehr Festplattenspeicher, ... Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 10 / 44 MapReduce, NoSQL Big Data Challenge Data Centers source:Google Tour durch ein Google-Data-Center via Google-Street-View. http://www.google.com/about/datacenters/inside/streetview/ Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 11 / 44 MapReduce, NoSQL Big Data Challenge Hardware Fehler Viele Maschinen, also viel Hardware die kaputt gehen kann. D.h. Hardwarefehler treten häufig auf und sind keine seltene Ausnahme. Sagen wir z.B. eine bestimmte Maschine fällt ein Mal im Jahr aus, also P [Maschine fällt heute aus] = 1 365 Wir haben n Maschinen: P [Heute fällt mindestens eine Maschine aus] = 1 − (1 − P [Maschine fällt heute aus])n für für für für für n=1: n=10: n=100: n=1000: n=10 000: 0.0027 0.02706 0.239 0.9356 ∼ 1.0 (!!!) Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 12 / 44 MapReduce, NoSQL Big Data Challenge Wo befinden sich die Daten? Verteiltes Dateisystem Datendateien liegen in einem verteilten Dateisystem. Organisation in Blöcke, typischerweise 64MB oder 128MB (!) groß. Diese Blöcke werden sind repliziert, verteilt über mehrere Maschinen. Block Knoten Datenverarbeitung Falls möglich werden Prozesse der Datenverarbeitung auf Maschinen ausgeführt wo sich bereits benötigte Daten befinden. Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 13 / 44 MapReduce, NoSQL Big Data Challenge Wie sehen die Daten aus? Beispiel: Twitter {"created_at":"Wed Jan 21 15:21:04 +0000 2015","id":557920823764586496,"id_str":"557920823764586496","text":"#T ulsaAirport #Oklahoma Jan 21 08:53 Temperature 37\u00b0F clouds Wind NW 7 km\/h Humidity 85% .. http:\/\/t.co\ /SnC8ST3gQC","source":"\u003ca href=\"http:\/\/www.woweather.com\/USA\/TulsaIAP.htm\" rel=\"nofollow\"\u003eupd ate weather tulsa\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":nu ll,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":255167 921,"id_str":"255167921","name":"Weather Tulsa","screen_name":"wo_tulsa","location":"Tulsa","url":"http:\/\/itu nes.apple.com\/app\/weatheronline\/id299504833?mt=8","description":"Weather Tulsa\n\nhttp:\/\/www.woweather.com \/USA\/Tulsa.htm","protected":false,"verified":false,"followers_count":111,"friends_count":60,"listed_count":5, "favourites_count":0,"statuses_count":33805,"created_at":"Sun Feb 20 20:31:42 +0000 2011","utc_offset":7200,"ti me_zone":"Athens","geo_enabled":false,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_b ackground_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.pn g","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_back ground_tile":false,"profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_ color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"profile_image_url":"http:\/\ /pbs.twimg.com\/profile_images\/1249942071\/WO-20px-linien_normal.png","profile_image_url_https":"https:\/\/pbs .twimg.com\/profile_images\/1249942071\/WO-20px-linien_normal.png","default_profile":true,"default_profile_imag e":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordinates":null,"place ":null,"contributors":null,"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[{"text":"TulsaAirport", "indices":[0,13]},{"text":"Oklahoma","indices":[14,23]}],"trends":[],"urls":[{"url":"http:\/\/t.co\/SnC8ST3gQC" ,"expanded_url":"http:\/\/bit.ly\/188eNcw","display_url":"bit.ly\/188eNcw","indices":[93,115]}],"user_mentions" :[],"symbols":[]},"favorited":false,"retweeted":false,"possibly_sensitive":false,"filter_level":"low","lang":"e n","timestamp_ms":"1421853664710"} {"created_at":"Wed Jan 21 15:21:04 +0000 2015","id":557920823877464064,"id_str":"557920823877464064","text":"An ime episode updated: Kyoukai no Kanata: Mini Theater # 6 ( http:\/\/t.co\/kjEPWveEHM ) #MalUpdater","source":"\ u003ca href=\"http:\/\/www.malupdater.com\" rel=\"nofollow\"\u003eMal Updater\u003c\/a\u003e","truncated":false ,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_ str":null,"in_reply_to_screen_name":null,"user":{"id":1049083842,"id_str":"1049083842","name":"OriginGenesis"," screen_name":"ClowREED303","location":"Canada","url":"http:\/\/myanimelist.net\/profile\/OriginGenesis" Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 14 / 44 MapReduce, NoSQL Big Data Challenge Wie sehen die Daten aus? Beispiel: Access Logs 9.37.138.4 9.37.138.4 9.37.138.4 9.37.138.4 9.37.138.4 9.37.138.4 9.37.138.4 9.37.138.4 9.37.138.4 - - [14/Jan/2013:21:16:46 [14/Jan/2013:21:17:19 [14/Jan/2013:21:17:52 [14/Jan/2013:21:18:23 [14/Jan/2013:21:18:53 [14/Jan/2013:21:19:23 [14/Jan/2013:21:19:53 [14/Jan/2013:21:20:24 [14/Jan/2013:21:20:54 -0500] -0500] -0500] -0500] -0500] -0500] -0500] -0500] -0500] "GET "GET "GET "GET "GET "GET "GET "GET "GET /daytrader/scenario /daytrader/scenario /daytrader/scenario /daytrader/scenario /daytrader/scenario /daytrader/scenario /daytrader/scenario /daytrader/scenario /daytrader/scenario HTTP/1.1" HTTP/1.1" HTTP/1.1" HTTP/1.1" HTTP/1.1" HTTP/1.1" HTTP/1.1" HTTP/1.1" HTTP/1.1" 200 200 200 200 200 200 200 200 200 10720 10720 10719 10719 10720 10716 10721 10711 10720 Quelle: ibm.com Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 15 / 44 MapReduce, NoSQL Big Data Challenge Wie sehen die Daten aus? Beispiel: “Relationale” Daten in CSV-Dateien "persnr";"name";"rang";"raum" 2125;"Sokrates";"C4";226 2126;"Russel";"C4";232 2127;"Kopernikus";"C3";310 2133;"Popper";"C3";52 2134;"Augustinus";"C3";309 2136;"Curie";"C4";36 2137;"Kant";"C4";7 Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 16 / 44 MapReduce, NoSQL Big Data Challenge Screenshot: Datei mit Tweets im verteilten Dateisystem Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 17 / 44 MapReduce, NoSQL MapReduce Map und Reduce: Grundlegende Idee Verteile Datenverarbeitung auf mehrere (viele) Maschinen Map und Reduce “Regeln” geben an wie Daten verteilt werden (map) und wie Teilergebnisse am Ende zusammengeführt werden. High Level: “Funktionale Programmierung”. System (Implementierung) kümmert sich um Ausfälle von einzelnen Maschinen, Lastbalancierung etc. Map-Phase Daten werden von (mehreren) Map-Prozessen eingelesen und auf Maschinen verteilt. Reduce-Phase Anhand eines Schlüssel werden Daten auf Maschinen gruppiert (gesammelt) und “aggregiert” (reduziert) Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 18 / 44 MapReduce, NoSQL MapReduce MapReduce - Veranschaulichung der Phasen Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 19 / 44 MapReduce, NoSQL MapReduce MapReduce: Worthäufigkeiten Berechnen Zwei Eingaben (Blöcke einer Datei) mit Text (hier mit je nur einer Zeile): 1. “One ring to rule them all, one ring to find them,” 2. “One ring to bring them all and in the darkness bind them.” map(string key, string value) { for each word w in value emit(w,1) } Diese Map-Funktion wird auf alle Zeilen in allen Fragmenten der Eingabe (Datei) angewendet. Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 20 / 44 MapReduce, NoSQL MapReduce Map der Zeilen auf Worte und Zähler (Counts) Ausgabe von Map-Task Nr.1 (Zeile 1): (”one”,1) (”ring”,1) (”to”,1) (”rule”,1) (”them”,1) (”all”,1) (”one”,1) (”ring”,1) (”to”,1) (”find”,1) (”them”,1) Ausgabe von Map-Task Nr. 2 (Zeile 2): (”one”,1) (”ring”,1) (”to”,1) (”bring”,1) (”them”,1) (”all”,1) (”and”,1) (”in”,1) (”the”,1) (”darkness”,1) (”bind”,1) (”them”,1) reduce(string key, iterator values) { int result=0 for each v in values result+=v emit(key, result) } Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 21 / 44 MapReduce, NoSQL MapReduce Geschichte von MapReduce Entwicklung von Google Erster Artikel zum MapReduce-Paradigma, Implementierung und Anwendungsfälle in Google von J. Dean und S. Ghemawat aus 2004. Weitere Entwicklung Es gibt einige MapReduce Implementierungen bzw. Varianten davon. Hadoop ist die wohl bekannteste dieser Realisierungen http://hadoop.apache.org/ Jeffrey Dean, Sanjay Ghemawat: MapReduce: Simplified Data Processing on Large Clusters. OSDI 2004. Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 22 / 44 MapReduce, NoSQL MapReduce Funktionale Programmierung: Map f Befehl: map f Typ: (a->b) -> [a] -> [b] f Definition f map f [] = [] f map f (x:xs) = f x : map f xs Beispiel (Hugs98 Haskell) map (\x-> x*x) [1,2,3,4] f f f Ergibt [1,4,9,16] Beobachtung Offensichtlich kann die Funktion f auf die einzelnen Elemente der Eingabe parallel ausgeführt werden. Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 23 / 44 MapReduce, NoSQL MapReduce Funktionale Programmierung: Reduce (aka. fold) Befehl: foldl Typ: (a->b->a)->a->[b]->a Definition foldl f z [] = z foldl f z (x:xs) = foldl f (f z x) xs Beispiel foldl (+) 0 [1,2,3,4,5] Ergibt 15 Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 24 / 44 MapReduce, NoSQL MapReduce MapReduce: Verteilung von Daten und Arbeit Viele Daten-Blöcke Map-Prozess wird auf jeden dieser Blöcke angewendet Map-Funktion auf Inhalte (z.B. Zeilen) anwenden: Ausgabe sind Daten mit Schlüssel Dieser Schlüssel wird benutzt um Daten auf Maschinen zu verteilen Für jede Gruppe von Daten (gruppiert nach Schlüssel) wird die Reduce-Funktion aufgerufen. Anmerkung Für diese Vorlesung ist es erstmal nur wichtig zu wissen, dass es mehrere Map-Prozesse und mehrere Reduce-Prozesse gibt. Und zu schauen, dass mit Hilfe von (sorgfältig) gewählten Schlüsseln Daten dort hin gelangen wo sie hinkommen sollen! I.d.R. wird für jeden Block ein Map-Prozess gestartet, aber das schauen wir uns in der DDM-Vorlesung (SoSe 17) genauer an. Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 25 / 44 MapReduce, NoSQL MapReduce Formal: Map und Reduce Funktionen map(k1, v1) → list(k2, v2) reduce(k2, list(v2)) → list(k3, v3) Schlüssel (Keys) erlauben es Daten Maschinen zu zuordnen. Beispiel für Schlüssel k1 = Id eines Dokuments (oder Offset in Datei) v1 = Inhalt des Dokuments (oder Zeile in Datei) k2 = Wort v2 = Zähler k3 = Wort v3 = Zähler Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 26 / 44 MapReduce, NoSQL MapReduce Beispiel: Grep Gegeben eine Datei, gebe alle Zeilen aus, die ein bestimmtes Muster (Pattern) enthalten. Wie bei dem Unix-Kommando grep. map(string key, string value) { if value.contains(pattern) then emit(value,””) } Dies ist ein “map only” Task. Es gibt gar keinen Reducer, also kein finales Gruppieren nach Key. Ausgabe wird direkt ins Dateisystem geschrieben. Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 27 / 44 MapReduce, NoSQL MapReduce Weiteres Beispiel Gegeben eine CSV Datei mit Wetter-Daten: 2/12/2004;64;5;2.46 9/6/2006;80;14;10.15 6/1/2002;9;16;16.01 10/30/2014;73;19;23.81 8/30/2002;64;4;16.16 1/29/2007;40;24;-2.16 11/10/2012;85;10;12.20 .... Der Form: Datum;Station ID;Stunde des Tages;Temperatur Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 28 / 44 MapReduce, NoSQL MapReduce Weiteres Beispiel (2) Die Mapper Prozesse sind verantwortlich für das Parsen der Zeilen (ein Mapper pro viele Zeilen: Block) In diesem Beispiel: Finde alle Tupel aus dem Jahr 2014. Also wie bei “Grep”, kein Reducer. z.B. haben wir nach der Map-Phase: Datei 1 Datei 2 Datei 3 11/24/2014;21;3;-0.47 3/13/2014;40;6;12.79 10/14/2014;26;22;22.41 2/5/2014;17;12;7.87 11/1/2014;84;1;4.62 2/24/2014;35;13;-2.44 11/17/2014;59;17;26.31 6/9/2014;23;13;23.60 2/24/2014;11;11;6.80 11/17/2014;12;2;4.85 10/8/2014;3;9;12.71 8/28/2014;33;12;7.27 Prof. Dr.-Ing. S. Michel TU Kaiserslautern Hier würde die Ausgabe jedes Mappers direkt in angespeichert, keine Partitionierung nach Schlüssel, keine Sortierung. Fügen wir nun einen Reducer dazu.... Datenbanksysteme, WS 15/16 29 / 44 MapReduce, NoSQL MapReduce Weiteres Beispiel (3) Nehmen wir an wir interessieren uns für die Durchschnittstemperatur für jede Stunde des Tages, aus 2014. Dies wird im Reducer berechnet (nach dem Mapper). Die Mapper “senden” (im Prinzip) also Daten an die Reducer, sortiert nach Schlüssel. Nehmen wir an wir haben zwei Reducer (=2 Partitionen) - Partitionen werden (default) erzeugt durch key.hashCode() % numer of partitions - Es landen also verschiedene “Stunde des Tages” in der gleichen Partition. Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 30 / 44 MapReduce, NoSQL MapReduce Weiteres Beispiel (4) Der Reducer bekommt Gruppe von Tuples mit identischer “Stunde des Tages” und kann Durchschnitt berechnen. Ausgabe ist dann: Eine Ausgabedatei pro Reducer 14;17.34 17;14.01 23;9.11 Innerhalb jeder Datei: Sortierung nach Schlüssel 4;7.19 16;16.35 22;9.89 Prof. Dr.-Ing. S. Michel Aber nicht global über alle Dateien hinweg! TU Kaiserslautern Datenbanksysteme, WS 15/16 31 / 44 MapReduce, NoSQL MapReduce Anmerkung Word-Count Beispiel map(string key, string value) { for each word w in value emit(w,1) } Dies ist nur eine Möglichkeit Word-Count zu implementieren. Wie könnte eine Alternative aussehen? Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 32 / 44 MapReduce, NoSQL MapReduce Anmerkung Word-Count Beispiel map(string key, string value) { for each word w in value emit(w,1) } Dies ist nur eine Möglichkeit Word-Count zu implementieren. Wie könnte eine Alternative aussehen? Bereits in Map nicht nur für jedes Vorkommen 1 ausgeben, sondern aggregiert für die ganze Zeichenkette value. Etwas komplexer. Aber weniger Information, die über Netzwerk geschickt werden müssen. Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 32 / 44 MapReduce, NoSQL MapReduce Beispielanwendung: Access-Log Analyse Logid 100 101 102 103 104 105 IPAdresse 192.188.20.99 168.222.22.22 189.999.99.99 187.788.222.20 199.299.29.29 290.202.20.90 Datum 11/2/2013 11/2/2013 11/2/2013 11/9/2013 11/2/2013 11/9/2013 Zeit 19:22:00 13:45:00 13:23:00 16:11:00 19:09:00 22:09:00 Seite /news/ /wetter/index.html /home/ /home/ /news/ /lottery/ Finde häufig zugegriffene URLs pro IP-Adresse Finde IP-Adressen mit mehr als X Zugriffen pro Stunde Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 33 / 44 Quelle Google Yahoo Google Bing Google Bing MapReduce, NoSQL MapReduce Beispielanwendung: Aufbauen eines Invertierten-Index Gegeben eine Menge von Text-Dateien Erzeuge einen Invertierten-Index D.h. für jedes Wort eine Liste der Dokumenten-Identifier, die auf Dokumente verweisen in denen der Term auftritt. ring → [18,8,1,. . .] rule → [17,3,9,12, . . .] Wie kann dies in MapReduce berechnet werden? Map benutzt in der Ausgabe das Wort (z.B. ring) als Schlüssel und als Wert (value) die ID des Dokuments. Somit gelangen alle IDs in denen “ring” auftritt auf einem Reducer. Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 34 / 44 MapReduce, NoSQL MapReduce Beispielanwendung: Auftreten von Wort-Paaren Gegeben eine Text-Datei (oder mehrere Dateien) Wir möchten für Worte a und b berechnen wie oft a und b zusammen auftreten, z.B. in einem Satz. D.h. die Ausgabe hat die Form ([a,b], count) Wie kann dies in MapReduce berechnet werden? Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 35 / 44 MapReduce, NoSQL MapReduce Beispielanwendung: Auftreten von Wort-Paaren (2) Paar-Ansatz (Pairs) mapper für eine Zeichenkette s betrachte alle Wort-Paare (a,b) aus s: emit({a,b}, 1) reducer summiert einfach die Zähler auf Streifen-Approach (Stripes) mapper für eine Zeichenkette s for each a in s: collect all ti die zusammen mit a auftreten emit(a, {t1 , t2 , . . . tn }) reducer aggregiert (wie?) Wo liegt der Unterschied? Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 36 / 44 MapReduce, NoSQL MapReduce Beispielanwendung: PageRank Gegeben ein Graph von Webseiten mit Kanten, die den Verweisen (Links) entsprechen PageRank: Berechne Autorität einer Seite basierend auf eingehender Links anderer Seiten (rekursiv) Wird benutzt um Suchergebnisse zu gewichten (neben Methoden die den Seiteninhalt bewerten) Implementierung in MapReduce: Iterative Phasen (Details in der DDM Vorlesung) Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 37 / 44 MapReduce, NoSQL MapReduce Berechnung (Ablauf) Ein Master-Knoten kontrolliert Berechnung Hier schickt man den Auftrag (Job) hin Berechnet notwendige Map und Reduce Schritte Wählt Arbeiter-Knoten (worker nodes) aus und aktiviert diese Arbeiter-Knoten Für Map-Schritte: Wird falls möglich nah an Daten gewählt. Reduce-Schritte: Konsumieren Zwischenergebnisse von den Map-Schritten und erzeugen Endergebnis. Die Rolle des verteilten Dateisystems Hier liegen die Daten Hier werden die Ergebnisse und Zwischenergebnisse abgelegt Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 38 / 44 MapReduce, NoSQL MapReduce Code Beispiel: Hadoop MapReduce: Mapper Implementierung 1 2 3 p u b l i c s t a t i c c l a s s Map e x t e n d s Mapper<L o n g W r i t a b l e , Text , Text , IntWritable > { p r i v a t e f i n a l s t a t i c I n t W r i t a b l e one = new I n t W r i t a b l e ( 1 ) ; p r i v a t e Text word = new Text ( ) ; 4 p u b l i c v o i d map ( L o n g W r i t a b l e key , Text v a l u e , C o n t e x t c o n t e x t ) throws IOException , I n t e r r u p t e d E x c e p t i o n { String l i n e = value . toString () ; S t r i n g T o k e n i z e r t o k e n i z e r = new S t r i n g T o k e n i z e r ( l i n e ) ; w h i l e ( t o k e n i z e r . hasMoreTokens ( ) ) { word . s e t ( t o k e n i z e r . n e x t T o k e n ( ) ) ; c o n t e x t . w r i t e ( word , one ) ; } } 5 6 7 8 9 10 11 12 13 } Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 39 / 44 MapReduce, NoSQL MapReduce Code Beispiel: Hadoop MapReduce: Reducer Implementierung 1 2 3 4 5 6 7 8 9 10 p u b l i c s t a t i c c l a s s Reduce e x t e n d s R e d u c er <Text , I n t W r i t a b l e , Text , IntWritable > { p u b l i c v o i d r e d u c e ( Text key , I t e r a b l e <I n t W r i t a b l e > v a l u e s , Context context ) throws IOException , I n t e r r u p t e d E x c e p t i o n { i n t sum = 0 ; for ( IntWritable val : values ) { sum += v a l . g e t ( ) ; } c o n t e x t . w r i t e ( key , new I n t W r i t a b l e ( sum ) ) ; } } Quelle: http://wiki.apache.org/hadoop/WordCount Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 40 / 44 MapReduce, NoSQL Prof. Dr.-Ing. S. Michel MapReduce TU Kaiserslautern Datenbanksysteme, WS 15/16 41 / 44 MapReduce, NoSQL MapReduce SQL in MapReduce: Selektion und Projektion Gegeben eine Relation R mit sch(R) = (A,B, . . .). Tupel sind in einer Datei gespeichert (z.B. als CSV-Datei). Wie können typische SQL Anfragen ausgeführt werden? Selektion Projektion Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 42 / 44 MapReduce, NoSQL MapReduce SQL in MapReduce: Selektion und Projektion Gegeben eine Relation R mit sch(R) = (A,B, . . .). Tupel sind in einer Datei gespeichert (z.B. als CSV-Datei). Wie können typische SQL Anfragen ausgeführt werden? Selektion WHERE Klausel kann leicht in Map-Phase überprüft werden. Wie bei dem Grep-Beispiel. Kein Reducer erforderlich. Projektion Ebenfalls offensichtlich: Nur gewünschte Attribute der Tupel werden ausgegeben (emit). Auch hier ist kein Reducer notwendig. Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 42 / 44 MapReduce, NoSQL MapReduce SQL in MapReduce: Group-By, Aggregate, Having select abteilung, avg(gehalt) from gehaelter group by abteilung having avg(gehalt) > 50000 Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 43 / 44 MapReduce, NoSQL MapReduce SQL in MapReduce: Group-By, Aggregate, Having select abteilung, avg(gehalt) from gehaelter group by abteilung having avg(gehalt) > 50000 Group-By, Aggregate Map: Sendet Tupel zu Reducer anhand des Attributs, nach dem gruppiert wird, hier der Abteilung, als Schlüssel. Reducer erhält somit alle Tupel die gleichen Wert für Abteilung haben und kann dann gruppieren. Having Having ist eine Überprüfung einer Eigenschaft auf den Daten einer Gruppe, wird also auch im Reducer ausgeführt. Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 43 / 44 MapReduce, NoSQL MapReduce SQL in MapReduce: Joins in MapReduce Ein einfacher Equi-Join zwischen zwei Relationen R und S mit sch(R) = (A,B) und sch(S) = (B,C), also select * from R, S where R.B=S.B Beispielausprägung der Relationen: R A x y w ... S B 18 9 64 ... B 6 5 9 ... C w e r ... Wie kann dieser Join mit Hilfe von MapReduce realisiert werden? Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 15/16 44 / 44