9
34 Lector univ. dr. Vlad DIACONITA Departamentul de Informatică și Cibernetică Economică Academia de Studii Economice din București PROCESAREA VOLUMELOR MARI DE DATE FOLOSIND HADOOP YARN PROCESSING BIG DATA WITH HADOOP YARN Abstract. The objective of this article is to analyze the Big Data processing technologies, focusing on the frameworks that are specific to Hadoop YARN. There are also presented and discussed solutions for constructing ad-hoc clusters using Cloud service providers. Keywords: Hadoop, Yarn, Sqoop, Oozie, MapReduce. Clasificarea JEL: L86, C88 1. Stadiul cunoașterii Big Data nu se referă doar la dimensiunea foarte mare a datelor analizate, are legătură și cu complexitatea algoritmilor aplicați pe respectivele date, pe agregările, comparările și joncțiunile realizate pentru a obține informații utile și valoarea adăugată. Spre exemplu, o căutare simplă a unor cuvinte într-un fișier care conține 10.000 de referate se poate realiza cu un calculator obișnuit. În schimb, dacă se dorește aplicarea unui algoritm tip k-NN pentru a se găsi cele mai apropiate documente față de cel căutat dintr-un fișier ce conține 10.000 de înregistrări, este utilă folosirea unei abordări tip MapReduce specifică Hadoop. În (Varian, 2014) sunt discutate principalele instrumente pentru analiza volumelor mari de date. Se arată că analiza datelor în economie se poate împărții în patru categorii: (1) predicție, (2) rezumare, (3) estimare și (4) testarea ipotezelor. Învățarea automată (machine learning) poate oferi un set de instrumente ce pot fi folositor în a rezuma diverse tipuri de legăt uri ne-liniare între date. Prin învățare automată putem obține o funcție ce poate prezice pe y ca funcție de x. Regresia liniară sau logistică s-ar putea să nu fie cea mai indicată mai ales dacă vorbim de o cantitate mare de date, caz în care ar trebuie luate în calcul metode non-liniare (cum ar fi arbori de regresie și clasificare, random forrests sau support vector machines). În (Bologa, 2013) sunt discutate caracteristicile soluțiilor Big Data fiind analizate beneficiile utilizării lor în detecția fraudei în domeniul asigurărilor de sănătate în România. În (Florea, 2011) sunt discutate aspecte ce țin de

VLAD DIACONITA - Procesarea volumelor mari de date folosind

Embed Size (px)

Citation preview

Page 1: VLAD DIACONITA - Procesarea volumelor mari de date folosind

34

Lector univ. dr. Vlad DIACONITA

Departamentul de Informatică și Cibernetică Economică

Academia de Studii Economice din București

PROCESAREA VOLUMELOR MARI DE DATE FOLOSIND

HADOOP YARN

PROCESSING BIG DATA WITH HADOOP YARN

Abstract. The objective of this article is to analyze the Big Data processing

technologies, focusing on the frameworks that are specific to Hadoop YARN. There

are also presented and discussed solutions for constructing ad-hoc clusters using

Cloud service providers.

Keywords: Hadoop, Yarn, Sqoop, Oozie, MapReduce.

Clasificarea JEL: L86, C88

1. Stadiul cunoașterii Big Data nu se referă doar la dimensiunea foarte mare a datelor analizate, are

legătură și cu complexitatea algoritmilor aplicați pe respectivele date, pe agregările,

comparările și joncțiunile realizate pentru a obține informații utile și valoarea

adăugată. Spre exemplu, o căutare simplă a unor cuvinte într-un fișier care conține

10.000 de referate se poate realiza cu un calculator obișnuit. În schimb, dacă se

dorește aplicarea unui algoritm tip k-NN pentru a se găsi cele mai apropiate

documente față de cel căutat dintr-un fișier ce conține 10.000 de înregistrări, este

utilă folosirea unei abordări tip MapReduce specifică Hadoop.

În (Varian, 2014) sunt discutate principalele instrumente pentru analiza

volumelor mari de date. Se arată că analiza datelor în economie se poate împărții în

patru categorii: (1) predicție, (2) rezumare, (3) estimare și (4) testarea ipotezelor.

Învățarea automată (machine learning) poate oferi un set de instrumente ce pot fi

folositor în a rezuma diverse tipuri de legături ne-liniare între date. Prin învățare

automată putem obține o funcție ce poate prezice pe y ca funcție de x. Regresia

liniară sau logistică s-ar putea să nu fie cea mai indicată mai ales dacă vorbim de o

cantitate mare de date, caz în care ar trebuie luate în calcul metode non-liniare

(cum ar fi arbori de regresie și clasificare, random forrests sau support vector

machines).

În (Bologa, 2013) sunt discutate caracteristicile soluțiilor Big Data fiind

