Your SlideShare is downloading. ×
0
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Analytika
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Analytika

478

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
478
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Jak postavit nástrojpro datovou analýzuLukáš 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áciawww.seznam.cz
  • 3. Čo sú veľkédata?
  • 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 500GBwww.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 bottleneckwww.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útwww.seznam.cz
  • 10. Rozdeľ a panuj “Work” Partition w1 w2 w3 “worker” “worker” “worker” r1 r2 r3 “Result” Combinewww.seznam.cz
  • 11. Paralelné spracovávanie jekomplikované•  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 jekomplikované•  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
  • 13. Hadoop
  • 14. Čo nám Hadoop poskytuje?•  Data storage –  Voliteľná redundancia –  Fault-tolerantwww.seznam.cz
  • 15. Čo nám Hadoop poskytuje?•  Data storage –  Voliteľná redundancia –  Fault-tolerant•  Framework pre distribuované výpočtywww.seznam.cz
  • 16. Čo nám Hadoop poskytuje?•  Data storage –  Voliteľná redundancia –  Fault-tolerant•  Framework pre distribuované výpočty•  Koordináciu jobovwww.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úborywww.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 blokywww.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á Hadoopwww.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ýsledkuwww.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 reduceruwww.seznam.cz
  • 25. MapReduce – word count príkladfunction 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 taskywww.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ú killwww.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átwww.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áznamovwww.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ý HiveQLwww.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 JobTrackerwww.seznam.cz
  • 35. Hive – architektúrawww.seznam.cz
  • 36. HiveQL•  Nespĺňa SQL-92 štandardwww.seznam.cz
  • 37. HiveQL•  Nespĺňa SQL-92 štandard•  DDL –  DESCRIBE,CREATE, ALTER, DROP –  DATABASE, TABLE, PARTITION, VIEW, FUNCTION, INDEX, COLUMNwww.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 INTOwww.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 funkciewww.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émataCREATE TABLE user_info ( user_id BIGINT, name STRING, year INT);LOAD DATA LOCAL INPATH sample/u.dataOVERWRITE INTO TABLE user_info;www.seznam.cz
  • 42. Hive – schémata #2CREATE 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 #3CREATE 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 #3CREATE 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 #4CREATE EXTERNAL TABLE hit (…)ROW FORMAT SERDE cz.seznam.analytics.serializer.JsonLOCATION /www/wa/’;CREATE EXTERNAL TABLE visitors_hour (…)ROW FORMAT DELIMITED FIELDS TERMINATED BY tLOCATION /visitors/hour/;www.seznam.cz
  • 46. Seznam Analytika aHadoop
  • 47. Hadoop v Sezname•  Analytika –  32 strojov•  Sklik –  17 strojov (štatistiky) –  16 strojov (context)•  Fulltext –  ~230 strojovwww.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 UTCwww.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 GBwww.seznam.cz
  • 51. Hive tabulkyCREATE 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.JsonLOCATION ’/hit_logs/’;+ Ďaľšie tabulky pre výpočty návštev a ciestwww.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é serverywww.seznam.cz
  • 53. Spracovávanie dát•  Regulárne výrazy•  Kategórie•  Rozsahy•  Stromová štruktúrawww.seznam.cz
  • 54. Spracovávanie dát•  Regulárne výrazy•  Kategórie•  Rozsahy•  Stromová štruktúrawww.seznam.cz
  • 55. Spracovávanie dát – report•  Definícia dimenzií•  Výber z metrik•  Voľba granularitwww.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 hitWHERE 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 HDFSwww.seznam.cz
  • 59. Agregácia•  Data sú agregované až na 4 úrovniach•  Optimalizácia pre zobrazovanie v grafoch•  Počítajú sa kombinácie medzi dimenziamiwww.seznam.cz
  • 60. Demo
  • 61. Máte dotazy?www.seznam.cz
  • 62. Děkuji za pozornostLukáš Antalov, Vedoucí týmu vývojewww.seznam.cz

×