2. Čo sú veľké dáta
✤ Tomajová definicia
✤ Také dáta, ktoré: nevojdú na jeden stroj, alebo sa s nedá s nimi
pracovať v reálnom čase na jednom stroji
Monday, July 25, 11
3. Prečo sú dôležité?
✤ Dát je stále viac a viac
✤ Web 2.0 - sociálny aspekt webu zabezpečuje vytváranie obrovského
množstva použiteľných dát
✤ Jednoduchý príklad: Facebook
✤ 135 bilionov správ za mesiac
✤ 20 bilionov udalostí za deň - 200 000 za sekundu
Monday, July 25, 11
4. Nárast Facebooku
Nové data za ďen (GB)
4,000
3,000
2,000
1,000
Marec 2008
Apríl 2009 0
Október 2009
Monday, July 25, 11
5. Ako ukladať veľké dáta
✤ SQL databázy trpia základnym problémom so škálovateĺnosťou
✤ NoSQL - “ľahko” škálovateĺné - vhodné pre veľké dáta
Monday, July 25, 11
7. NoSQL
✤ Viaceré typy
✤ document oriented, column oriented, graph oriented, key-value
✤ Vysoký výkon
✤ Obmedzené možnosti - oproti SQL databázam
✤ Neexistuje štandard pre prácu s dátami
✤ V praxi sa osvedčila kombinácia NoSQL s SQL
Monday, July 25, 11
8. Google
MapReduce
2004 Google vydal paper:
MapReduce: Simplified Data
Processing on Large Clusters
Monday, July 25, 11
9. Ciele
MapReduce
✤ Rozložiť výpočet medzi viacero
strojov - nodov
✤ Jednoduchý framework, ktorý
zabezpečí jednoduché písanie
takéhoto kódu
✤ Horizontálna škálovateľnosť
Monday, July 25, 11
11. ✤ Existuje viacero nodov, ktoré môžu robiť viacero vecí
✤ 2 základne úlohy
✤ Map job
✤ vstupný vektor <key1, value1>
✤ výstupný zoznam vektorov <key2, value2>
✤ Reduce job
✤ vstupný vektor <key2, <zoznam hodnot z maperov s výstupom key2>>
✤ výstupný zoznam vektorov <key3, value3>
Monday, July 25, 11
12. Jednoduchý príklad - spočítanie
slov
void map(String name, String document):
// name: document name
// document: document contents
for each word w in document:
EmitIntermediate(w, "1");
void reduce(String word, Iterator partialCounts):
// word: a word
// partialCounts: a list of aggregated partial counts
int sum = 0;
for each pc in partialCounts:
sum += ParseInt(pc);
Emit(word, AsString(sum));
Monday, July 25, 11
16. Diplomovka
✤ Práca s Twitter Datasetom
✤ takmer 30 GB textový subor
✤ ďalšie pár sto megové csvcka
✤ implementácia viacerých Mapperov a Reducerov pre výpočet
ohodnotenia stránok pomocou tweetov z mikroblogu
Monday, July 25, 11
18. ✤ Open source MapReduce framework
✤ Napísaný v Jave
✤ Podporuje aj iné jazyky
✤ Využívajú ho dnes okrem Google-u takmer všetci
veľký IT hráčí:
✤ Facebook, Twitter, LinkedIn, Adobe, Amazon, Apple,
eBay, Hulu, IBM, Last.fm, Yahoo a strašne veľa
ďalších
Monday, July 25, 11
20. HDFS
✤ Vychádza z GFS - Google File
Systém
✤ Distribuovaný file systém
✤ Rieši čo kde bude uložené a
koľkokrát
✤ Virtuálny file systém
Monday, July 25, 11
21. HIVE
✤ SQL nad “NoSQL” dátami
✤ súbory, SQL Databázy...
✤ Podporuje SELECT, JOIN,
GROUP BY..
✤ Vyvinul Facebook
Monday, July 25, 11
22. HBase
✤ NoSQL column oriented
databáza
✤ Vychádza z Google BigTable
✤ podľa mňa asi najviac
“enterprise” NoSQL
Monday, July 25, 11
23. Ďalšie
✤ Mahout - knižnica s MapReduce jobmi pre strojové učenie
✤ Pig - prasačiny ;-) vlastný jazyk pre ľahkú prácu s dátami
✤ Chuckwa - zberač logov
✤ ZooKeeper - drží všetko pohromade ;-) rieši zamykanie,
synchornizáciu atď...
✤ Avro - serializér
Monday, July 25, 11
24. Záver
✤ Dát je veľa - distribuované výpočty sú nevyhnutnosťou
✤ Problematické uloženie dát - NoSQL
✤ Hadoop - framework s celým ekosystémom pre
distribuované výpočty založený na MapReduce
Monday, July 25, 11