4. Ako veľké sú veľké data
• Google spracuje 20 PB za deň (2008)
www.seznam.cz
5. Ako veľké sú veľké data
• Google spracuje 20 PB za deň (2008)
• Facebook príjme denne 500 TB (2012)
www.seznam.cz
6. Ako veľké sú veľké data
• Google spracuje 20 PB za deň (2008)
• Facebook príjme denne 500 TB (2012)
• Seznam Analytika zozbiera denne 500GB
www.seznam.cz
7. Využitie dát
• Webová analytika
– Analýza chovania uživateľov
– AB Testovanie
• Cielená reklama
• Trendy
• Odporúčania
• …
www.seznam.cz
9. Spracovávanie dát
• Sériové spracovávanie je bottleneck
• Rýchla kalkulácia:
– Typická rýchlosť čítania z disku 75 MB/sec
– Na 100 GB súbor je potreba 100GB RAM a 22 minút
www.seznam.cz
11. Paralelné spracovávanie je
komplikované
• Ako pridelíme prácu workerom?
• Čo ak je tej práce viac ako slotov?
• Ako sa zachovať ak práca skončí chybou?
• Ako riadiť distribuovanú synchronizáciu?
www.seznam.cz
12. Paralelné spracovávanie je
komplikované
• Ako pridelíme prácu workerom?
• Čo ak je tej práce viac ako slotov?
• Ako sa zachovať ak práca skončí chybou?
• Ako riadiť distribuovanú synchronizáciu?
• …
Zdroj:
h)p://www.flickr.com/photos/sybrenstuvel/2468506922/
www.seznam.cz
19. HDFS
• Distribuovaný súborový systém
• Redundantný storage
• Navrhnutý tak, aby spoľahlivo ukladal data na bežnom stroji
• Očakáva hadrwarové chyby
• Primárne určený pre veľké súbory
www.seznam.cz
20. HDFS – súbory a bloky
• Súbory su uložené ako sada blokov
• Bloky
– 64 MB kusy súborov (konfigurovateľné)
– Replikujú sa na 3 stroje (konfigurovateľné)
www.seznam.cz
21. HDFS – súbory a bloky
• Súbory su uložené ako sada blokov
• Bloky
– 64 MB kusy súborov (konfigurovateľné)
– Replikujú sa na 3 stroje (konfigurovateľné)
• NameNode spravuje metadata o súboroch a blokoch
• SecondaryNameNode udržuje zálohu NameNode dát
• DataNode ukladá a vydáva bloky
www.seznam.cz
22. MapReduce
• Programovací model pre definovanie distribuovaných výpočtov
• Framework pre organizovanie a vykonávanie výpočtov
• Open-source implementácia zvaná Hadoop
www.seznam.cz
23. Typický priebeh MR jobu
• Iterovanie cez velké množstvo záznamov
Map
• Extrakcia dôležitých informácií
• Prehádzanie a triedenie extrahovaných dát
• Agregácia dát Reduce
• Vygenerovanie a uloženie výsledku
www.seznam.cz
24. MapReduce paradigm
• Implementujú sa len 2 funkcie
– Map(k1, v1) -> list(k2, v2)
– Reduce(k2, list(v2)) -> list(v3)
• Framework sa postará o všetko ostatné*
• Hodnoty s rovnakým kľúčom idú do rovnakého reduceru
www.seznam.cz
25. MapReduce – word count príklad
function map(String name, String document):
for each word w in document:
emit(w, 1)
function reduce(String word, Iterator partialCounts):
totalCount = 0
for each count in partialCounts:
totalCount += count
emit(word, totalCount)
www.seznam.cz
26. MapReduce paradigm – cont.
• Partioners umožnujú rozhodnúť aký kľúč pojde do ktorého
reduceru
– partition(k’, numPartitions) -> partNumber
• Combiners sú malé reducery a umožnujú kombinovať výsledky z
map funkcie predtým ako sú poslané do reduceru
– Reduce(k2, list(v2)) -> list(v3)
www.seznam.cz
27. MapReduce – doplnkové info
• Výstup z map taskov sa zapisuje na disk
• Priebežné data sa môžu kopírovať skôr ako dobehne map task
• Samotny reduce začína až ked dobehnú všetky map tasky
• Každý reducer dostane kľúče zoradené
www.seznam.cz
28. MapReduce – joby a tasky
• Job – uživateľom odoslaná implementácia map a reduce funkci
nad určitými datami
• Task – jeden mapper alebo reducer
– Neúspešné tasky sa automaticky pustia znova
– Tasky v ideálnom prípade majú data lokálne k dispozícii
• JobTracker – spravuje prijaté joby a deleguje tasky medzi stroje
• TaskTracker – pýta si od JobTracker prácu a vykonáva tasky
www.seznam.cz
29. Čo keď je task neúspešný
• Nie z dôvodu chyby v implementácii.
• Automatické spúštanie až do N pokusov
• Po N pokusoch je job neúspešný
www.seznam.cz
30. Čo keď je task neúspešný
• Nie z dôvodu chyby v implementácii.
• Automatické spúštanie až do N pokusov
• Po N pokusoch je job neúspešný
• Speculative execution
– Spustenie rovnakej práce viackrát
– Nie vždy žiadané
– 1. dokončený výhrava, ostatné dostanú kill
www.seznam.cz
31. MapReduce – záver
• Je vhodný pre
– Paralelné algoritmy
– Grupovanie, filtrovanie, joinovanie..
– Offline dávkove joby nad množstvom dát
– Analýza dát
www.seznam.cz
32. MapReduce – záver
• Je vhodný pre
– Paralelné algoritmy
– Grupovanie, filtrovanie, joinovanie..
– Offline dávkove joby nad množstvom dát
– Analýza dát
• Nie je vhodný pre
– Joby potrebujúce zdielať stav
– Low-latency joby
– Joby nad malým množstvo dát
– Hľadanie konkrétnych záznamov
www.seznam.cz
33. Hive
• Infraštruktúra pre dátový sklad
• Systém pre správu a dotazovanie nad štrukturovanými dátami
• Ukladá data na HDFS
• Používa MapReduce na výpočty
• Poskytuje SQL-like dotazovaci jazyk zvaný HiveQL
www.seznam.cz
34. Hive – dotazy
• Hive engine dotazy konvertuje do MapReduce kódu
• Kompilátor vytvára zo zložitejších dotazov acyklický graf
MapReducu jobov
• Tie joby sú potom postupne posielané na JobTracker
www.seznam.cz
41. Hive – schémata
CREATE TABLE user_info (
user_id BIGINT,
name STRING,
year INT
);
LOAD DATA LOCAL INPATH 'sample/u.data'
OVERWRITE INTO TABLE user_info;
www.seznam.cz
48. Zber dát
• Klientskú časť zabezpečuje javascript
– Velký vs malý zberač
www.seznam.cz
49. Zber dát
• Klientskú časť zabezpečuje javascript
– Velký vs malý zberač
• Serverová časť
– Logovanie dát v json formátu
– Rotovanie logov po 5 minutách
– bzip2 kompresia
– Čas v UTC
www.seznam.cz
50. Zber dát
• Klientskú časť zabezpečuje javascript
– Velký vs malý zberač
• Serverová časť
– Logovanie dát v json formátu
– Rotovanie logov po 5 minutách
– bzip2 kompresia
– Čas v UTC
• O zber sa stará 15 strojov
– V špičke (18-19h) až 14500 req/sec
– Denne
• ~530 miliónov akcii
• 500 GB dát
• Po kompresii 48 GB
www.seznam.cz
51. Hive tabulky
CREATE EXTERNAL TABLE IF NOT EXISTS hit (
gsid, url, action, query, create_tst, screate_tst, id,
`data` MAP<STRING, STRING>,
http_headers MAP<STRING, STRING>,
)
PARTITIONED BY (year, month, week, day, service, hour)
ROW FORMAT SERDE 'cz.seznam.analytics.serializer.Json'
LOCATION ’/hit_logs/’;
+ Ďaľšie tabulky pre výpočty návštev a ciest
www.seznam.cz
52. Hive tunning
• XML-RPC Server s väčšou kontrolou nad priebehom jobov
• Vlastný deserializátor
• Distribúcia dát a konfigurácie
• Funkcie na normalizáciu dát
– GeoIP
– Extract parametrov z url
– Napojenie na analytické aplikačné servery
www.seznam.cz
53. Spracovávanie dát
• Regulárne výrazy
• Kategórie
• Rozsahy
• Stromová štruktúra
www.seznam.cz
54. Spracovávanie dát
• Regulárne výrazy
• Kategórie
• Rozsahy
• Stromová štruktúra
www.seznam.cz
55. Spracovávanie dát – report
• Definícia dimenzií
• Výber z metrik
• Voľba granularit
www.seznam.cz
56. Spracovávanie dát – report
• Definícia dimenzií
• Výber z metrik
• Voľba granularit
• Na základe konfigurácie sa vygeneruje HiveQL dotaz!
www.seznam.cz
57. Není to tažké
SELECT
COUNT(DISTINCT gsid), COUNT(1)
FROM hit
WHERE
service = “novinky”
AND year = 2013
AND month = 2
AND action = “impress”
www.seznam.cz
58. Typické workflow
• Predpočítanie dát – návštevy (MapReduce)
• Samotný výpočet (Hive)
• Tvorba dimenzií z výsledku dotazu
• Agregácia (C++ alebo MapReduce)
• Zmazanie výpočtov z HDFS
www.seznam.cz
59. Agregácia
• Data sú agregované až na 4 úrovniach
• Optimalizácia pre zobrazovanie v grafoch
• Počítajú sa kombinácie medzi dimenziami
www.seznam.cz