Sunteți pe pagina 1din 22

Integrarea Sistemelor Informatice

Curs 2

BIG DATA
Ecosistemul Hadoop
Volume mari de date
• ACID
• CAP
• BASE

– [De citit capitolul 1 -


https://books.google.ro/books?id=UYZqAAAAQBA
J&pg=PA1&hl=ro&source=gbs_toc_r&cad=3#v=on
epage&q&f=false]
MapReduce
• Partea de Map
– transformă fișierele de intrare în perechi chei-valoare
folosind o funcție definită de utilizator (UDF)
• Sortare/amestecare
– se realizează sortarea și apoi se transferă rezultatele
mapării ca intrări pentru partea de reduce. Se asigură
că va fi o partiție pentru fiecare reductor.
• Partea de Reduce (sumarizare)
– efectuează agregarea, pas în care toate înregistrările
provenite de la o partiție sunt procesate împreună
Flux MapReduce
Big Data Hybris
• Multor studii le lipsește transparenta si
repetabilitatea, pornesc de la prezumția ca
tehnicile Big Data sunt un substitut, nu un
companion tehnicilor clasice de colectare,
curatare si analiza a datelor
• Exemple:
– Partidul piraților
– Google Flu Trends
Big Data Hybris
• Context: “If you are watching Iron Man 3, I'm
jealos and I hate you.”
• “John rides in a mustang” vs “John rides on a
mustang”
Hive
• Echipa Facebook dezvoltă Hive în 2008, ca
răspuns la problemele de procesare lentă a
datelor.
• În prezent, este folosit şi dezvoltat şi de către
alte companii cum ar fi Netflix.
• Motoare de procesare: MapReduce, Apache
Tez, Apache Spark
• Stocarea datelor: HDFS
• Stocare metadatelor: implicit în Apache Derby
Avantaje
• Limbaj de interogări: HiveQL, care implementează
un subset al standardului SQL. Foloseşte
abordarea schema-on-read
• Orientat OLAP
• Interactiv
• Scalabil
• Suporta UDF
• Suporta tabele virtuale
• Ofera Server Thrift, drivere ODBC/JDBC
PIG
• Limbaj procedural: Pig Latin
– Suportă funcţii definite de utilizator
– Poate apela cod scris în limbaje cum ar fi JRuby,
Jython sau Java
– Se pot include scripturi Pig în alte limbaje
– Util pentru date structurate, semi-structurate şi
nestructurate
HiveQL vs Pig Latin
HiveQL Pig Latin
• create external table stocks( DIV_A = LOAD 'quotes.csv' using
– exchange string, PigStorage(',')
– symbol string, AS (exchange:chararray,
– date_c date, symbol:chararray,
– Stock_volume integer) date_c:chararray,
– row format delimited stock_volume:int);
– fields terminated by '\t' B = FILTER DIV_A BY
– stored as textfile symbol=='IBM';
– location '/user/vlad/quotes'; C = FOREACH B GENERATE
• select avg(stock_volume) from AVG(B. stock_volume);
stocks where symbol="IBM". DESCRIBE C;
DUMP C;
Hive - motoare de execuție
MapReduce Tez
• hive> set • hive> set
hive.execution.engine=mr; hive.execution.engine=tez;
• hive> select • hive> select
substr(exchange_data,-4), substr(exchange_data,-4),
avg(euro_lei_cursz_eur),avg avg(euro_lei_cursz_eur),avg
(euro_lei_cursz_eur/dolarsu (euro_lei_cursz_eur/dolarsu
a_lei_cursz_usd) from a_lei_cursz_usd) from
exchange_rates group by exchange_rates group by
substr(exchange_data,-4); substr(exchange_data,-4);
Hive - motoare de execuție
MapReduce Tez
MapReduce
• hadoop jar /usr/lib/hadoop-
mapreduce/hadoop-mapreduce-examples.jar
wordcount /user/Vlad/pg1661
/user/Vlad/pg1661_out

hdfs dfs -cat /user/Vlad/pg1661_out/part-r-00000


Învățare automată
• Învățare supervizata: clasificări

• Învățare ne-supervizata: clusterizări


Stocarea datelor nestructurate
folosind VSM
• Necesara pentru aplicarea de algoritmi de învățare
automata
• Se pre-proceseaza documentele, după caz, se elimina
semnele de punctuație și se reprezenta cuvintele
folosind doar litere mici
• Se construiește, folosind, spre exemplu, o abordare
MapReduce, dicționarul care va sta la baza
reprezentării în VSM, în care fiecare cuvânt primește o
poziție în vector

