Conf. Univ. Dr. Habil. Marc FRÎNCU marc.frincu@e-uvt.ro Prelucrarea volumelor mari de date Curs 4: Scalabilitate: Algoritm + Date + hardware Conf. Univ. Dr. Habil. Marc FRÎNCU marc.frincu@e-uvt.ro
Scalabilitate Abilitatea unui sistem de a gestiona un volum tot mai mare de muncă Capacitatea unui sistem de a crește pentru a procesa volume mari Ideal dublând resursele unui sistem se dublează volumul de lucru procesat per unitatea de timp λ - panta
Scalabilitate Orizontală (in/out) Verticală (up/down) Adăugarea mai multor noduri de procesare în paralel cu cele existente Commonity clusters Set de calculatoare interconectate prin tehnologii gen Gigabit, Infiniband, Myrinet Necesită replicarea datelor și software adecvat pentru sincronizare, comunicare Verticală (up/down) Adăugarea mai multor resurse pe noduri existente Virtualizare Alocarea de mai multe core-uri, RAM, disc, etc. unei mașini virtuale Calculul pe cloud (resurse la cerere) Limitată de capacitatea fizică a unui nod
Virtualizarea Crearea unei versiuni virtuale (nu fizice) a unui SO, server, dispozitiv de stocare, rețea Permite partajarea aceleiași resurse fizice între mai mulți utilizatori (multi-tenancy) Permite instalarea de software independent de hardware Permite configurarea de imagini de mașini virtuale, instalabile pe o gamă largă de servicii (dispozitive) Mașinile virtuale sunt gestionate de un hypervisor (VMM) Abstracție hardware SO-ul preia controlul întregului hardware prin intermediul VMM-ului
Virtualizarea Stivă software clasică Stivă software virtualizată
Containere Mașini virtuale lightweight Emulează interfața SO-ului prin interfața nativă Nu există VMM SO-ul oferă suportul necesar Exemple: Linux containers, Solaris containers, BSD jails Avantaje Alocare rapidă Performanța asemănătoare cu rularea direct pe OS Lightweight
Containere
Docker Extensie Linux containers (LXC) Numit anterior dotCloud namespace Restricționează ce poate un container să vadă cgroups Restricționează cât poate un container să folosească dintr-o resursă
Scalabilitate Scalabilitate tare Fluctuația timpului de execuție când menținem același volum de date dar creștem numărul de procesoare Scalabilitate slabă Fluctuația timpului de execuție când creștem numărul de procesoare dar păstrăm volumul de muncă per procesor constant
Scalabilitate Mit Cu cât paralelizăm mai mult un cod cu atât el va rula mai repede Ideal 2x resurse = 2x mai repede În realitate Codul nu este 100% paralelizabil Există comunicare și I/O Resursele sunt limitate Adăugând resurse există o îmbunătățire dar este limitată σ – procentul de cod neparalelizabil
Legea scalabilității universale Pe măsură ce un sistem primește mai mult de lucru (load) el va procesa un volum de muncă mai mic (work) k – coeficientul de penalizare a comunicării Punctul critic Dincolo de el nu are rost să mai adăugăm resurse pentru că impactul comunicării este prea mare
Exemple Determinarea comunităților în rețele sociale Predicții meteorologice pe cloud
Prețul comunicării Comunicare speedup redus Prețul comunicării: mai multe procesoare speedup-ul scade Avantajul procesării hibride Prețul comunicării
Avantajul comunicării Exemplu: înmulțirea matricilor OpenMP Pentru dimensiuni reduse: memoria partajată are avantaje Pentru dimensiuni mari: aplicația nu mai scalează MPI Pentru dimensiuni reduse: prețul comunicării Pentru dimensiuni mari: scalabilitate (throughput, speedup)
Impactul datelor și algoritmului Pentru aceeași problemă date diferite pot influența scalabilitatea algoritmului Exemplu: procesarea grafurilor Platformă Amazon EC2 m3.large (2 Intel Xeon E5-2670 cores, 7.5 RAM,100GB SSD, 1 GB Ethernet) 2 seturi de date: CARN, WIKI Numpăr noduri: 3, 6, 9 3 algoritmi: Hashtag Aggregation La fiecare pas calculează o statistică a apariției unui hashtag in graf Meme Tracking Analiza răspândirii ideilor sau meme-lor într-o rețea socială TDPS (Time Dependent Shortest Path) Folosit în routing La fiecare pas calculează drumul cel mai scurt dintr-un nod la restul considerând ca ponderea unei muchii variază (cu pașii)
Impactul datelor și algoritmului CARN Diametru mare Gradul nodurile: uniform WIKI Gradul nodurilor: power law Idee Partiționează graful pe mai multe procesoare Numărul de muchii interprocesor determină impactul comunicării Cu cât numărul de partiții crește cu atât speedup-ul scade dacă algoritmul necesită cumunicare intensă (TPDS, MEME)
Impactul datelor și algoritmului Inițializare I/O Procesare (% paralel) Oprire Exemplu: detecția răspândirii influenței în paralel în rețele sociale
Impactul API-ului paralel Diverse implementări MPI
Impactul Platformei hardware Exemplu: predicții meteorologice (WRF) Bluegene scalează bine Raportul nr. procesoare/speedup
Surse curs https://www.slideshare.net/vividcortex/quantifyin g-scalability-with-the-usl http://www1.chapman.edu/~radenski/research/pa pers/mergesort-pdpta11.pdf https://arxiv.org/pdf/1012.2273.pdf http://serc.iisc.ernet.in/~simmhan/pubs/simmhan -ipdps-2015.pdf https://books.google.ro/books?id=Jtha3wRWCkQ C&pg=PA485&lpg=PA485 http://lass.cs.umass.edu/~shenoy/courses/spring1 6/lectures/Lec06.pdf https://robinsystems.com/blog/containers-deep- dive-lxc-vs-docker-comparison/
Cursul viitor Analiza datelor Platforme de procesare Independente Grafuri Fluxurilor de date Platforme de procesare MapReduce Spark Streaming Spark GraphX