analizate beneficiile utilizării lor în detecția fraudei în domeniul asigurărilor de

sănătate în România. În (Florea, 2011) sunt discutate aspecte ce țin de

Page 2: VLAD DIACONITA - Procesarea volumelor mari de date folosind

Procesarea volumelor mari de date folosind Hadoop YARN

35

îmbunătățirea performanțelor și reducerea timpului de procesare prin automatizarea

proceselor folosind fluxuri de lucru.

În (Hashem, 2015) este discutată procesarea volumelor mari de date folosind

arhitectura Cloud. Sunt descrise direcții de cercetare, în special orientate pe

scalabilitate, disponibilitate, integritatea datelor, transformări de date, calitatea și

eterogenitatea acestora, confidențialitate precum și aspecte legale și regulatorii.

Sunt discutate modele Cloud cum ar fi PaaS, SaaS sau IaaS precum și diverse

categorii de surse de date, formate de conținut, data staging și procesare de date.

Sunt prezentate multe studii de caz cu privire la folosirea împreună a Big Data și

Cloud Computing (SwiftKey, 343 Industries, Alacer, Nokia etc).

Precum se arată în (Lublinsky et al, 2013), pentru ca un algoritm să ruleze în

abordare MapReduce trebuie ca o problemă să poată fi împărțită în mai multe

probleme iar acestea să fie rezolvate independent iar rezultatele apoi agregate. Nu

orice algoritm de învățare automată (spre exemplu Self Organizing Maps) poate fi

implementat fără ajustări într-o astfel de abordare. Dificultăți apar la ajustarea

algoritmilor pentru a rula folosind MapReduce și la alegerea metricilor și

ponderilor pentru astfel de algoritmi. Provocări apar și la modalitatea de stocare a

datelor ne-structurate (spre exemplu, referate și proiecte) dacă dorim ca algoritmii

de clasificare să ruleze la mai multe niveluri (propoziție, paragraf și document

integral).

2. Evoluția YARN

Hadoop 2 a introdus YARN (Yet Another Resource Negotiator) care reprezintă

o îmbunătățire consistentă a modului cum se realizează procesarea datelor în cadrul

clusterului. Precum se arată în (Murthy, 2014), generalizând interfața la

planificator (scheduler), YARN oferă un cadru pentru construirea de aplicații

scalabile pentru procesarea datelor folosind și alte abordări în afară de MapReduce,

cum ar fi Bulk Synchronous Parallel (BSP). De asemenea, numărul de procese Map

respectiv Reduce nu mai sunt fixe, putând fi ajustate dinamic la rulare contribuind

la o mai bună utilizare a clusterului.

Produse din ecosistemul Hadoop care au apărut ca efect al dezvoltării YARN

sau care beneficiază puternic în urma facilităților acestei evoluții sunt:

Apache Tez, un cadru ce conține un API specific YARN care poate

optimiza aplicațiile dezvoltate de utilizatori sau existente în Hadoop cum ar

fi Hive sau Pig, pentru a rula cât mai bine în cadrul clusterului;

Page 3: VLAD DIACONITA - Procesarea volumelor mari de date folosind

Vlad Diaconita

36

Apache Giraph care poate construi grafuri pornind de la datele sociale și

care folosește cadrul Bulk Synchronous Parallel Computing (BSP) pentru

procesarea acestora;

Apace Sqoop care poate transfera date între Hadoop și baze de date

relaționale;

Apache Mahout care implementează algoritmi de învățare automată;

Apache Flume este un serviciu distribuit care permite colectarea, agregarea

și mutarea unor volume mari de date tip log. Are o arhitectură bazată pe

fluxuri de date și care permite construirea de aplicații analitice;

Apache Oozie permite definirea folosind fișiere XML de fluxuri complexe

în cadrul unui cluster Hadoop.

Figura 1. Rulare script cu și fără Tez

Rezultatele rulării unei procesării în Apace Pig fără optimizare (2min53

secunde) și cu optimizare folosind Tez (1min43 secunde) sunt prezentate în figura

1.

Pentru a afișa bazele de date disponibile în MySQL folosind Sqoop din nodul

principal al clusterului Hadoop putem folosi comanda:

% sqoop list-databases –connect jdbc:mysql://host_mysql/ --username sqoop –

password sqoop

Rezultatul rulării este arătat în figura 2:

Figura 2. Conectare la MySQL din Apache Sqoop

Pentru a importa date din MySQL folosind un fișier de configurare folosim

următoarea comandă:

Page 4: VLAD DIACONITA - Procesarea volumelor mari de date folosind

Procesarea volumelor mari de date folosind Hadoop YARN

37

% sqoop --options-file configurare-options.txt --table nume_tabela -m 1 --

