This is an old revision of the document!
Table of Contents
Tema de Casă 3
Generarea unor rapoarte statistice referitoare la solicitările unor feluri de mâncare comercializate în cadrul unui lanț de restaurante
Termen de Predare: 25 ianuarie 2016, 23:55
Pondere: 10 p / 35
Obiective
Obiectivul temelor de casă este reprezentat de implementarea unui sistem informatic performant şi scalabil pentru gestiunea resurselor unei societăți comerciale de dimensiuni mari. În acest an universitar, organizaţia pentru care se va proiecta şi dezvolta acest pachet de programe este un lanț de restaurante.
Se va realiza implementarea mai multor module din cadrul aplicației ERP, pe parcursul a trei etape independente.
În cadrul acestei etape se va dezvolta o aplicaţie distribuită care va rula pe mai multe maşini, în condiţiile în care volumul de date pe care trebuie să îl gestioneze organizaţia implică timpi de execuţie inacceptabili pentru un utilizator care o interoghează.
După rezolvarea temei de casă, studentul va fi capabil să:
- proiecteze o bază de date distribuită, având o structură dinamică şi un număr foarte mare de înregistrări;
- utilizeze paradigma de programare MapReduce pentru a gestiona eficient partiţiile unei probleme care pot fi procesate concomitent;
- realizeze o aplicaţie distribuită ce conţine mai multe sarcini, dintre care unele vor fi rulate secvenţial, iar altele în paralel.
Cunoştinţele necesare pentru rezolvarea temei de casă sunt:
- programarea în limbajul Java;
- manipularea unei bazele de date distribuite HBase (atât prin shell-ul specific cât şi prin API);
- paradigma de programare MapReduce;
- accesarea sistemului distribuit de fișiere HDFS;
- proiectarea și dezvoltarea unei aplicații folosind platforma Hadoop.
Enunț
Întrucât numărul de înregistrări stocat în baza de date relaţională determină ca timpul de răspuns pentru operaţiile de raportare (ce implică volume mari de date, istorice) să nu respecte constrângerea cu privire la operarea în timp real a unei aplicaţii integrate pentru întreprinderi, la nivelul executiv al unui lanț de restaurante s-a luat decizia migrării spre o soluţie distribuită, pentru care a decis achiziţionarea unui cluster format din maşini larg disponibile în comerț (având un cost redus, fără performanțe deosebite).
Se doreşte monitorizarea activității medicilor care oferă servicii medicale în cadrul lanțului de policlinici în vederea evaluării oportunității continuării colaborării cu aceștia. Criteriile avute în vedere sunt numărul de servicii medicale oferite, numărul de pacienți care apelează la cadrul medical respectiv precum și veniturile încasate pe baza consultațiilor / investigațiilor oferite. Acestea vor fi analizate pe baza rapoartelor medicale completate pentru fiecare programare realizată de un pacient în cadrul unității sanitare.
De asemenea, va fi investigat, pentru fiecare specialitate, numărul de medici care activează în cadrul acesteia și sumele de bani pe care le-au generat.
În acest sens, vor fi generate două rapoarte sub forma unor fişiere text:
- raportul detaliat va surprinde activitatea fiecărui medic pe baza rapoartelor medicale completate de acesta;
- raportul sintetic va oferi informații cu privire la fiecare specialitate pentru care au fost oferite servicii medicale.
Un raport detaliat conţine numele şi prenumele medicului, numărul de pacienți unici pentru care acesta a completat rapoarte medicale, numărul de servicii medicale distincte oferite în cadrul policlinicii precum și venitul pe care acesta l-a generat, pentru toate consultațiile / investigațiile medicale:
- raport_detaliat
NUME MEDICk Prenume Medick = număr_pacienti, numar_servicii_medicale, venit
Un raport sintetic conţine denumirea fiecărei specialități pentru care au fost oferite servicii medicale în cadrul lanțului de policlinici, numărul de medici care le-au oferit precum și venitul generat.
- raport_sintetic
Specialitatek = număr_medici, venit
Precizări suplimentare
Se recomandă ca pentru implementarea temei de casă să folosiţi mașina virtuală pusă la dispoziţie în cadrul laboratorului sau să folosiţi aceleaşi versiuni / proprietăţi de configurare ca în cadrul acesteia, întrucât corectarea se va realiza pe o astfel de platformă. Cu alte cuvinte, veţi utiliza Hadoop 2.6.1 şi HBase 1.1.2.
Este suficient ca în portarea bazei de date să preluaţi DOAR acele tabele necesare pentru rezolvarea cerinţelor și DOAR câmpurile care se vor regăsi în cadrul rapoartelor generate. Întrucât procesul de populare implică mai multe comenzi HBase pentru o singură înregistrare, se recomandă şi implementarea unui program pentru generarea scriptului care realizează această operaţie. Nu este necesară includerea acestei aplicații în arhiva temei de casă, este suficient să includeți scriptul pentru popularea bazei de date.
Nu este necesară includerea unui script pentru crearea unei arhive jar conţinând aplicaţia dezvoltată, întrucât operaţia este realizată de plugin-ul Hadoop pentru Eclipse, acesta fiind responsabil şi de transmiterea sarcinii, permiţând totodată consultarea informaţiilor din sistemul de fişiere distribuit HDFS.
Nu este permisă utilizarea unui obiect de tip org.apache.hadoop.hbase.client.Scan decât ca parametru pentru clasele care realizează sarcini de tip MapReduce, întrucât operaţiile realizate de acesta, în contextul unei singure maşini, implică resurse de procesare şi memorie care depreciază timpul de execuţie al unei aplicaţii.
În raport vor fi omise informaţiile nule, în cazul în care ….
Barem de corectare și notare
| PUNCTAJ | CRITERII DE ACORDARE |
|---|---|
| 1,25 p | reproiectarea bazei de date conform modelului distribuit ♦ definirea tabelelor şi a structurii statice: 30% ♦ populare adecvată: 70% |
| 3,50 p | generarea rapoartelor ♦ raport detaliat: 50% ♦ raport sintetic: 50% |
| 0,25 p | modularizare ♦ structura aplicaţiei şi lizibilitatea codului: 50% ♦ comentarii, README: 50% |
BONUS. Se pot obţine punctaje suplimentare, astfel:
- 0,25p – predarea temei până la 18.01.2016, ora 23:55;
- 0,75p – .
Condiții de realizare și predare
Tema va fi realizată individual şi va fi prezentată în cadrul laboratorului, până la sfârşitul semestrului. Neprezentarea temei de casă sau un rezultat nesatisfăcător al prezentării (necunoașterea funcționalității aplicației / codului sursă, imposibilitatea de a răspunde la întrebări) atrag după sine anularea punctajului corespunzător acesteia. În cadrul prezentării veţi specifica succint funcţionalităţile pe care le-aţi dezvoltat şi veţi răspunde la întrebări cu privire la modul de implementare al acestora.
Tema va trebui transmisă sub forma unui mesaj la adresa de poștă electronică aipi2015@andreirosucojocaru.ro sub forma unei arhive de tip .zip (având denumirea Grupa34XCX_NumePrenume_Tema3.zip) care să conţină script-ul pentru crearea şi popularea tabelelor din baza de date, sursele aplicaţiei şi un README în care să prezentaţi definiţia bazei de date (tabele, familii de coloane şi structura lor), explicând cum aţi proiectat sarcinile de tip map şi reduce. Subiectul utilizat va fi [Tema3][Grupa34XCX][NumePrenume]. Temele care nu respectă convențiile de nume indicate nu vor fi luate în considerare. Prezentarea se poate face numai după ce tema a fost predată sub această formă.
Trimiterea temei în format electronic nu este redundantă, temele vor fi comparate prin aplicaţii specializate pentru a se depista eventualele fraude. În această situaţie, întreg punctajul pe parcursul semestrului va fi anulat, studenţii implicaţi (atât originalul, cât şi copia / copiile) fiind obligaţi să repete disciplina – cu taxă – în anul universitar următor.
