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

Post on 03-Apr-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Cloud Data ManagementKapitel 5: MapReduce und

Datenbanken (Teil2)

Dr. Eric PeukertSommersemester 2019

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

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

CDM SS 19, Dr. Eric Peukert

Beispiel

SELECT *

FROM status_updates

WHERE status

LIKE ‘michael jackson’

Hive-QL: Anfrageübersetzung (Beispiel)

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

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

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/

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

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

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

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

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

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

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/

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’;

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

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

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

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

top related