target-dir /user/hdfs/sqoop-mysql-import/nume_tabela

Unde configurare_options.txt are următorul conținut:

import

--connect

jdbc:mysql://host_mysql/world

--username

sqoop

--password

sqoop

Putem realiza încărcare de date folosind o interogare și 4 procese tip mapper.

Împărțirea pe mappere, patru în acest caz, se face folosind ID-ul:

% sqoop --options-file configurare-options.txt -m 4 --target-dir

/user/hdfs/sqoop-mysql-import/canada-city --query "SELECT col1,col2 from

Nume_Tabela WHERE col1=cond AND \$CONDITIONS" --split-by ID

Exportul din HDFS în MySQL folosind un fișier de configurare se poate realiza

astfel:

% sqoop --options-file configurare-options_e.txt --table Nume_tabela --

staging-table Nume_tabela_staging --clear-staging-table -m 4 --export-dir

/user/hdfs/sqoop-mysql-import/nume_tabela

Unde configurare_options_e.txt e similar cu configurare_options.txt prezentat

anterior, conținând export în loc de import pe primul rând.

În Apache Oozie, pentru a rula un job complex definit folosind un fișier XML

folosim comanda:

% oozie job -run -config JOB_PROPERITES

Rezultatele rulării fluxurilor care sunt reprezentate ca și grafuri orientate

(figura 3) putând fi administrate folosind interfața web.

Hadoop poate fi folosit pentru analiza sentimentelor în cazul unui eveniment.

Un flux de date preluat de pe Tweeter conține printre metadate: data, ora și țara sau

fusul orar de unde a fost scris fiecare mesaj. Se poate defini o conexiune ODBC

către Hadoop pe care o putem folosi pentru un acces facil la date. Microsoft Excel

are o facilitate puternică care poate fi folosită în astfel de situații: Power View. În

Hadoop putem aplica o tabelă virtuală care folosește pe de o parte datele preluate

din Tweeter și pe de altă parte o împărțire a cuvintelor în pozitive, neutre și

negative. Adunând scorurile fiecărui cuvânt putem estima dacă un document este

pozitiv sau nu la adresa subiectului urmărit. Trebuie avut în vedere că o astfel de

împărțire este subiectivă mai ales dacă nu se preia și contextul.

Page 5: VLAD DIACONITA - Procesarea volumelor mari de date folosind

Vlad Diaconita

38

Figura 3. Parte a unui flux Oozie

Spre exemplu, fie mesajul:

Dacă urmărești House of Cards sunt gelos și te urăsc.

Acesta conține două cuvinte care au un scor negativ: gelos și urăsc, scorul

acestui mesaj fiind de -2 ceea ce ar putea indica că persoană are o impresie

negativă despre serial, lucru care în cazul de față este fals. Vizualizarea datelor din

Hadoop cu privire la analiza sentimentelor (împărțită pe țări) pe un set de mesaje,

folosind conexiunea ODBC în Excel Power View, este prezentată în figura 4.

Figura 4. Excel Power View și Hadoop

Page 6: VLAD DIACONITA - Procesarea volumelor mari de date folosind

Procesarea volumelor mari de date folosind Hadoop YARN

39

3. Implementare și testare k-NN pentru clasificări

Precum se arată și în (Diaconita, 2014), pentru clasificarea documentelor ne-

structurate se pot folosi algoritmi de învățare automată pe documente reprezentate

în modelul spațiu vector (VSM-Vector Space Model). Se recomandă pre-procesarea

documentelor care constă în eliminarea semnelor de punctuație și reprezentarea

cuvintelor folosind doar litere mici (small caps). După aceasta, se construiește

folosind tot o abordare MapReduce, dicționarul care va sta la baza reprezentării în

VSM (fiecărui cuvânt îi este atașat un index, o poziție).

Se poate optimiza rularea algoritmului k-NN pe date ne-structurate folosind o

clasă tip mapper și una tip reducer. Astfel, se permite împărțirea procesării în

unități care pot fi prelucrate individual de nodurile din cluster și ulterior agregate

pentru a se obține rezultatul final. Pentru a calcula distanțele între oricare două

documente reprezentate în VSM se pot folosi diverse metrici, cele mai uzuale fiind

distanța euclidiană și coeficientul de similaritate cosinus. Se pot folosi și coeficienți

Jaccard sau Dice Astfel se pot clasifica noi documente în raport cu cele stocate în

VSM găsind cele mai apropiate documente de acestea.

Pentru a testa performanța algoritmului de clasificare se poate folosi validarea

încrucișată (cross-validation), spre exemplu varianta k-fold. Modelul realizează

predicții pe date pe care nu le-a văzut până atunci. În cazul în care k=10 (10-fold

cross validation), 10% din date sunt testate folosind funcția estimată de către restul

