62
Lukáš Antalov, Vedoucí týmu vývoje Jak postavit nástroj pro datovou analýzu

Analytika

Embed Size (px)

Citation preview

Page 1: Analytika

Lukáš Antalov, Vedoucí týmu vývoje

Jak postavit nástroj pro datovou analýzu

Page 2: Analytika

www.seznam.cz

Outline •  Čo sú veľké data? •  Hadoop

–  HDFS –  MapReduce –  Hive

•  Webová analytika a Hadoop –  Zber dát –  Spracovávanie –  Agregácia

Page 3: Analytika

Čo sú veľké data?

Page 4: Analytika

www.seznam.cz

Ako veľké sú veľké data •  Google spracuje 20 PB za deň (2008)

Page 5: Analytika

www.seznam.cz

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

Page 6: Analytika

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

Page 7: Analytika

www.seznam.cz

Využitie dát •  Webová analytika

–  Analýza chovania uživateľov –  AB Testovanie

•  Cielená reklama •  Trendy •  Odporúčania •  …

Page 8: Analytika

www.seznam.cz

Spracovávanie dát •  Sériové spracovávanie je bottleneck

Page 9: Analytika

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

Page 10: Analytika

www.seznam.cz

Rozdeľ a panuj “Work”

w1 w2 w3

r1 r2 r3

“Result”

“worker” “worker” “worker”

Partition

Combine

Page 11: Analytika

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?

Page 12: Analytika

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/  

Page 13: Analytika

Hadoop

Page 14: Analytika

www.seznam.cz

Čo nám Hadoop poskytuje? •  Data storage

–  Voliteľná redundancia –  Fault-tolerant

Page 15: Analytika

www.seznam.cz

Čo nám Hadoop poskytuje? •  Data storage

–  Voliteľná redundancia –  Fault-tolerant

•  Framework pre distribuované výpočty

Page 16: Analytika

www.seznam.cz

Čo nám Hadoop poskytuje? •  Data storage

–  Voliteľná redundancia –  Fault-tolerant

•  Framework pre distribuované výpočty •  Koordináciu jobov

Page 17: Analytika

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/  

Page 18: Analytika

www.seznam.cz

Hadoop Stack

MapReduce(Distributed Programming Framework)

Pig(Data Flow)

Hive(SQL)

HDFS(Hadoop Distributed File System)

Cascading(Java)

HBa

se(C

olum

nar D

atab

ase)

Page 19: Analytika

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

Page 20: Analytika

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é)

Page 21: Analytika

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

Page 22: Analytika

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

Page 23: Analytika

www.seznam.cz

Typický priebeh MR jobu •  Iterovanie cez velké množstvo záznamov •  Extrakcia dôležitých informácií •  Prehádzanie a triedenie extrahovaných dát •  Agregácia dát •  Vygenerovanie a uloženie výsledku

Map

Reduce

Page 24: Analytika

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

Page 25: Analytika

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)

Page 26: Analytika

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)

Page 27: Analytika

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é

Page 28: Analytika

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

Page 29: Analytika

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ý

Page 30: Analytika

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

Page 31: Analytika

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

Page 32: Analytika

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

Page 33: Analytika

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

Page 34: Analytika

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

Page 35: Analytika

www.seznam.cz

Hive – architektúra

Page 36: Analytika

www.seznam.cz

HiveQL •  Nespĺňa SQL-92 štandard

Page 37: Analytika

www.seznam.cz

HiveQL •  Nespĺňa SQL-92 štandard •  DDL

–  DESCRIBE,CREATE, ALTER, DROP –  DATABASE, TABLE, PARTITION, VIEW, FUNCTION, INDEX, COLUMN

Page 38: Analytika

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

Page 39: Analytika

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

Page 40: Analytika

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, ...>

Page 41: Analytika

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;

Page 42: Analytika

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;

Page 43: Analytika

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/';

Page 44: Analytika

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/

Page 45: Analytika

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/';

Page 46: Analytika

Seznam Analytika a Hadoop

Page 47: Analytika

www.seznam.cz

Hadoop v Sezname •  Analytika

–  32 strojov

•  Sklik –  17 strojov (štatistiky) –  16 strojov (context)

•  Fulltext –  ~230 strojov

Page 48: Analytika

www.seznam.cz

Zber dát •  Klientskú časť zabezpečuje javascript

–  Velký vs malý zberač

Page 49: Analytika

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

Page 50: Analytika

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

Page 51: Analytika

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

Page 52: Analytika

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

Page 53: Analytika

www.seznam.cz

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

Page 54: Analytika

www.seznam.cz

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

Page 55: Analytika

www.seznam.cz

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

Page 56: Analytika

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!

Page 57: Analytika

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”

Page 58: Analytika

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

Page 59: Analytika

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

Page 60: Analytika

Demo

Page 61: Analytika

www.seznam.cz

Máte dotazy?

Page 62: Analytika

www.seznam.cz

Lukáš Antalov, Vedoucí týmu vývoje

Děkuji za pozornost