SlideShare a Scribd company logo
Jak postavit nástroj
pro datovou analýzu
Lukáš Antalov, Vedoucí týmu vývoje
Outline
•  Čo sú veľké data?
•  Hadoop
     –  HDFS
     –  MapReduce
     –  Hive
•  Webová analytika a Hadoop
     –  Zber dát
     –  Spracovávanie
     –  Agregácia




www.seznam.cz
Čo sú veľké
data?
Ako veľké sú veľké data
•  Google spracuje 20 PB za deň (2008)




www.seznam.cz
Ako veľké sú veľké data
•  Google spracuje 20 PB za deň (2008)
•  Facebook príjme denne 500 TB (2012)




www.seznam.cz
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
Využitie dát
•  Webová analytika
      –  Analýza chovania uživateľov
      –  AB Testovanie
•    Cielená reklama
•    Trendy
•    Odporúčania
•    …




www.seznam.cz
Spracovávanie dát
•  Sériové spracovávanie je bottleneck




www.seznam.cz
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
Rozdeľ a panuj
                “Work”
                                      Partition


       w1         w2         w3

    “worker”    “worker”   “worker”


       r1          r2         r3




                “Result”              Combine

www.seznam.cz
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
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
Hadoop
Čo nám Hadoop poskytuje?
•  Data storage
     –  Voliteľná redundancia
     –  Fault-tolerant




www.seznam.cz
Čo nám Hadoop poskytuje?
•  Data storage
     –  Voliteľná redundancia
     –  Fault-tolerant
•  Framework pre distribuované výpočty




www.seznam.cz
Čo nám Hadoop poskytuje?
•  Data storage
     –  Voliteľná redundancia
     –  Fault-tolerant
•  Framework pre distribuované výpočty
•  Koordináciu jobov




www.seznam.cz
Čo nám Hadoop poskytuje?
•  Data storage
     –  Voliteľná redundancia
     –  Fault-tolerant
•  Framework pre distribuované výpočty
•  Koordináciu jobov




  Zdroj:	
  h)p://www.flickr.com/photos/spyndle/3480602438/	
  


www.seznam.cz
Hadoop Stack

                                  Pig               Hive               Cascading
          (Columnar Database)



                                (Data Flow)           (SQL)                (Java)
  HBase




                                                 MapReduce
                                          (Distributed Programming Framework)




                                              HDFS
                                    (Hadoop Distributed File System)




www.seznam.cz
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
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
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
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
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
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
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
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
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
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
Č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
Č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
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
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
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
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
Hive – architektúra




www.seznam.cz
HiveQL
•  Nespĺňa SQL-92 štandard




www.seznam.cz
HiveQL
•  Nespĺňa SQL-92 štandard
•  DDL
     –  DESCRIBE,CREATE, ALTER, DROP
     –  DATABASE, TABLE, PARTITION, VIEW, FUNCTION, INDEX, COLUMN




www.seznam.cz
HiveQL
•  Nespĺňa SQL-92 štandard
•  DDL
     –  DESCRIBE,CREATE, ALTER, DROP
     –  DATABASE, TABLE, PARTITION, VIEW, FUNCTION, INDEX, COLUMN
•  DML
     –  LOAD DATA, INSERT OVERWRITE, INSERT INTO




www.seznam.cz
HiveQL
•  Nespĺňa SQL-92 štandard
•  DDL
     –  DESCRIBE,CREATE, ALTER, DROP
     –  DATABASE, TABLE, PARTITION, VIEW, FUNCTION, INDEX, COLUMN
•  DML
     –  LOAD DATA, INSERT OVERWRITE, INSERT INTO
•  QL
     –    SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT
     –    Poddotazy sú povolené len v FROM klauzule
     –    Equi-joins – outer joins a left semi joins
     –    Transformačné scripty
     –    Vlastné operátory a funkcie




www.seznam.cz
Hive – dátové typy
•  Primitívne typy
     –  TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE
     –  BOOLEAN, STRING, TIMESTAMP
•  Komplexné typy
     –  ARRAY<data_type>
     –  MAP<primitive_type, data_type>
     –  STRUCT <col_name : data_type, ...>




www.seznam.cz
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
Hive – schémata #2
CREATE TABLE user_info (
   user_id BIGINT,
   name STRING
)
PARTITIONED BY(year INT)
CLUSTERED BY(user_id) INTO 256 BUCKETS;




www.seznam.cz
Hive – schémata #3
CREATE EXTERNAL TABLE visitors_day (
    gsid STRING,
    time INT,
    kind INT
) PARTITIONED BY (year INT, month INT, day INT)
LOCATION '/visitors/day/';




www.seznam.cz
Hive – schémata #3
CREATE EXTERNAL TABLE visitors_day (
    gsid STRING,
    time INT,
    kind INT
) PARTITIONED BY (year INT, month INT, day INT)
LOCATION '/visitors/day/';

•  Expandovaná partícia:
     –  /visitors/day/year=2013/month=3/day=11/




