Spark Jan Hučín 5. dubna 2017

Podobné dokumenty
Spark Jan Hučín 15. listopadu 2017

Spark SQL, Spark Streaming. Jan Hučín

Spark SQL, Spark Streaming. Jan Hučín

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

B0M33BDT 7. přednáška Architektury a bezpečnost. Marek Sušický Milan Kratochvíl

BigData. Marek Sušický

Hadoop, Hive a Spark: Využití pro data mining. Václav Zeman, KIZI VŠE

A4M33BDT Technologie pro velká data

Hadoop a HDFS. Bc. Milan Nikl

Operátory ROLLUP a CUBE

BIG DATA je oveľa viac ako Hadoop. Martin Pavlík

B0M33BDT Stream processing. Milan Kratochvíl

Matematika v programovacích

Maturitní otázky z předmětu PROGRAMOVÁNÍ

NSS - Cache 5. LECTURE MARTIN TOMASEK

Struktura pamětí a procesů v DB Oracle. Radek Strnad

Da D to t v o é v ty t py IB111: Datové typy

O Apache Derby detailněji. Hynek Mlnařík

MetaCentrum. datové služby. Miroslav Ruda, Zdeněk Šustr

Databázové systémy Cvičení 5.2

Základní přehled SQL příkazů

KIV/ZIS cvičení 5. Tomáš Potužák

Obsah. Předmluva 13. O autorovi 15. Poděkování 16. O odborných korektorech 17. Úvod 19

On line analytical processing (OLAP) databáze v praxi

Provoz Počet zaměstnanců Průměrná nemocnost hod/osoba/rok

Healtcheck. databáze ORCL běžící na serveru db.tomas-solar.com pro

DATA CUBE. Mgr. Jiří Helmich

Paralelní architektury se sdílenou pamětí typu NUMA. NUMA architektury

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Bi-Direction Replication

B0M33BDT Technologie pro velká data. Storage

SUPERPOČÍTAČE DANIEL LANGR ČVUT FIT / VZLÚ

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

Paralelní výpočty ve finančnictví

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

RELAČNÍ DATABÁZOVÉ SYSTÉMY

IW3 MS SQL SERVER 2014

Činnost počítače po zapnutí

UAI/612 - Cloudová Řešení. Technologie

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Aktuální stav MetaCentra, novinky

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

Experimentální systém pro WEB IR

Paralelní dotazy v PostgreSQL 9.6 (a 10.0)

Fyzické uložení dat a indexy

OPS Paralelní systémy, seznam pojmů, klasifikace

DATABÁZE A SYSTÉMY PRO UCHOVÁNÍ DAT 61 DATABÁZE - ACCESS. (příprava k vykonání testu ECDL Modul 5 Databáze a systémy pro zpracování dat)

Optimalizace plnění a aktualizace velkých tabulek. Milan Rafaj, IBM

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Analýza a modelování dat. Přednáška 8

Datablades včera, dnes a zítra

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Úvod 9

ÚVOD DO DATABÁZÍ. Metodické listy pro předmět

MBI - technologická realizace modelu

Bc. David Gešvindr MSP MCSA MCTS MCITP MCPD

Příprava dat v softwaru Statistica

Služby, Registr Služby, Registr Procesy, BCD Pro, Událo cesy, BCD sti, Událo

Databáze SQL SELECT. David Hoksza

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Monitoring SQL Server, Resource Governor, Tracing SQL Server

9 - Map/filter/reduce OMO. Ing. David Kadleček, PhD

Databázové systémy. Cvičení 6: SQL

Technické informace. PA152,Implementace databázových systémů 4 / 25. Projekty. pary/pa152/ Pavel Rychlý

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

Virtualizace. Lukáš Krahulec, KRA556

Úvod do databázových systémů

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

VISUAL BASIC. Práce se soubory

DETEKCE ANOMÁLNÍHO CHOVÁNÍ UŽIVATELŮ KATASTRÁLNÍCH MAPOVÝCH SLUŽEB

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Souborové systémy a práce s daty David Antoš

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Paměti EEPROM (1) Paměti EEPROM (2) Paměti Flash (1) Paměti EEPROM (3) Paměti Flash (2) Paměti Flash (3)

