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