Datenbanksysteme Wintersemester 2016/17 Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern [email protected] Probabilistic Databases Wiederholung: Beispiel Gegeben eine Datenbank D mit zwei Tabellen S(A,B) und T (C,D). S= s1 s2 A ‘m’ ‘n’ B 1 1 T= 0.8 0.5 Welt D1 = {s1 , s2 , t1 } D2 = {s1 , t1 } D3 = {s2 , t1 } D4 = {t1 } D5 = {s1 , s2 } D6 = {s1 } D7 = {s2 } D8 = ∅ t1 C 1 D ‘p’ 0.6 Wahrscheinlichkeit 0.24 0.24 0.06 0.06 0.16 0.16 0.04 0.04 Anfrage: q(u) ← S(x,y),T (z,u),y = z q pwd (D) = Antwort {‘p’} ∅ Prof. Dr.-Ing. S. Michel P 0.54 0.46 TU Kaiserslautern q rank (D) = Antwort ‘p’ Datenbanksysteme, WS 16/17 P 0.54 2 / 62 Probabilistic Databases Betrachten wir wieder Beispiel von zuvor. Die Tupelvariablen si und ti werden nun als Zufallsvariablen in einem dem Tupel t angehefteten Ausdruck e(t) in einem “besonderen” Attribut E interpretiert. A B E C D E S = ‘m’ 1 s1 T= 1 ‘p’ t1 ‘n’ 1 s2 Bei einem Join bzw. Kreuzprodukt, werden beteiligten Tupel kombiniert, wie folgt: A Auswertung von Join S o nB=C T ergibt: ‘m’ ‘n’ die Ausdrücke ei der B 1 1 C 1 1 D ‘p’ ‘p’ E s1 ∧ t1 s2 ∧ t1 Bei einer Projektion (Achtung: Mengensemantik): D E πD (S o nB=C T ) ergibt: ‘p’ (s1 ∧ t1 ) ∨ (s2 ∧ t1 ) Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 3 / 62 Probabilistic Databases Wiederholung: Intensionale Anfrageauswertung Wie die Ausdrücke in während einer Anfrageverarbeitung “mitgeführt” werden, wird durch folgende Definition beschrieben. Selektion: ( e(t) falls c(t)true eσc (t) = ⊥ sonst Projektion: eπA (t) = _ e(t0 ) t0 :πA (t0 )=t Kreuzprodukt: e(t,t0 ) = e(t) ∧ e(t0 ) ⊥ bezeichnet hier das unmögliche Ereignis, d.h. P (⊥) = 0 Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 4 / 62 Probabilistic Databases Wiederholung: Intensionale Anfrageauswertung Ausdruck e = (s1 ∧ t1 ) ∨ (s2 ∧ t1 ) Wahrheitstabelle zu Ausdruck e: s1 s2 t1 e 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 Betrachte Wahrheitstabelle. Ausdruck e evaluiert also zu 1 für die Einträge (0,1,1), (1,0,1) und (1,1,1). P ((0,1,1)) = (1 − P (s1 )) × P (s2 ) × P (t1 ) = 0.2 × 0.5 × 0.6 = 0.06 P ((1,0,1)) = P (s1 ) × (1 − P (s2 )) × P (t1 ) = 0.8 × 0.5 × 0.6 = 0.24 P ((1,1,1)) = P (s1 ) × P (s2 ) × P (t1 ) = 0.8 × 0.5 × 0.6 = 0.24 Insgesamt (d.h. Summe) also: P (e) = 0.54 Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 5 / 62 Probabilistic Databases Wiederholung: Komplexität des Problems Für eine Boolesche Formel mit n Variablen, gibt es zwischen 0 und 2n Belegungen, die die Formel erfüllen. Manche Anfragen (mehr dazu später) können in PTIME berechnet werden, für andere Anfragen ist das Problem #P-vollständig. Klasse #P (“sharp P”): Klasse von “Zählproblemen” NP = Klasse von Entscheidungsproblemen, hier, bzgl. SAT, “Gibt es eine Belegung, die die Formel wahr macht?” #P = Klasse von Problemen der Form, “Wie viele Belegungen erfüllen die Formel?” (#SAT) Ein Problem aus #P ist mindestens so schwierig, wie das entsprechende Entscheidungsproblem aus NP. Theorem [Leslie Valiant, 1979]: #SAT ist #P-vollständig. Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 6 / 62 Probabilistic Databases Beobachtungen Idee: Extensionale Evaluierung: Wir betrachten einfache Wahrscheinlichkeiten der Tupel während der Anfrageausführung und keine (komplexen) Formeln. Jedem Tupel, insbesondere in den Zwischenschritten, wird eine Wahrscheinlichkeit zugewiesen, d.h. eine “Zahl” aus [0, 1]. Wie mit diesen Wahrscheinlichkeiten P umgegangen wird, wird wieder wie vorhin bei der intensionalen Auswertung via den Operatoren der relationalen Algebra definiert. Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 7 / 62 Probabilistic Databases Extensionale Operatoren Selektion: ( P (t) Pσc (t) = 0 falls c(t)true sonst Projektion: PπA (t) = 1 − Y (1 − P (t0 )) t0 :πA (t0 )=t Kreuzprodukt: P (t, t0 ) = P (t) × P (t0 ) Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 8 / 62 Probabilistic Databases Extensionale Operatoren: Join (bzw. Kreuzprodukt ähnlich) A a1 a2 a3 A P a1 p1 a o n 1 p2 a2 p3 a2 a2 Prof. Dr.-Ing. S. Michel B b1 b2 b3 b4 b5 P A q1 a1 q2 a = 1 q3 a2 q4 a2 q5 a2 TU Kaiserslautern B b1 b2 b3 b4 b5 P p 1 × q1 p 1 × q2 p 2 × q3 p 2 × q4 p 2 × q5 Datenbanksysteme, WS 16/17 9 / 62 Probabilistic Databases Extensionale Operatoren: Projektion Relation S(A,B): A a1 a1 a2 a2 a2 B b1 b2 b3 b4 b5 P q1 q2 q3 q4 q5 Projektion auf Attribut A: πA (S) A a1 a2 P 1 − (1 − q1 ) × (1 − q2 ) 1 − (1 − q3 ) × (1 − q4 ) × (1 − q5 ) Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 10 / 62 Probabilistic Databases Extensionale Operatoren: Selektion Relation S(A,B): Selektion A B a2 b3 a2 b4 a2 b5 A a1 a1 a2 a2 a2 B b1 b2 b3 b4 b5 P q1 q2 q3 q4 q5 σA=a2 (S): P q3 q4 q5 Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 11 / 62 Probabilistic Databases Beispiel: Extensionale Evaluierung - Problem Betrachten wir die die Anfrageausführung zu πD (S o nB=C T ) über folgende Tabellen (wie weiter vorne): S= A ‘m’ ‘n’ B 1 1 P 0.8 0.5 T= C 1 D ‘p’ P 0.6 Zuerst der innere Teil, also der Join S o nB=C T , ergibt: A ‘m’ ‘n’ B 1 1 C 1 1 D ‘p’ ‘p’ P 0.8 × 0.6 = 0.48 0.5 × 0.6 = 0.30 Nun noch darauf die Projektion auf Spalte D, ergibt: D ‘p’ Prof. Dr.-Ing. S. Michel P (1 − (1 − 0.48)(1 − 0.3)) = 0.636 TU Kaiserslautern Datenbanksysteme, WS 16/17 12 / 62 Probabilistic Databases Beispiel: Extensionale Evaluierung - Problem Betrachten wir die die Anfrageausführung zu πD (S o nB=C T ) über folgende Tabellen (wie weiter vorne): S= A ‘m’ ‘n’ B 1 1 P 0.8 0.5 T= C 1 D ‘p’ P 0.6 Zuerst der innere Teil, also der Join S o nB=C T , ergibt: A ‘m’ ‘n’ B 1 1 C 1 1 D ‘p’ ‘p’ P 0.8 × 0.6 = 0.48 0.5 × 0.6 = 0.30 Nun noch darauf die Projektion auf Spalte D, ergibt: D ‘p’ P (1 − (1 − 0.48)(1 − 0.3)) = 0.636 Hier stimmt etwas nicht! Die Wahrscheinlichkeit für Antwort ‘p‘ sollte 0.54 sein! Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 12 / 62 Probabilistic Databases Beispiel: Extensionale Evaluierung - Jetzt OK Gleiche Tabellen wie zuvor und äquivalente Anfrage, πD (πB (S) o nB=C T ) S= A ‘m’ ‘n’ B 1 1 P 0.8 0.5 T= C 1 D ‘p’ P 0.6 Zuerst die Projektion von S auf Attribut B, d.h. πB (S), ergibt: B 1 P (1 − (1 − 0.8)(1 − 0.5)) = 0.9 Nun der Join, also πD (πB (S) o nB=C T ), ergibt: B 1 C 1 D ‘p’ P 0.9 × 0.6 = 0.54 Nun noch darauf die Projektion auf Spalte D, ergibt: D ‘p’ Prof. Dr.-Ing. S. Michel P 0.54 TU Kaiserslautern Datenbanksysteme, WS 16/17 13 / 62 Probabilistic Databases Weiteres Beispiel R(x)= x a1 a2 a3 x a1 a S(x,y)= 1 a2 a2 a2 P p1 p2 p3 y b1 b2 b3 b4 b5 P q1 q2 q3 q4 q5 Anfrage: q() ← R(x), S(x,y), in SQL ausgedrückt: SELECT DISTINCT ‘true’ FROM R, S WHERE R.x = S.x Wie hoch ist also die Wahrscheinlichkeit, dass es eine Antwort gibt? P (q) = 1–[1 − p1 × (1 − (1 − q1 ) × (1 − q2 ))] ×[1 − p2 × (1 − (1 − q3 ) × (1 − q4 ) × (1 − q5 ))] Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 14 / 62 Probabilistic Databases Weiteres Beispiel (Cont’d) richtig 1 − (1 − p1 q1 )(1 − p1 q2 )(1 − p2 q3 ) (1 − p2 q4 )(1 − p2 q5 ) π p1 q1 p1 q2 p2 q3 p2 q4 p2 q5 π falsch o n o n 1 − {1 − p1 [1 − (1 − q1 )(1 − q2 )]} ×{1 − p2 [1 − (1 − q3 )(1 − q4 )(1 − q5 )]} p1 [1 − (1 − q1 )(1 − q2 )] p2 [1 − (1 − q3 )(1 − q4 )(1 − q5 )] 1 − (1 − q1 )(1 − q2 ) 1 − (1 − q3 )(1 − q4 )(1 − q5 ) R(x) x a1 a2 a3 P p1 p2 p3 S(x, y) Prof. Dr.-Ing. S. Michel x a1 a1 a2 a2 a2 y b1 b2 b3 b4 b5 P q1 q2 q3 q4 q5 πx R(x) TU Kaiserslautern S(x, y) Datenbanksysteme, WS 16/17 15 / 62 Probabilistic Databases Sichere und Unsichere Anfragen Wir haben gesehen, dass es für eine Anfrage Pläne geben kann, für die die extensionale Auswertung die korrekten Wahrscheinlichkeiten liefert. Einen Plan, der die korrekte Wahrscheinlichkeit berechnet nennt man auch sicher (safe). Anfragen, die einen sicheren Plan besitzen, nennt man sichere Anfragen (safe queries). Umgekehrt nennt man Anfragen, die keinen sicheren Plan haben unsichere Anfragen (unsafe queries). Unsichere Anfragen kann man nicht effizient berechnen. Anmerkung: Nicht verwechseln mit sicheren/unsicheren Anfragen im Tupel/Domänenkalkül aus InSy. Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 16 / 62 Probabilistic Databases Extensionale Pläne ist Postgresql Mit extensionalen Plänen kann man direkt via SQL arbeiten. Für die Wahrscheinlichkeiten wird eine extra Spalte benutzt, hier P. R(A)= A a1 a2 a3 P p1 p2 p3 S(A,B)= A a1 a1 a2 a2 a2 B b1 b2 b3 b4 b5 P q1 q2 q3 q4 q5 Dann z.B. Join wie gewohnt, dabei werden aber die Werte für P mitgeführt, entsprechend der Regeln von zuvor. SELECT R.A, S.B, R.P*S.P FROM R, S WHERE R.A = S.A Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 17 / 62 Probabilistic Databases Für Projektion, sieht dies in SQL wie folgt aus SELECT S.A, 1.0-prod(1.0 - S.p) FROM S GROUP BY S.A Es gibt keine “Produkt” Aggregationsfunktion. Folgender Code definiert diese (aus Folien von Dan Suciu): create or replace function combine_prod(float, float) returns float as 'select $1 * $2' language SQL; create or replace function final_prod(float) returns float as 'select $1' language SQL; drop aggregate if exists prod (float); create aggregate prod (float) ( sfunc = combine_prod, stype = float, finalfunc = final_prod, initcond = '1.0' ); Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 18 / 62 Probabilistic Databases Zusammenfassung Probabilistic Databases Probabilistische Datenbanken, motiviert durch Anwendungen, die unvollständige oder unpräzise Daten liefern, wie z.B. handschriftliche Dateneingabe, Text/Objekterkennung. Konzept der möglichen Welten (possible worlds) und deren Wahrscheinlichkeiten Semantik von Anfragen definiert über possible worlds. Verschiedene Arten von prob. Datenbanken: Tuple-Independent (TI), Block-Independent Disjoint (BID)- oder PC- Datenbanken, etc. Extensionale vs. Intensionale Auswertung Problemstellung: Berechne P (ti ) für Ergebnistupel ti Für manche Anfragen ist dies effizient möglich, für andere nicht. Forschung beschäftigt sich u.a. mit Fragen zur Komplexität und dem Problem der akkuraten Annäherung von effizient berechenbaren Wahrscheinlichkeiten. Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 19 / 62 Big Data / MapReduce Big Data Challenge Big Data / MapReduce source:dilbert.com Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 20 / 62 Big Data / MapReduce 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 16/17 21 / 62 Big Data / MapReduce 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 16/17 22 / 62 Big Data / MapReduce 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 16/17 23 / 62 Big Data / MapReduce 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 16/17 24 / 62 Big Data / MapReduce Big Data Challenge Gigabyte, Terabyte, Petabyte Aus Platzgründen nur teilweise dargestellt Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 25 / 62 Big Data / MapReduce 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 16/17 26 / 62 Big Data / MapReduce 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 16/17 27 / 62 Big Data / MapReduce 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 16/17 28 / 62 Big Data / MapReduce 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 16/17 29 / 62 Big Data / MapReduce 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 16/17 30 / 62 Big Data / MapReduce 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 16/17 31 / 62 Big Data / MapReduce 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 16/17 32 / 62 Big Data / MapReduce 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 16/17 33 / 62 Big Data / MapReduce 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 16/17 34 / 62 Big Data / MapReduce Big Data Challenge Screenshot: Datei mit Tweets im verteilten Dateisystem Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 35 / 62 Big Data / MapReduce 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 16/17 36 / 62 Big Data / MapReduce MapReduce MapReduce - Veranschaulichung der Phasen Prof. Dr.-Ing. S. Michel TU Kaiserslautern Datenbanksysteme, WS 16/17 37 / 62 Big Data / MapReduce 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 16/17 38 / 62 Big Data / MapReduce 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 16/17 39 / 62 Big Data / MapReduce 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 16/17 40 / 62 Big Data / MapReduce 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 16/17 41 / 62 Big Data / MapReduce 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 16/17 42 / 62 Big Data / MapReduce 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 16/17 43 / 62 Big Data / MapReduce 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 16/17 44 / 62 Big Data / MapReduce 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 16/17 45 / 62 Big Data / MapReduce 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 16/17 46 / 62 Big Data / MapReduce 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 16/17 47 / 62 Big Data / MapReduce 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 16/17 48 / 62 Big Data / MapReduce 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 16/17 49 / 62 Big Data / MapReduce 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 16/17 50 / 62 Big Data / MapReduce 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 16/17 50 / 62 Big Data / MapReduce 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 16/17 51 / 62 Quelle Google Yahoo Google Bing Google Bing Big Data / MapReduce 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 16/17 52 / 62 Big Data / MapReduce 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 16/17 53 / 62 Big Data / MapReduce 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 16/17 54 / 62 Big Data / MapReduce 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 16/17 55 / 62 Big Data / MapReduce 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 16/17 56 / 62 Big Data / MapReduce 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 16/17 57 / 62 Big Data / MapReduce 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 16/17 58 / 62 Big Data / MapReduce Prof. Dr.-Ing. S. Michel MapReduce TU Kaiserslautern Datenbanksysteme, WS 16/17 59 / 62 Big Data / MapReduce 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 16/17 60 / 62 Big Data / MapReduce 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 16/17 60 / 62 Big Data / MapReduce 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 16/17 61 / 62 Big Data / MapReduce 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 16/17 61 / 62 Big Data / MapReduce 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 16/17 62 / 62