de 90%. Altfel spus, fiecare document este folosit o dată în setul de test și de nouă

ori în setul de învățare al algoritmului.

Rezultatele testării clasificării folosind metoda 10-fold cross validation pe

algoritmul k-NN implementat folosind distanța euclidiană sunt prezentate în figura

5. S-a realizat clasificarea documentelor noi (determinarea cuvintelor cheie) din

setul de test (150 documente) folosind funcția estimată folosind setul de

antrenament (1350 documente).

Page 7: VLAD DIACONITA - Procesarea volumelor mari de date folosind

Vlad Diaconita

40

Figura 5. Rezultate clasificare

4. Hadoop în Cloud Amazon EC2 pune la dispoziție utilizatorilor posibilitatea de a închiria

calculatoare virtuale pe care să-și poată rula propriile aplicații. Astfel, este posibilă

implementarea scalabilă de aplicații folosind mașini virtuale, numite instanțe, pe

care se poate instala de către utilizator software-ul dorit. Un utilizator poate crea,

lansa și opri instanțele în funcție de nevoi, putând plăti cu ora pentru serverele

active. Există posibilitatea alegerii localizării geografice a instanțelor pentru

optimizarea latenței și pentru redundanță ridicată. Pot fi rulate, timp de 750

ore/luna, gratuit, instanțe de tip micro (Linux, RHEL, SLES, Windows).

Se poate rapid construi în Amazon Elastic Compute Cloud (Amazon EC2) un

cluster folosind Apache Whirr instalat pe Ubuntu Linux (figura 6 și figura 7 – trei

instanțe tip micro). Astfel se poate realiza prelucrarea volumelor mari de date intr-

un mediu distribuit.

Page 8: VLAD DIACONITA - Procesarea volumelor mari de date folosind

Procesarea volumelor mari de date folosind Hadoop YARN

41

Figura 6. Construire cluster folosind Apache Whirr

Figura 7. Vizualizare cluster în interfața Amazon EC2

5. Concluzii

Utilizarea abordărilor Big Data pe date nestructurate poate fi o provocare

(alegerea ponderilor, metricelor, reducerea spațiului de căutare etc) dar poate

genera valoare. Pentru a utiliza algoritmi de învățare automată pe text postat de

Page 9: VLAD DIACONITA - Procesarea volumelor mari de date folosind

Vlad Diaconita

42

către oamenii pe bloguri, forumuri sau rețele sociale, datele sunt de multe ori

reduse pentru a putea fi folosite într-un model matematic. Astfel, contextul este

greu de interpretat și de menținut. Datele își pot pierde sensul dacă sunt scoase din

context sau ar putea fi utilizate pentru a sprijini un punct de vedere care este

departe de intenția autorului.

RECUNOAȘTERE

Această lucrare a fost cofinanțată din Fondul Social European, prin

Programul Operațional Sectorial Dezvoltarea Resurselor Umane 2007-2013,

proiect numărul POSDRU/159/1.5/S/138907„Excelenţă în Cercetarea Științifică,

Interdisciplinară, Doctorală și Postdoctorală, în Domeniile Economic, Social și

Medical - EXCELIS”, coordonator Academia de Studii Economice din București.

BIBLIOGRAFIE

[1] Lublinsky, B., Smith. K.T., Yakubovich, A. (2013), Professional Hadoop

Solutions, Wiley;

[2] Arun, C., Murthy A.C., Vavilapalli, V.K., Eadline, D., Niemiec, J.,

Markham, J. (2014), Apache Hadoop YARN, Moving beyond MapReduce and

Batch Processing with Apache Hadoop 2, Addison-Wesley;

[3] Varian, H.R. (2014), Big Data: New Tricks for Econometrics, Journal of

Economic Perspectives, 28(2), pages 3-28;

[4] Hashem, I.A.T., Yaqoob, I., Anuar, N.B., Mokhtar, S., Gani, A., Ullah

Khan, S. (2015), The rise of “big data” on cloud computing: Review and open

research issues, Information Systems 47 (2015) 98–115, 18 pagini;

[5] Bologa, A.M., Bologa R., Florea A. (2013), Big Data and Specific Analysis

Methods for Insurance Fraud Detection, Database Systems Journal, 2013, vol. 4,

issue 4, pages 30-39;

[6] Florea A. (2011), Business Process Management Solutions Performance

Tuning and Configuration, Database Systems Journal, vol. 2, issue 3, pages 23-

32;

[7] Diaconita V. (2014), Big Data and Machine Learning for Knowledge

Management, 9th International Conference On Business Excellence, 9-10

November 2014, Published in the Proceedins, Economica Printing Press, Bucharest

2014, ISBN 978-973-709-738-5.