www.seznam.cz
Hive – schémata #4
CREATE EXTERNAL TABLE hit (…)
ROW FORMAT SERDE 'cz.seznam.analytics.serializer.Json'
LOCATION '/www/wa/’;

CREATE EXTERNAL TABLE visitors_hour (…)
ROW FORMAT DELIMITED FIELDS TERMINATED BY 't'
LOCATION '/visitors/hour/';




www.seznam.cz
Seznam Analytika a
Hadoop
Hadoop v Sezname
•  Analytika
     –  32 strojov
•  Sklik
     –  17 strojov (štatistiky)
     –  16 strojov (context)
•  Fulltext
     –  ~230 strojov




www.seznam.cz
Zber dát
•  Klientskú časť zabezpečuje javascript
     –  Velký vs malý zberač




www.seznam.cz
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
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
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
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
Spracovávanie dát
•    Regulárne výrazy
•    Kategórie
•    Rozsahy
•    Stromová štruktúra




www.seznam.cz
Spracovávanie dát
•    Regulárne výrazy
•    Kategórie
•    Rozsahy
•    Stromová štruktúra




www.seznam.cz
Spracovávanie dát – report
•  Definícia dimenzií
•  Výber z metrik
•  Voľba granularit




www.seznam.cz
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
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
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
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
Demo
Máte dotazy?




www.seznam.cz
Děkuji za pozornost
Lukáš Antalov, Vedoucí týmu vývoje

www.seznam.cz

More Related Content

PPTX
DAWINCI / Ján Grman
PPTX
Javascript na steroidech
PDF
PPT
SEO - optimalizace pro vyhledávače
PDF
Cassandra: Indexing and discovering similar images
PDF
MongoDB: Repository for Web-scale metadata
PPTX
MONOGRAM Tech Mondays: REDIS
PDF
Ako si vybrať programovací jazyk a framework?
DAWINCI / Ján Grman
Javascript na steroidech
SEO - optimalizace pro vyhledávače
Cassandra: Indexing and discovering similar images
MongoDB: Repository for Web-scale metadata
MONOGRAM Tech Mondays: REDIS
Ako si vybrať programovací jazyk a framework?

Similar to Analytika (20)

PDF
Seminar K Datasetom
PPTX
test automation technologies and using kafka
PPTX
Mne to na notebooku funguje
PDF
Aký programovací jazyk a framework si vybrať a prečo?
PPTX
Výučba Open Source databázových systémov v GIS pre odbor Geodézia a kartografia
PPTX
Nove trendy v html a css
PDF
Nehacknutelny web
PDF
Codecon.sk - Ako škálovať PHP stránky? Od malej stránky až po datacentrum
PDF
Spracovanie velkych dat MONOGRAM Tech Monday 27.07.2011
PPTX
Model driven story
PDF
Node.js @ Rubyslava
KEY
Require.JS & Backbone.JS
PDF
Novinky oracle pre oblast datovych skladov
PDF
Oracle Business Intelligence Forum
PDF
PDF
AppMonitor Insight Edition
PDF
DataCore Software - The one and only Storage Hypervisor
PPTX
Drupal a OOP [DrupalCamp SK 2013]
PPTX
Drupal a OOP [DrupalCamp SK 2013]
PDF
Samuel Hopko & Daniel Rajčan - Cloud Computing
Seminar K Datasetom
test automation technologies and using kafka
Mne to na notebooku funguje
Aký programovací jazyk a framework si vybrať a prečo?
Výučba Open Source databázových systémov v GIS pre odbor Geodézia a kartografia
Nove trendy v html a css
Nehacknutelny web
Codecon.sk - Ako škálovať PHP stránky? Od malej stránky až po datacentrum
Spracovanie velkych dat MONOGRAM Tech Monday 27.07.2011
Model driven story
Node.js @ Rubyslava
Require.JS & Backbone.JS
Novinky oracle pre oblast datovych skladov
Oracle Business Intelligence Forum
AppMonitor Insight Edition
DataCore Software - The one and only Storage Hypervisor
Drupal a OOP [DrupalCamp SK 2013]
Drupal a OOP [DrupalCamp SK 2013]
Samuel Hopko & Daniel Rajčan - Cloud Computing
Ad

More from seznamVyvojari (12)

PPTX
Odpoledne s vyvojari - mobilni aplikace
PDF
Content delivery network a video
ODP
Seznam.cz email
PDF
Velké obsahové systémy
PDF
Hledání úspor v provozu internetové jedničky
ODP
Nový Email.cz
PPT
Sklik - Reklama nejen ve vyhledávání
PPT
Fulltextový vyhledávač
PDF
Výzkum ve fulltextu
PPT
Seznam na mobilu
PPT
SCRUM v Seznam.cz
PPSX
Roman kummel
Odpoledne s vyvojari - mobilni aplikace
Content delivery network a video
Seznam.cz email
Velké obsahové systémy
Hledání úspor v provozu internetové jedničky
Nový Email.cz
Sklik - Reklama nejen ve vyhledávání
Fulltextový vyhledávač
Výzkum ve fulltextu
Seznam na mobilu
SCRUM v Seznam.cz
Roman kummel
Ad

