Datenbanksysteme
Wintersemester 2015/16
Prof. Dr.-Ing. Sebastian Michel
TU Kaiserslautern
smichel@cs.uni-kl.de
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