Documente Academic
Documente Profesional
Documente Cultură
Curs 1
Paradigma de calcul
MapReduce. Platforma
Hadoop
2
Analiza de date large-scale
Database
vs.
3
Comparație
Baze de date
vs.
• MapReduce BD Relaționale
5
Ce este Hadoop?
• Hadoop este un framework pentru procesarea distribuită a seturilor
mari de date în cadrul unor cluster-e mari de calculatoare
• Seturi de date mari → Terabytes sau petabytes de date
• Cluster-e mari → sute sau mii de noduri
6
Cluster de calcul
Un rack de N mașini
O mașină ➔ Un nod
7
Cluster de calcul
• Cluster ➔ Set de mașini conectate între ele
• Cu memorie partajată (Shared-memory)
• Cu disc partajat (Shared-disk)
• Fără partajare (Shared-nothing)
Shared-memory Shared-disk
Shared-nothing
8
Ce este Hadoop? (Continuare)
9
Diferența față
de RDBMS
10
Arhitectura Master/Slave a lui
Hadoop
• Arhitectura sistemului Hadoop este de tip master-slave shared-nothing
11
Principiile de proiectare ale lui
Hadoop
• Permite procesarea big data
• Produse hardware
• Un număr mare de mașini low-end (ieftine) ce lucrează în paralel
pentru a rezolva o problemă de calcul
12
Principiile de proiectare ale
lui Hadoop
• Paralelizare și distribuire automată
• Ascunse de utilizatorul final
13
Cine utilizează MapReduce/Hadoop?
14
Hadoop: Cum funcționează?
15
Arhitectura Hadoop
• Sistem distribuit de fișiere (Distributed file system – HDFS)
• Motor de execuție (MapReduce)
16
Hadoop Distributed File System
(HDFS)
Namenode centralizat
- Menține metadatele despre fișiere
Fișier F
Blocuri (64 MB)
17
Proprietățile principale ale
HDFS
• Dimensiune: O instanță HDFS poate consta din mii de mașini server,
fiecare stocând o parte a datelor sistemului de fișiere
18
Motorul de execuție Map-Reduce
(Exemplu: Numărarea culorilor)
Blocuri de Se produc Shuffle & Sorting Se consumă (k, [v])
intrare în HDFS perechi (k, v) pe baza cheilor k ( , [1,1,1,1,1,1..])
( , 1)
Produce (k’, v’)
Map Parse-hash ( , 100)
Reduce
Map Parse-hash
Reduce
Map Parse-hash
Reduce
Map Parse-hash
20
Proprietăți ale motorului
MapReduce (Continuare)
• Task Tracker este nodul slave (rulează pe fiecare datanode)
• Primește task-ul de la Job Tracker
• Rulează task-ul până la finalizare (fie că este task de tip map, fie reduce)
• Se află întotdeauna în comunicare cu Job Tracker (în privința progresului raportat)
Map Parse-hash
Reduce
Map Parse-hash
21
Perechi cheie-valoare
• Codul funcțiilor Mapper și Reducer este furnizat de utilizator
• Funcțiile mapper:
• Consumă perechile <key, value>
• Produc perechi <key, value>
• Funcțiile reducer:
• Consumă <key, <list of values>>
• Produc <key, value>
22
Etapele MapReduce
23
Exemplul 1: Numărarea
cuvintelor
• Job: Numărarea aparițiilor fiecărui cuvânt într-un set de date
Task-uri Task-uri
Map Reduce
24
Exemplul 2: Numărarea culorilor
Job: Numărarea fiecărei culori într-un set de date
Blocuri de
intrare în Se produc (k, v) Shuffle & Sorting Se consumă (k, [v])
HDFS ( , 1) bazat pe k ( , [1,1,1,1,1,1..])
Map Parse-hash
Reduce Part0002
Map Parse-hash
Reduce Part0003
Map Parse-hash
Acesta este fișierul de ieșire –
are 3 părți, probabil pe 3 mașini
25 diferite
Exemplul 3: Filtrarea culorilor
Job: Să se selecteze doar culorile albastru și verde
Blocurile de Se produc (k, v) • Fiecare task de tip map va
intrare în HDFS ( , 1)
selecta doar culorile verde și
albastru
Scriere pe HDFS
Map Part0001
• Nu este necesară etapa reduce
Scriere pe HDFS
Map Part0002
Acesta este fișierul de
ieșire; are 4 părți pe
Scriere pe HDFS
Map Part0003 (probabil) 4 mașini
diferite
Scriere pe HDFS
Map Part0004
26
Etapele MapReduce
27
Granularitatea procesării
• Mapper-e
• Rulează înregistrare cu înregistrare
• Codul procesează înregistrarea respectivă și poate
produce:
• Zero, una sau mai multe ieșiri
• Reducer-e
• Rulează pe bază de grup de înregistrări (având aceeași
cheie)
• Codul procesează grupul respectiv și poate produce:
• Zero, una sau mai multe ieșiri
28
Implementare în Java Extindere a clasei Mapper din Hadoop
Funcție Map
Funcție Reduce
Configurare Job
30
Optimizarea 1: Are loc în cadrul mapper-elor
Map Parse-hash
Reduce Part0002
Map Parse-hash
Reduce Part0003
Map Parse-hash
Acesta este fișierul de
ieșire; are 3 părți, probabil
31 pe 3 mașini diferite
Clasa Mapper
Se apelează o dată după procesarea
tuturor înregistrărilor (Aici se poate
produce output-ul)
https://hadoop.apache.org/docs/stable/api/org/
apache/hadoop/mapreduce/Mapper.html
32
Optimizare 2: Map-Combine-Reduce
• Idee: agregarea parțială a rezultatelor obținute de mapper-e pe
fiecare mașină
Map Parse-hash
Reduce Part0002
Map Parse-hash
Reduce Part0003
Map Parse-hash
Acesta este fișierul de
ieșire; are 3 părți, probabil
34 pe 3 mașini diferite
Configurarea Hadoop pentru a folosi un
Combiner
Folosește un combiner
35
Optimizare 3: Execuție speculativă
36
Optimizare 4: Localizare
• Localizare: încearcă să ruleze codul funcției map pe mașina pe care
se află datele relevante
• Dacă nu este posibil, atunci încearcă pe o mașină din același rack
• Eforturi mari, fără nicio garanție
37
Transformarea operațiilor din
bazele de date în job-uri
Hadoop
38
Operații pe bazele de date
• Selecție (Filtrare)
• Proiecție
• Grupare și agregare
• Eliminarea duplicatelor
• Join
39
Selecție: σ
• Operatorul Select: σc (R):
• c este o condiție pe atributele relației R
• Selectează o submulțime de tupluri din R care satisfac condiția de selecție c
Select *
From R
Where R.A = R.B
And R.D > 5;
40
Revenire la filtrarea culorilor...
Job: Să se selecteze doar culorile albastru și verde
Blocuri de intrare Se produc (k, v) • Fiecare task de tip map va
pe HDFS ( , 1)
selecta doar culorile albastru și
verde
Scriere în HDFS
Map Part0001
• Nu este necesară etapa reduce
Scriere în HDFS
Map Part0002
Acesta este fișierul de
ieșire; are 4 părți, probabil
Scriere în HDFS
Map Part0003 pe 4 mașini
Scriere în HDFS
Map Part0004
41
Proiecție: π
• πA1, A2, …, An (R), unde A1, A2, …, An mulțimii de atribute AR
• Returnează toate tuplurile din R, dar doar coloanele A1, A2, …, An
R
A B C
C V X
1 2 5
5 1 17
3 4 6
6 3 22
1 2 7
7 1 23
1 2 8
8 1 26
42
Grupare și agregare
• Funcția de agregare ia o colecție de valori și returnează o valoare
singulară ca rezultat
• avg: valoarea medie
• min: valoarea minimă
• max: valoarea maximă
• sum: sumă de valori
• count: număr de valori
43
Operatorul de Groupare &
Agregare : Exemplu
44
Revenim la numărarea
cuvintelor...
• Job: Să se numere aparițiile fiecărui cuvânt dintr-un set de date
45
Eliminarea duplicatelor: (R)
46
Join: R ⋈C S
• Operația θ-Join este produsul cartezian asupra căruia se
aplică o condiție C
47
Compunerea (join) a două seturi mari de date:
Re-Partiționarea Join-ului
Dataset A Dataset B Different join keys
Amestecare și sortare
(Shuffling & sorting) prin
Etapa “Shuffling and Sorting”
rețea
50
Modelul Black-Box al lui
Hadoop
• SGBD-urile au un model Open-Box
• Datele (structura) sunt cunoscute (Schema BD)
• Cererile sunt cunoscute (scrise în SQL)
51
Toleranța la erori în Hadoop
• Datele intermediare între mapper-e și reducer-e sunt materializate spre a realiza
o toleranță la erori simplă și directă
52
Simplitatea provine din…
• Job-urile sunt read-only (nu modifică date)
53
Mai multe despre etapele de
execuție
54
Etapele de execuție
• InputFormat
• Funcția Map
• Partitioner
• Sorting & Merging
• Combiner
• Shuffling
• Merging
• Funcția Reduce
• OutputFormat
Etapele întâlnite
Job: Să se numere de câte ori apare fiecare culoare dintr-un set de date
Blocuri de Se produc (k, v) Shuffle & Sorting Se consumă(k, [v])
intrare în HDFS ( , 1) bazat pe k ( , [1,1,1,1,1,1..])
Map Parse-hash
Reduce Part0002
Map Parse-hash
Reduce Part0003
Map Parse-hash
Acesta este fișierul de ieșire; are
3 părți, probabil pe 3 mașini
56 diferite
Funcții de partiționare
• Ieșirea mapper-elor trebuie să fie partiționată
• Numărul de partiții = numărul de reducer-e
• O aceeași cheie (din toate mapper-ele) trebuie să meargă într-o aceeași
partiție (și, prin urmare, la același reducer)
57
Partitioner modificat
Returnează un Id de partiție
Custom Partitioner
(https://github.com/adrianfdzm/HadoopExamples/blob/master/HadoopExamples/src/main/java/es/
afm/hadoop/examples/partitioner/totalorderv1/TotalOrderV1Partitioner.java)
58
Optimizare: Echilibrare (load balancing)
între reducer-e
• Presupunem că avem N reducer-e
Trimite K2 la Reducer 2
K3, K5 Reduce
….. Reduce
59
Formate de Intrare/Ieșire
• Modelul de date din Hadoop Orice date, în orice format, se vor potrivi (“Any
data will fit”)
• Text, format binar, cu o anumită structură etc.
60
Formate de intrare
Cititorul de înregistrări citește octeți și îi
convertește în înregistrări
Map
Map
Map
Map
Map
61
Configurarea formatelor de intrare / ieșire în
Hadoop
Definirea formatelor
62
Etapele de execuție - ok
• InputFormat
• Map function
• Partitioner
• Sorting & Merging
• Combiner
• Shuffling
• Merging
• Reduce function
• OutputFormat
Mai multe despre HDFS
64
HDFS și politica de plasare
(Placement Policy)
Politica de plasare implicită
• Prima copie este scrisă în nodul care a creat
fișierul (write affinity)
65
Pornire în Safemode
La pornire Namenode-ul intră în modul Safemode (câteva secunde).
02/20/2023 66
Protocolul de comunicare
02/20/2023 67
Configurare
• Există câteva fișiere care controlează configurările cluster-elor Hadoop
• Mapred-site.xml: parametrii map-reduce
• Hdfs-site.xml: parametrii HDFS
• Masters: Care sunt nodurile master?
• Slaves: Care sunt nodurile slave?
68
Interfață Web
• Există o interfață de monitorizare a cluster-ului HDFS, accesibilă la
portul 50070
• Pe lângă aceasta, există utilitare speciale de monitorizare pentru
Hadoop: Datadog, LogicMonitor, Dynatrace
69
Concluzie: Hadoop vs. Alte sisteme
Baze de date distribuite Hadoop
Modelul de calcul - Noțiunea de tranzacție - Noțiunea de job
- Tranzacția este unitatea de - Job-ul este unitatea de lucru
lucru - Fără control al concurenței
- Proprietățile ACID, controlul
concurenței
Modelul de date - Date structurate având schema - Orice date, având orice format, se vor
cunoscută potrivi
- Mod Read/Write - Date (ne)(semi)structurate
- Mod ReadOnly
Modelul de cost - Server-e scumpe - Mașini ieftine
Toleranța la erori - Eșecurile sunt rare - Eșecurile sunt destul de comune în cazul
- Mecanisme de recuperare miilor de mașini
(recovery) - Toleranță la erori simplă, dar eficientă
Caracteristici cheie - Eficiență, optimizare, fine-tuning - Scalabilitate, flexibilitate, toleranță la erori
• Cloud Computing
• Un model de calcul în care orice infrastructură de calcul poate
rula în cloud
• Hardware & Software sunt furnizate ca servicii distante
• Elasticitate: se mărește sau scade pe baza cererilor utilizatorilor
• Exemplu: Amazon EC2 70
Caracteristici SGBD
• Noțiunea de tranzacții
• Noțiunea de job