Datenbanksysteme - Wintersemester 2015/16

Werbung
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
Herunterladen