cloud data management - uni-leipzig.de...cdm ss 19, dr. eric peukert hive-ql query wird in dag...

19
Universität Leipzig, Institut für Informatik http://dbs.uni-leipzig.de Cloud Data Management Kapitel 5: MapReduce und Datenbanken (Teil2) Dr. Eric Peukert Sommersemester 2019

Upload: others

Post on 03-Apr-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

Universität Leipzig, Institut für Informatikhttp://dbs.uni-leipzig.de

Cloud Data ManagementKapitel 5: MapReduce und

Datenbanken (Teil2)

Dr. Eric PeukertSommersemester 2019

Page 2: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

https://www.datanami.com/2019/06/13/big-data-meltdown-how-unclean-unlabeled-and-poorly-managed-data-dooms-ai/

News

Page 3: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

Hive-QL Query wird in DAG (directed acyclic graph) übersetztKnoten: Operatoren

TableScanSelect, ExtractFilterJoin, MapJoin, Sorted Merge Map JoinGroupBy, LimitUnion, CollectFileSink, HashTableSink, ReduceSinkUDTF

Graph repräsentiert DatenflussMehrere (parallele) Map/Reduce Phasen möglich

Hive-QL: Anfrageübersetzung

Page 4: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

Beispiel

SELECT *

FROM status_updates

WHERE status

LIKE ‘michael jackson’

Hive-QL: Anfrageübersetzung (Beispiel)

Page 5: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

SELECT COUNT(*)

FROM status_updates

WHERE ds=‘2009-08-01’

Hive: Anfrageübersetzung (2)

Updates/Nutzer

Alle Updates

Zwischenspeicherndes Map-Outputs

Page 6: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

Anfragepläne können sehr komplex werdenAnfrageoptimierung

Verwerfen nicht benötigter SpaltenBerücksichtigung von (Outer-)Join-und Selektionsattributen

Frühes Anwenden von SelektionsprädikatenVerwerfen nicht benötigter Partitionen

Hive: Anfrageübersetzung und -optimierung

Page 7: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

Hive: Join

userid age ...

111 25 ...

222 32 ...

pageId userId ...

1 111 ...

2 111 ...

1 222 ...

key value111 <R,1>

111 <R,2>

222 <R,1>

key value111 <S,25>

222 <S,32>

key value111 <R,1>

111 <R,2>

111 <S,25>

key value222 <R,1>

222 <S,32>

pageId age

1 25

2 25

pageId age

1 32

page_view

user map

shuf

fle +

sor

t

redu

ce

INSERT INTO TABLE pv_users SELECT pv.pageid, u.ageFROM page_view pv JOIN user u ON (pv.userid = u.userid)

pv_users

• Key = Join-Key, Value mit Flag (R oder S) zur Unterscheidung d. Tabellen• Mehrweg-Join mit selbem Join-Key ® 1 MapReduce job• Mehrweg-Join mit n Join-Keys ® n MapReduce job

= Shuffle Join (reduce-side join)

also look at:http://henning.kropponline.de/2016/10/09/hive-join-strategies/

Page 8: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

MapJoin (aka Broadcast Join)kleine Tabelle als zusätzlicher Map-Input kann vorher zu Hash-Tabelle umgewandelt werden (ggf. zusätzlich komprimiert)kein Reduce notwendig

Dynamische Join-EntscheidungBestimmung großer/kleiner Tabelle zur LaufzeitAnwendung von MapJoin falls kleine Tabelle(n) “klein genug”

Join: Performanzsteigerung durch MapJoin

pageId userId ...

1 111 ...

2 111 ...

1 222 ...

page_view

userId pageIds

111 [1,2]

222 [1]

HashTable

userid age ...111 25 ...

222 32 ...

user

map

pageId age

1 25

2 25

1 32

pv_users

Page 9: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

Key = Gruppierungsattribute Reduce = Aggregationsfunktion

“Voraggregation” durch Combiner in Map möglich (z.B(<1,25>,2))

Hive: Group ByINSERT INTO TABLE pageid_age_sumSELECT pageid, age, count(*)FROM pv_usersGROUP BY pageid, age

pageId age

1 25

1 25

pv_users

pageId age

1 25

2 32

key value

key value

map

shuf

fle +

sor

t

redu

ce

key value

key value

pageId age count

pageId age count

pageid_age_sum

Page 10: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

Key = Gruppierungsattribute Reduce = Aggregationsfunktion

“Voraggregation” durch Combiner in Map möglich (z.B(<1,25>,2))

Hive: Group ByINSERT INTO TABLE pageid_age_sumSELECT pageid, age, count(*)FROM pv_usersGROUP BY pageid, age

pageId age

1 25

1 25

pv_users

pageId age

1 25

2 32

key value(1,25) 2

key value(1,25) 1

(2,32)1

map

shuf

fle +

sor

t

redu

ce

key value

key value

pageId age count

pageId age count

pageid_age_sum

Page 11: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

Key = Gruppierungsattribute Reduce = Aggregationsfunktion

“Voraggregation” durch Combiner in Map möglich (z.B(<1,25>,2))

Hive: Group ByINSERT INTO TABLE pageid_age_sumSELECT pageid, age, count(*)FROM pv_usersGROUP BY pageid, age

pageId age

1 25

1 25

pv_users

pageId age

1 25

2 32

key value(1,25) 2

key value(1,25) 1

(2,32)1

map

shuf

fle +

sor

t

redu

ce

key value(1,25) 2

(1,25) 1

key value(2,32) 1

pageId age count

1 25 3

pageId age count

2 32 1

pageid_age_sum

Page 12: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