Marketingová komunikace. 3. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK3PH (vm3bph)

FORTANNS. 22. února 2010

Analýza a modelování dat. Přednáška 9

SEARCH & BIG DATA [ & ANALYTICS] INFORUM 2015, Pavel Kocourek

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

DATABÁZE MS ACCESS 2010

11. Přehled prog. jazyků

Business Intelligence

Ukládání a vyhledávání XML dat

Architektury databázových

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Přednáška 1. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

PŘIJÍMACÍ TEST z informatiky a matematiky pro navazující magisterské studium Fakulta informatiky a managementu Univerzity Hradec Králové

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Microsoft Access. Typy objektů databáze: Vytvoření a návrh nové tabulky. Vytvoření tabulky v návrhovém zobrazení

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Informační systémy ve zdravotnictví. 6. cvičení

Nové jazykové brány do Caché. Daniel Kutáč

Disková pole (RAID) 1

Martin Lísal. Úvod do MPI

Programování v jazyku C# II. 5.kapitola

Transkript:

Spark Jan Hučín 5. dubna 2017

Osnova 1. Co to je a k čemu slouží 2. Jak se to naučit 3. Jak se s tím pracuje 4. Jak to funguje Logický a technický pohled Transformace, akce, kešování Příklady Nadstavby Architektura a alokace zdrojů 5. Spark streaming 2

Úvod do Sparku

Co je to Spark a k čemu slouží systém pro distribuované výpočty na clusteru vylepšení původního map-reduce, o 2 řády rychlejší zpracování v paměti méně I/O operací, vhodné pro iterativní algoritmy nebo analýzu dat optimalizace operací před zpracováním nyní i pseudo-sql příkazy API pro Scalu, Javu, Python a R s Hadoopem (využívá HDFS, YARN) i samostatně napsán ve Scale, běží na JVM nejaktivnější opensource Big Data projekt 4

Spark vs. map-reduce 5

Vhodné úlohy dostatečně velké, ale ne extrémně dobře paralelizovatelné iterační obtížné pro stávající technologie Např. 1. výpočty charakteristik klientů (riskové skóre, zůstatky) 2. ETL pro odlehčení DWH 3. hledání vazeb v síti 4. text-mining 6

Nevhodné úlohy příliš malé s extrémními požadavky na paměť šité na míru jiné technologii (SQL, Java) špatně paralelizovatelné real-time Např. 1. modelování na malých datech 2. výpočet mediánu, náhodné přeskoky mezi řádky souboru 3. JOIN několika opravdu velkých tabulek 7

Jak se to naučit http://spark.apache.org aspoň základy Python Scala Java R vlastní praxe rady zkušených, StackOverflow apod. 8

Jak se s tím pracuje interaktivně z příkazové řádky (shell pro Python i Scalu) Zeppelin/Jupyter notebook dávka / aplikace zkompilovaný.jar soubor skript Pythonu 9

Jak funguje Spark

Pohled high level (logický) RDD výstup transformace akce série transformací zakončená akcí transformace se plánují a optimalizují, ale zatím neprovádějí lazy evaluation: až první akce spustí celý proces Co je to RDD? resilient distributed dataset kolekce prvků (např. řádky v textovém souboru, datová matice, posloupnost binárních dat) musí být dělitelné na části místo rozdělení (spolu)určí Spark! 11

Pohled mid level (technický) vytvoření JVM na nodech (exekutory) rozdělení úlohy na joby a jobů na tasky distribuce tasků a případně dat na nody řízení procesu více v architektuře Sparku 12

Tradiční RDD přístup transformace RDD1 RDD2, po prvcích ( řádcích ) map (prvek transformační funkce nový prvek) flatmap (prvek transformační funkce 0 až N nových prvků) filter, distinct (pustí se jen řádky vyhovující podmínce / unikátní) join (připojí řádky jiného RDD podle hodnot klíče) union, intersection (sjednocení a průnik s jiným RDD) groupbykey, reducebykey (setřídí / agreguje prvky podle klíče)... a další Kde vzít klíč? výsledek transformace, např. slovo (slovo, 1) první prvek tuple se bere jako klíč "tuple" (má Scala i Python) 13

