際際滷

際際滷Share 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.鍖ickr.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箪poty




www.seznam.cz
o n叩m Hadoop poskytuje?
≒ Data storage
      Volite直n叩 redundancia
      Fault-tolerant
≒ Framework pre distribuovan辿 v箪poty
≒ Koordin叩ciu jobov




www.seznam.cz
o n叩m Hadoop poskytuje?
≒ Data storage
      Volite直n叩 redundancia
      Fault-tolerant
≒ Framework pre distribuovan辿 v箪poty
≒ Koordin叩ciu jobov




  Zdroj:	
 h)p://www.鍖ickr.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
≒   Oak叩va hadrwarov辿 chyby
≒   Prim叩rne uren箪 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箪potov
≒ Framework pre organizovanie a vykon叩vanie v箪potov
≒ 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 urit箪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. dokonen箪 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箪poty
≒   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
        Transforman辿 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泥 zabezpeuje javascript
      Velk箪 vs mal箪 zbera




www.seznam.cz
Zber d叩t
≒ Klientsk炭 as泥 zabezpeuje 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泥 zabezpeuje 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 邸pike (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箪poty 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辿 aplikan辿 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箪poet (Hive)
≒   Tvorba dimenzi鱈 z v箪sledku dotazu
≒   Agreg叩cia (C++ alebo MapReduce)
≒   Zmazanie v箪potov 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
Dkuji za pozornost
Luk叩邸 Antalov, Vedouc鱈 t箪mu v箪voje

www.seznam.cz

More Related Content

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.鍖ickr.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箪poty www.seznam.cz
  • 16. o n叩m Hadoop poskytuje? ≒ Data storage Volite直n叩 redundancia Fault-tolerant ≒ Framework pre distribuovan辿 v箪poty ≒ Koordin叩ciu jobov www.seznam.cz
  • 17. o n叩m Hadoop poskytuje? ≒ Data storage Volite直n叩 redundancia Fault-tolerant ≒ Framework pre distribuovan辿 v箪poty ≒ Koordin叩ciu jobov Zdroj: h)p://www.鍖ickr.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 ≒ Oak叩va hadrwarov辿 chyby ≒ Prim叩rne uren箪 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箪potov ≒ Framework pre organizovanie a vykon叩vanie v箪potov ≒ 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 urit箪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. dokonen箪 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箪poty ≒ 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 Transforman辿 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泥 zabezpeuje javascript Velk箪 vs mal箪 zbera www.seznam.cz
  • 49. Zber d叩t ≒ Klientsk炭 as泥 zabezpeuje 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泥 zabezpeuje 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 邸pike (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箪poty 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辿 aplikan辿 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箪poet (Hive) ≒ Tvorba dimenzi鱈 z v箪sledku dotazu ≒ Agreg叩cia (C++ alebo MapReduce) ≒ Zmazanie v箪potov 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. Dkuji za pozornost Luk叩邸 Antalov, Vedouc鱈 t箪mu v箪voje www.seznam.cz