Verwendung von Skripten in HiveQL-Anfragen mittels TRANSFORM-Operator

Daten(de-)serialisierungAustausch per stdin/stdout

Nutzer-definierte Skripte

firstletter.py

import sys for line in sys.stdin:

line = line.strip() id, title = line.split('\t') firstl = title[:1] print '\t'.join([id, title, firstl])

ADD FILE firstletter.py;SELECT firstl, count(id) AS nFROM (SELECT TRANSFORM (id, title) USING 'python firstletter.py'AS id, title, firstl

FROM item ) fGROUP BY firstl;

id title1 Body Snatcher

2 Armageddon

3 AI

firstl nB 1

A 2

Page 13: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

Sortierung durch zusätzlichen Reduce-StepSORT BY = Sortierung pro ReducerORDER BY = globale Sortierung = SORT BY mit nur einem Reducer

Hive: Sortierung

id title

1 Body Snatcher

2 Armageddon

3 AI

4 Vegas Vacation

5 Vermin

6 The Visitors

key val

B 1

A 1

A 1

V 1

V 1

T 1

key val

A 1

A 1

B 1

key val

T 1

V 1

V 1

key val

A 2

B 1

key val

T 1

V 2

map

1

shuf

fle +

sor

t

redu

ce1

key val

A 2

B 1

key val

V 2

T 1

redu

ce2

key val

A 2

V 2

B 1

T 1

redu

ce2

SELECT firstl, count(id) AS nFROM ... GROUP BY firstlSORT BY | ORDER BY n DESC

SORT BY

ORDER BY

Page 14: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

System zur Verarbeitung großer, semi-strukturierter Daten auf Basis von Hadoop/MapReduceProzedurale High-Level-Skriptsprache: PigLatin

Nutzung von Variablen mit komplexe Datentypen (Tupel, Bag, Map)Skript-Ausführung

Pig-Skript wird geparst und ggf. optimiertTransformierung in MapReduce-WorkflowAusführung mittels Hadoop

VorteileVereinfachte Definition komplexer WorkflowsAutomatische Konfiguration/Tuning vom MR-Jobs / -WorkflowsOptionales Type-Checking falls Schema vorhanden

Pig: Übersicht

Quellen: Diese und nachfolgende Folien:http://www.slideshare.net/hadoop/practical-problem-solving-with-apache-hadoop-pighttp://www.slideshare.net/xefyr/pig-making-hadoop-easyhttp://pig.apache.org/docs/r0.10.0/

Page 15: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

Webnutzungs-Analyse: „Die fünf am meisten besuchten Webseiten junger Nutzer (18-25 Jahre)“

Pig-Skript:

Pig: Beispiel

Users = load ‘users’ as (name, age);Fltrd = filter Users by age >= 18 and age <= 25; Pages = load ‘pages’ as (user, url);Jnd = join Fltrd by name, Pages by user;Grpd = group Jnd by url;Smmd = foreach Grpd generate group, COUNT(Jnd) as clicks;Srtd = order Smmd by clicks desc;Top5 = limit Srtd 5;store Top5 into ‘top5sites’;

Page 16: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

Load / Store / DumpDaten von File System lesen / in FS schreiben / auf stdout ausgeben

Foreach … GenerateAnwendung auf jeden Datensatz ® Generierung neuer DatensätzeÄhnlich: map

Group Gruppierung von Datensätzen nach Schlüssel

JoinJoin zweier oder mehr EingabedateienUnterstützung verschiedener Join-Implementierungen inkl. Skew-Behandlung

Weitere: Stream, Order, Filter, Distinct, Sample, Split, … Zusätzlich: String-Funktionen, mathematische Funktionen (count, avg, …), Diagnose-Methoden, UDF-Handling, …

Pig: Relationale Operatoren

Page 17: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

AnwendungsdomänenPig: Datenpipelines, Iterative Berechnungen, …Hive: OLAP-artige Anfragen, BI Tools, …

Pig geeignet zur Programmierung von ETL-StreckenDatenvorverarbeitung für Data Warehousing

Pig: Abgrenzung SQL und HivePig SQL

Definition Prozedural Deklarativ

Schema Optional Voraussetzung

Workloads „Scan“-orientiert OLTP+OLAP

Query-Performanz

mittel, geringe Optimierungen ++, Optimierungen

Page 18: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

MapReduce ist kein DBMS, kann aber zur “datenbank-artigen” Verarbeitung großer Datenmengen genutzt werden

SQL-Anfragen können automatisch in MapReduce-Programme transformiert werdenMR kann flexibel auf die (semi-strukturierten) Originaldaten (d.h. Dateien) zugreifen

RDBMS sind “pro Knoten” effizienter als MapReduce... aber MapReduce skaliert deutlich besser und ist fehlertoleranter

Kombination der Stärken von RDBMS und MapReducesinnvoll

Zusammenfassung

Page 19: Cloud Data Management - uni-leipzig.de...CDM SS 19, Dr. Eric Peukert Hive-QL Query wird in DAG (directedacyclicgraph) übersetzt Knoten: Operatoren TableScan Select, Extract Filter

CDM SS 19, Dr. Eric Peukert

[MRJoin] Blanas et al.: A Comparison of Join Algorithms for Log Processing in MapReduce. SIGMOD 2010[Hive] http://hadoop.apache.org/hive/[Hive1] http://www.slideshare.net/zshao/hive-data-warehousing-analytics-on-hadoop-presentation[Hive2] http://www.slideshare.net/ragho/hive-user-meeting-august-2009-facebook[Hive3] http://www.slideshare.net/jsichi/hive-evolution-apachecon-2010

Quellen & Literatur