Příklad transformace Úkol: spočítat četnosti slov v dokumentu Vstup: textový soubor rozdělený do řádků (RDD) Postup: transformace řádků: řádek rozdělení na slova prvky typu (slovo, 1) seskupení prvků se stejným klíčem a sečtení jedniček Výsledek transformace: RDD s prvky (slovo, četnost) 14

Vsuvka interaktivní shell pyspark (Python) spark-shell (Scala) spouští se z příkazové řádky některého serveru bigdatan funguje lokálně nebo v YARNu: pyspark --master local pyspark --master yarn vytvoří důležité objekty, např. sc (SparkContext), sqlcontext ukončuje se exit() 15

Příklad transformace Úkol: spočítat četnosti slov v dokumentu Vstup: textový soubor rozdělený do řádků (RDD) lines = sc.textfile("/user/pascepet/bible.txt") Postup: transformace řádků: řádek jednotlivá slova (více prvků) words = lines.flatmap(lambda line: line.split(" ")) transformace řádků: řádek čili slovo struktura (slovo, 1) pairs = words.map(lambda word: (word, 1)) seskupení prvků se stejným klíčem a sečtení jedniček counts = pairs.reducebykey(lambda a, b: a + b) to be or not to be to be or not to be (to, 1) (be, 1) (or, 1) (not, 1) (to, 1) (be, 1) (to, 2) (be, 2) (or, 1) (not, 1) 16

Proč se nic nespočítalo? Protože jsme zatím neprovedli žádnou akci. 17

Tradiční RDD přístup akce reduce (pomocí zadané funkce agreguje všechny prvky RDD) take (vypíše prvních n prvků RDD) count (počet prvků) collect (vypíše RDD jako pole prvků) saveastextfile (uloží jako textový soubor)... a další Akce spustí celý řetězec od začátku! Všechny mezivýsledky se zapomenou. Pokud to nechceme, musíme některé RDD uložit do keše. 18

Kešování Kešování: RDD se nezapomene, ale uchová v paměti / na disku. Metody pro kešování: cache (pokusí se uchovat v paměti) persist (obecnější, např. serializace, využití disku atd.) unpersist (uvolnění RDD z paměti) Typy kešování: MEMORY_ONLY MEMORY_AND_DISK MEMORY_ONLY_SER MEMORY_AND_DISK_SER SER = serializace úspora paměti, ale vyšší výpočetní náročnost Volby se SER pouze Java a Scala, v Pythonu serializace vždy Kešování není akce! 19

Spark SQL a DataFrames (DataSets) Alternativa k tradičnímu RDD přístupu Datová struktura DataFrame = RDD + sloupcové operace obdoba databázové relační tabulky obsahuje i schéma operace nad rámec RDD práce se sloupci možnost použití syntaxe podobné SQL Výhody oproti RDD: optimalizace dotazů rychlejší běh stručnější a jednodušší kód 20

Spark SQL a DataFrames co je navíc (např.) sql (SQL dotazování, např. do Hive) select (omezení počtu sloupců) filter (omezení počtu řádků) groupby (seskupení) agg (agregační funkce) show (hezčí výpis několika řádků) read, write (I/O operace) 21

Příklad SparkSQL Úkol: který stát USA má na meteostanicích nejvyšší průměrný normál v létě? Vstup: tabulka Hive Postup: načtení dat dotazem do Hive omezit data na letní měsíce ponechat jen důležité sloupce seskupit po státech, spočítat průměry seřadit podle průměrů sestupně vypsat první řádek 22

Příklad SparkSQL Úkol: který stát USA má na meteostanicích nejvyšší průměrný normál v létě? Vstup: tabulka Hive Postup: načtení dat dotazem do Hive df=sqlcontext.sql('select * from sstamenov.pocasi') omezit data na letní měsíce df2=df.filter((df.mesic>5) & (df.mesic<9)) ponechat jen důležité sloupce (+ vyhodit null) df3=df2.select('stat','teplota').na.drop() seskupit po státech, spočítat průměry (+ přejmenovat sloupec) df4=df3.groupby('stat').avg().todf('stat','prum') seřadit podle průměrů sestupně df5=df4.sort(df4.prum.desc()) omezit na první řádek df5.limit(1) 23

