Post on 30-Dec-2016
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
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;
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ă:
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.
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
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).
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.
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
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.