v[1] V[2] V[3] …. V[n]


Cuvânt1 Cuvânt2 Cuvânt3 CuvântN
Stocarea datelor nestructurate
folosind VSM
• După aceea putem reprezenta toate
documentele folosind dicționarul și vectori
rari:
– [document 1: [[a1,b1],….,[an,bn]]… document z:
[[a1,b1],….,[an,bn]] ], unde ai este poziția unui
cuvânt în dicționar (din tabelul 1) și bi este
numărul de apariții al acestuia în documentul pe
care vrem să îl reprezentăm în VSM.
Calcul distante dintre documente
• Se pot folosi diverse metrici (măsuri de similaritate), cele mai uzuale
fiind distanța euclidiană și coeficientul de similaritate cosinus.
• Astfel se pot clasifica noi documente în raport cu cele stocate în
VSM găsind cele mai apropiate documente de acestea.
• Dacă d= (d1, d2,…, dn) și q= (q1, q2, …, qn) două puncte din spațiul n-
Euclidian, distanta dintre d și q este data de formula:
– D(d, q) = σ𝑛𝑖=1(𝑞𝑖 − 𝑑𝑖 )2
• Unghiul dintre p și q este dat de indicele de similaritate Cosinus:
– Cos(θ) = σ𝑛𝑖=1(𝑑𝑖 ∗ 𝑞𝑖 )Τ σ𝑛𝑖=1(𝑑𝑖 )2 ∗ σ𝑛𝑖=1(𝑞𝑖 )2
Calcul distante intre documente
• Fie documentele inițiale:
– D1: I have seldom heard him mention her under any
other name.
– D2: I heard him mention the suspect before.
– D3: I know without reading it that it is all perfectly
familiar to me.
– D4: Rarely I heard him mention her under any other
name.
• Iar interogarea este:
– Q: I know him under other familiar name
Calculul distantei dintre documente
• Dictionarul: [1, I], [2, have], [3, seldom], [4, heard], [5, mention], [6,
her], [7, under], [8, any], [9, other], [10, name], [11, him], [12, the],
[13, suspect], [14, before], [15, know], [16, without], [17, reading],
[18, it], [19, that], [20, is], [21, all], [22, perfectly], [23, familiar], [24,
to], [25, me], [26, rarely]
• D1: [1, 1], [2, 1], [3, 1], [4, 1], [5, 1], [6, 1], [7, 1], [8, 1], [9, 1], [10,
1], [11, 1]
• D2: [1, 1], [4, 1], [5, 1], [11, 1], [12, 1], [13, 1], [14, 1]
• D3: [1,1], [15,1], [16,1] , [17,1] , [18,2] , [19,1] , [20,1] , [21,1] ,
[22,1] , [23,1] , [24,1], [25, 1]
• D4: [1, 1], [4, 1], [5, 1], [6, 1], [7, 1], [8, 1], [9, 1], [10, 1], [11, 1], [26,
1]
• Q: [1, 1], [7, 1], [9, 1], [10, 1], [11, 1], [15, 1], [23, 1]
Calculul distantei dintre documente

Distanta Euclidiana Similaritate cosinus


• D(Q,D1)= ((1–1)2+(1– • COS(Q,D1)=0.6154;
0) 2+(1–0) 2+(1–0) 2+(1– • COS (Q,D2)=0.3086;
0) 2+(1–0)2+(1–1)2+(0– • COS (Q,D3)=0.2108;
1) 2+(1–1) 2+(0–
1) 2)1/2=71/2=2.6457 • COS (Q,D4)=0.6804
• D(Q, D2) = 3;
• D(Q, D3)=4.1231;
• D(Q, D4)=2.2360
Validare model
• Validarea încrucișată sau cross-validarea testează
modelul pe date pe care acesta nu le-a procesat
anterior.
• In cazul validării încrucișate tip 5-fold, datele se împart
în date de antrenare și date de test, de câte cinci ori.
• La fiecare parcurgere, avem 20% date de test pe baza
cărora se testează funcția estimată din restul de 80%.
• Fiecare document (punct de date) este folosit o singură
dată într-un set de testare și de patru ori într-un set de
antrenare.
Tipuri de baze de date NoSQL
• Orientate pe coloane: HBase, Cassandra
• Orientate pe colectii de perechi cheie-valoare:
Oracle NoSQL, Redis
• Orientate pe documente: MongoDB, CouchDB
• Tip graf: Giraph, MarkLogic
• Multi-model: ArangoDB
– Popularitate: http://db-engines.com/en/ranking