Nadstavby machine-learning (MLlib) zpracování grafů (GraphX) streaming 24

Architektura Sparku

Důležité pojmy 1 Application master proces zodpovědný za vyjednání výpočetních zdrojů od res. manageru Driver hlavní proces plánuje workflow distribuuje práci do exekutorů Executor proces běžící na některém z nodů (ideálně na každém) provádí tasky (může i několik paralelně) 26

Důležité pojmy 2 Job akce volaná uvnitř programu driveru Stage sada transformací, které mohou být vykonány bez shuffle Task jednotka práce, kterou provádí exekutor na nějakém kousku dat 27

Plánování a optimalizace 28

Plánování a optimalizace přetypování posloupnost transformací (např. přehození FILTER a JOIN) volba typu JOINu, využití clusterování, partitions, skew apod. atd. 29

Plánování a optimalizace rozdělení a distribuce dat překlad transformací a akcí do příkazů pro JVM atd. 30

Ukázka DAG graf popisující průběh výpočtu určení závislostí (X musí být uděláno před Y) optimalizace v rámci dodržení závislostí 31

Spuštění Sparku a konfigurace běhu pyspark spark-shell spark-submit --param value Kde a jak poběží na clusteru plné využití paralelismu mod client mod cluster lokálně paralelní běh na více jádrech určeno parametry --master a --deploy-mode 32

Spark on YARN client mode 33

Spark on YARN cluster mode 34

Mod client versus mod cluster default je client mod client je vhodný pro interaktivní práci a debugging (výstup jde na lokální konzolu) mod cluster je vhodný pro produkční účely 35

Konfigurace běhu Sparku požadavky na zdroje --name jméno aplikace --driver-memory paměť pro driver --num-executors počet exekutorů --executor-cores počet jader pro exekutor --executor-memory paměť pro exekutor Příklad pyspark --master yarn --deploy-mode client --driver-memory 1G --num-executors 3 --executor-cores 2 --executor-memory 3G 36

Příklad plánu alokace zdrojů Obecná doporučení: --num-cores <= 5 --executor-memory <= 64 GB Cluster 6 nodů, každý 16 jader a 64 GB RAM Rezervovat 1 jádro a 1GB /node pro OS zbývá 6 *15 jader a 63 GB 1 jádro pro Spark Driver: 6 * 15 1 = 89 jader. 89 / 5 ~ 17 exekutorů. Každý node (kromě toho s driverem) bude mít 3 exekutory. 63 GB / 3 ~ 21 GB paměti na exekutor. Navíc se musí počítat s memory overhead -> nastavit 19 GB na exekutor 37

Spark Streaming

Co to je a jak to využít dávkové zpracování přicházejících dat příchozí data neklepou na dveře, sedí v čekárně near real-time, pevné nastavení časového okna Možné využití: filtrování logů, zpráv monitorování, reakce na událost vyhledávání v nakešovaných datech 39

Princip zpracování streamovací modul dávkuje příchozí data posloupnost RDD klasický Spark postupně odbavuje RDD ve frontě API pro Javu, Scalu, s malým omezením i Python 40

Příklad Úkol: pro každou dávku ze socketu spočítat četnosti slov sc = SparkContext(appName="Priklad") ssc = StreamingContext(sc, 10) lines = ssc.sockettextstream(sys.argv[1], int(sys.argv[2])) counts = lines.flatmap(lambda line: line.split(" ")) \.map(lambda word: (word, 1)) \.reducebykey(lambda a, b: a+b) counts.pprint() ssc.start() ssc.awaittermination() 41

Díky za pozornost Profinit, s.r.o. Tychonova 2, 160 00 Praha 6 Telefon + 420 224 316 016 Web www.profinit.eu LinkedIn linkedin.com/company/profinit Twitter twitter.com/profinit_eu