spracovanie velkych dat monogram tech monday 27.07.2011
DESCRIPTION
TRANSCRIPT
MONOGRAM Tech. Monday 25.7.2011
Spracovanie veľkých dátTomáš Majer
Monday, July 25, 11
Č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
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
Nárast Facebooku
0
1,000
2,000
3,000
4,000
Marec 2008Apríl 2009
Október 2009
Nové data za ďen (GB)
Monday, July 25, 11
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
Monday, July 25, 11
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
Google MapReduce2004 Google vydal paper: MapReduce: Simplified Data Processing on Large Clusters
Monday, July 25, 11
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
Ako teda funguje MapReduce?
Monday, July 25, 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
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
Monday, July 25, 11
Jednoduché MapReduce príklady
✤ Distribuovaný grep
✤ Sčítanie návštev pre URL
✤ mapper <URL, 1>
✤ reducer <URL, celkový počet návštev>
✤ Graf väzieb stránok
✤ mapper <cieľ, zdroj>
✤ reducer <cieľ, zoznam zdrojov>
Monday, July 25, 11
Moje skúsenosti s MapReduce?
Monday, July 25, 11
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
Apache HADOOP
Monday, July 25, 11
✤ 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
Date
Hadoop zahŕňa celý ekosystémHadoop zah
Monday, July 25, 11
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
HIVE
✤ SQL nad “NoSQL” dátami
✤ súbory, SQL Databázy...
✤ Podporuje SELECT, JOIN, GROUP BY..
✤ Vyvinul Facebook
Monday, July 25, 11
HBase
✤ NoSQL column oriented databáza
✤ Vychádza z Google BigTable
✤ podľa mňa asi najviac “enterprise” NoSQL
Monday, July 25, 11
✤ 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
Ďalšie
Monday, July 25, 11
✤ 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 predistribuované výpočty založený na MapReduce
Záver
Monday, July 25, 11