Analytika

  • 1. Jak postavit nástroj pro datovou analýzu Lukáš Antalov, Vedoucí týmu vývoje
  • 2. Outline •  Čo sú veľké data? •  Hadoop –  HDFS –  MapReduce –  Hive •  Webová analytika a Hadoop –  Zber dát –  Spracovávanie –  Agregácia www.seznam.cz
  • 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
  • 8. Spracovávanie dát •  Sériové spracovávanie je bottleneck 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
  • 10. Rozdeľ a panuj “Work” Partition w1 w2 w3 “worker” “worker” “worker” r1 r2 r3 “Result” Combine 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
  • 14. Čo nám Hadoop poskytuje? •  Data storage –  Voliteľná redundancia –  Fault-tolerant www.seznam.cz
  • 15. Čo nám Hadoop poskytuje? •  Data storage –  Voliteľná redundancia –  Fault-tolerant •  Framework pre distribuované výpočty www.seznam.cz
  • 16. Čo nám Hadoop poskytuje? •  Data storage –  Voliteľná redundancia –  Fault-tolerant •  Framework pre distribuované výpočty •  Koordináciu jobov www.seznam.cz
  • 17. Čo nám Hadoop poskytuje? •  Data storage –  Voliteľná redundancia –  Fault-tolerant •  Framework pre distribuované výpočty •  Koordináciu jobov Zdroj:  h)p://www.flickr.com/photos/spyndle/3480602438/   www.seznam.cz
  • 18. Hadoop Stack Pig Hive Cascading (Columnar Database) (Data Flow) (SQL) (Java) HBase MapReduce (Distributed Programming Framework) HDFS (Hadoop Distributed File System) 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
  • 36. HiveQL •  Nespĺňa SQL-92 štandard www.seznam.cz
  • 37. HiveQL •  Nespĺňa SQL-92 štandard •  DDL –  DESCRIBE,CREATE, ALTER, DROP –  DATABASE, TABLE, PARTITION, VIEW, FUNCTION, INDEX, COLUMN www.seznam.cz
  • 38. HiveQL •  Nespĺňa SQL-92 štandard •  DDL –  DESCRIBE,CREATE, ALTER, DROP –  DATABASE, TABLE, PARTITION, VIEW, FUNCTION, INDEX, COLUMN •  DML –  LOAD DATA, INSERT OVERWRITE, INSERT INTO www.seznam.cz
  • 39. HiveQL •  Nespĺňa SQL-92 štandard •  DDL –  DESCRIBE,CREATE, ALTER, DROP –  DATABASE, TABLE, PARTITION, VIEW, FUNCTION, INDEX, COLUMN •  DML –  LOAD DATA, INSERT OVERWRITE, INSERT INTO •  QL –  SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT –  Poddotazy sú povolené len v FROM klauzule –  Equi-joins – outer joins a left semi joins –  Transformačné scripty –  Vlastné operátory a funkcie www.seznam.cz
  • 40. Hive – dátové typy •  Primitívne typy –  TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE –  BOOLEAN, STRING, TIMESTAMP •  Komplexné typy –  ARRAY<data_type> –  MAP<primitive_type, data_type> –  STRUCT <col_name : data_type, ...> 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
  • 42. Hive – schémata #2 CREATE TABLE user_info ( user_id BIGINT, name STRING ) PARTITIONED BY(year INT) CLUSTERED BY(user_id) INTO 256 BUCKETS; www.seznam.cz
  • 43. Hive – schémata #3 CREATE EXTERNAL TABLE visitors_day ( gsid STRING, time INT, kind INT ) PARTITIONED BY (year INT, month INT, day INT) LOCATION '/visitors/day/'; www.seznam.cz
  • 44. Hive – schémata #3 CREATE EXTERNAL TABLE visitors_day ( gsid STRING, time INT, kind INT ) PARTITIONED BY (year INT, month INT, day INT) LOCATION '/visitors/day/'; •  Expandovaná partícia: –  /visitors/day/year=2013/month=3/day=11/ www.seznam.cz
  • 45. Hive – schémata #4 CREATE EXTERNAL TABLE hit (…) ROW FORMAT SERDE 'cz.seznam.analytics.serializer.Json' LOCATION '/www/wa/’; CREATE EXTERNAL TABLE visitors_hour (…) ROW FORMAT DELIMITED FIELDS TERMINATED BY 't' LOCATION '/visitors/hour/'; www.seznam.cz
  • 47. Hadoop v Sezname •  Analytika –  32 strojov •  Sklik –  17 strojov (štatistiky) –  16 strojov (context) •  Fulltext –  ~230 strojov 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
  • 60. Demo
  • 62. Děkuji za pozornost Lukáš Antalov, Vedoucí týmu vývoje www.seznam.cz