Session zo slovenského Drupal Campu 2013, kde som rozprával o princípoch a výhodách Objektovo Orientovaného Programovania, ktoré môžeme využiť aj v Drupale a bez toho, aby sme narúšali jeho interné princípy (Slovenská verzia).
-----
Session from Slovak DrupalCamp 2013, where I spoke about principals and advantages of Object Oriented Programming, which we can also us in Drupal development and without breaking it's internal principles (Slovak version).
Session zo slovenského Drupal Campu 2013, kde som rozprával o princípoch a výhodách Objektovo Orientovaného Programovania, ktoré môžeme využiť aj v Drupale a bez toho, aby sme narúšali jeho interné princípy (Slovenská verzia).
-----
Session from Slovak DrupalCamp 2013, where I spoke about principals and advantages of Object Oriented Programming, which we can also us in Drupal development and without breaking it's internal principles (Slovak version).
Session zo slovenského Drupal Campu 2013, kde som rozprával o princípoch a výhodách Objektovo Orientovaného Programovania, ktoré môžeme využiť aj v Drupale a bez toho, aby sme narúšali jeho interné princípy (Slovenská verzia).
-----
Session from Slovak DrupalCamp 2013, where I spoke about principals and advantages of Object Oriented Programming, which we can also us in Drupal development and without breaking it's internal principles (Slovak version).
Session zo slovenského Drupal Campu 2013, kde som rozprával o princípoch a výhodách Objektovo Orientovaného Programovania, ktoré môžeme využiť aj v Drupale a bez toho, aby sme narúšali jeho interné princípy (Slovenská verzia).
-----
Session from Slovak DrupalCamp 2013, where I spoke about principals and advantages of Object Oriented Programming, which we can also us in Drupal development and without breaking it's internal principles (Slovak version).
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