Distributed Computing, Spark Streaming, GraphX, MLib. Gombos Gergő

Hasonló dokumentumok
RHadoop. Kocsis Imre Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Virtuális Obszervatórium. Gombos Gergő

KORSZERŰ BIG DATA FELDOLGOZÓ KERETRENDSZEREK Hermann Gábor MTA-SZTAKI

Számítógépes Hálózatok

Adatbányászat és Perszonalizáció architektúra

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

Weblog elemzés Hadoopon 1/39

Adatbányászati technikák (VISZM185) 2015 tavasz

Muppet: Gyors adatok MapReduce stílusú feldolgozása. Muppet: MapReduce-Style Processing of Fast Data

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

Közösség detektálás gráfokban

Az MTA Cloud a tudományos alkalmazások támogatására. Kacsuk Péter MTA SZTAKI

Riak. Pronounced REE-ahk. Elosztott adattároló eszköz. Molnár Péter

SQLServer. Particionálás

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

IBM SPSS Modeler 18.2 Újdonságok

Adatelemzés SAS Enterprise Guide használatával. Soltész Gábor solteszgabee[at]gmail.com

Programozás alapjai II. (7. ea) C++

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

BASH script programozás II. Vezérlési szerkezetek

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Alternatív adatbázisok Gráfadatbázisok

9. MPI

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

Summer of LabVIEW The Sunny Side of System Design

Using the CW-Net in a user defined IP network

Használati alapú és modell alapú tesztelés kombinálása szolgáltatásorientált architektúrák teszteléséhez az ipari gyakorlatban

Információs Rendszerek Szakirány

Regisztráció a Researcher ID adatbázisban

Számítógéppel irányított rendszerek elmélete. Gyakorlat - Mintavételezés, DT-LTI rendszermodellek

GENERÁCIÓS ADATBÁZISOK A BIG DATA KÜLÖNBÖZŐ TERÜLETEIN

eseményvezérelt megoldások Vizuális programozás 5. előadás

Teszt topológia E1/1 E1/0 SW1 E1/0 E1/0 SW3 SW2. Kuris Ferenc - [HUN] Cisco Blog -

Adatbányászati szemelvények MapReduce környezetben

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

SQL Server High Availability

Gráfok mindenhol. x $ SZENDI-VARGA JÁNOS IOT SOCIAL NETWORKS FRAUD DETECTION MASTER DATA MANAGEMENT RECOMMENDATION ENGINES. Internet of Things

Alkalmazások architektúrája

2023 ban visszakeresné 2002 es leveleit? l Barracuda Message Archiver. Tóth Imre Kereskedelmi Igazgató Avisys Kft Barracuda Certified Diamond Partner

Multimédiás és webes adatbányászat KISS LÁSZLÓ

Tipikus időbeli internetezői profilok nagyméretű webes naplóállományok alapján

A Számítógépes alapismeretek témakör oktatása. Dr. Nyéki Lajos 2019

Java és web programozás

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

MVC. Model View Controller

Hálózati architektúrák és Protokollok GI 8. Kocsis Gergely

Powershell 2. gyakorlat

Hadoop és használata az LPDS cloud-on

Gépi tanulás a Rapidminer programmal. Stubendek Attila

MapReduce paradigma a CAP-tétel kontextusában. Adatb haladóknak. Balassi Márton Adatbázisok haladóknak 2012.

Széchenyi István Egyetem

Gépi tanulás a gyakorlatban. Kiértékelés és Klaszterezés

Android Pie újdonságai

SQLServer. SQLServer konfigurációk

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

III. "JÖVŐ INTERNET" TECHNOLÓGIÁK: ELOSZTOTT ÉS FELHŐ SZOLGÁLTATÁSOK, TÁRGYAK INTERNETE DR. SIMON GYULA

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Big Data tömeges adatelemzés gyorsan

BIG DATA ÉS GÉPI TANULÁS KÖRNYEZET AZ MTA CLOUD-ON KACSUK PÉTER, NAGY ENIKŐ, PINTYE ISTVÁN, HAJNAL ÁKOS, LOVAS RÓBERT

Teljesen elosztott adatbányászat alprojekt

Számítógépes Hálózatok GY 8.hét

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Totális Unimodularitás és LP dualitás. Tapolcai János

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Heurisztikák BitTorrent hálózatok max-min méltányos sávszélesség-kiosztására

Adatbázis-kezelés ODBC driverrel

Tű a szénakazalban Az archiválás kihívásai. Sütő János (sj@acts.hu)

Adatbázis-kezelés. Harmadik előadás

Nagios NSCA Indirect Monitoring, Passive Check

Érdekes informatika feladatok

HLSL programozás. Grafikus játékok fejlesztése Szécsi László t06-hlsl

9. Gyakorlat: Network Load Balancing (NLB)

Thermo1 Graph. Felhasználói segédlet

Osztályok. 4. gyakorlat

MMK-Informatikai projekt ellenőr képzés 4

discosnp demo - Peterlongo Pierre 1 DISCOSNP++: Live demo

Internet technológiák

Készítette: Szabóné Nacsa Rozália

LINUX LDAP címtár. Mi a címtár?

Ethernet/IP címzés - gyakorlat

Operációs rendszerek. Elvárások az NTFS-sel szemben

Gépi tanulás a gyakorlatban. Lineáris regresszió

Pénzügyi algoritmusok

OOP #14 (referencia-elv)

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Data Integrátorok a gyakorlatban Oracle DI vs. Pentaho DI Fekszi Csaba Ügyvezető Vinnai Péter Adattárház fejlesztő február 20.

Eduroam változások - fejlesztések, fejlődések. Mohácsi János NIIF Intézet HBONE Workshop 2015

SQL Backup and FTP. A program telepítésének menete. A szoftvert a következő weboldalról ingyenesen tölthető le:

BASH SCRIPT SHELL JEGYZETEK

JavaScript bűvésztrükkök, avagy PDF olvasó és böngésző hackelés

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Biztonságos mobilalkalmazás-fejlesztés a gyakorlatban. A CryptTalk fejlesztése során alkalmazott módszerek. Dr. Barabás Péter Arenim Technologies

Deep Learning a gyakorlatban Python és LUA alapon Felhasználói viselkedés modellezés

Dinamikus modellek szerkezete, SDG modellek

Big Data az adattárházban

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Java és web programozás

Hálózati architektúrák és Protokollok GI 7. Kocsis Gergely

Átírás:

Distributed Computing, Spark Streaming, GraphX, MLib Gombos Gergő

Spark eszközök Big Data Korszerű Adatbázisok 2

Spark eszközök Big Data Korszerű Adatbázisok 3

Spark Streaming statikus adat sok adat másodpercenként Big Data Korszerű Adatbázisok 4

Spark Streaming Alkalmazás Szenzor Web Mobil Behatolás detektálás Csalás detektálás Hiba detektálás Oldal elemzés Hálózati mérésék elemzése Mérési adat feldolgozás Ajánlások Hely alapú reklámok Log elemzés. Érzelem elemzés. Big Data Korszerű Adatbázisok 5

Spark Streaming Bementi stream darabolása Batch folyamat futtatása a darabokon lehet: graphx, sparkml Kimenet tárolása Big Data Korszerű Adatbázisok 6

Discretize Stream (DStreams) DStream: RDD-k folytonos sorozata Minden DStream-en operátor érvényes az RDD-n Big Data Korszerű Adatbázisok 7

Input Dstreams Két típusú bemenet: alap források: File system, Socket connection, fejlettebb források: Kafka, Flume, Kinesis, Twitter, Big Data Korszerű Adatbázisok 8

Receiver http://www.slideshare.net/typesafe_inc/four-things-to-know-about-reliable-spark-streaming-with-typesafe-and-databricks Big Data Korszerű Adatbázisok 9

Fontos! Minden receiver egy magot fog használni Ne indítsuk local -lal a streaminget! megfelelő paraméterezés: Több magot foglaljunk le a streaming-nek, mint amennyi receiver fog futni Ha kevesebb akkor nem lesz mag ami feldolgozza az adatot Lokális futtatás pl.: local[2] egy mag a receivernek, egy mag a processingnek Big Data Korszerű Adatbázisok 10

Dstream függvények map filter union reduce reducebykey cogroup flatmap repartition count countbyvalue join transform Big Data Korszerű Adatbázisok 11

UpdateStateByKey Állapot változók használata lépések: 1. definiálni egy állapotváltozót 2. definiálni egy update függvényt def updatefunction(newvalues: Seq[Int], runningcount: Option[Int]): Option[Int] = { val newcount =... Some(newCount) } val runningcounts = pairs.updatestatebykey[int](updatefunction _) Big Data Korszerű Adatbázisok 12

Transform RDD -> RDD függvény Itt lehet használni minden RDD függvényt pl: Nem a streamben kiszámolt értékek hozzá vétele az adatokhoz val cleaneddstream = wordcounts.transform(rdd => { rdd.join(spaminfordd).filter(...) } Big Data Korszerű Adatbázisok 13

Window operátorok Lehetőség csúszó ablakos számításokra. Paraméterek: ablak hossz (pl.: 3) csúszási intervallum (pl: 2) Big Data Korszerű Adatbázisok 14

Window operátorok példa: Az utolsó 30 másodpercben akarjuk a szavak számát megszámolni minden 10 másodpercben. val windowedwordcounts = pairs.reducebykeyandwindow( (a:int,b:int) => (a + b), Seconds(30), Seconds(10) ) Big Data Korszerű Adatbázisok 15

Window operátorok countbywindow(windowlength,slideinterval) reducebywindow(func, windowlength,slideinterval) reducebykeyandwindow(func,windowlength, slideinterval, [numtasks]) reducebykeyandwindow(func, invfunc,windowlength, slideinterval, [numtasks]) countbyvalueandwindow(windowlength,slideinterval, [numtasks]) A reducebykeyandwindow hatékonyabb használata az invfunc paraméterrel rendelkező, mert az a korábbi reducebykey eredményeket is felhasználja. DE: a reduce függvénynek invertálhatónak kell lennie és a checkpoint lehetőség be kell hogy legyen állítva. Big Data Korszerű Adatbázisok 16

Join operátorok Adatok összekapcsolása Stream-stream join val stream1: DStream[String, String] =... val stream2: DStream[String, String] =... val joinedstream = stream1.join(stream2) val windowedstream1 = stream1.window(seconds(20)) val windowedstream2 = stream2.window(minutes(1)) val joinedstream = windowedstream1.join(windowedstream2) További lehetőségek: leftouterjoin, rightouterjoin, fullouterjoin Big Data Korszerű Adatbázisok 17

Join operátorok Adatok összekapcsolása Stream-dataset join val dataset: RDD[String, String] =... val windowedstream = stream.window(seconds(20))... val joinedstream = windowedstream.transform { rdd => rdd.join(dataset) } Big Data Korszerű Adatbázisok 18

Output operátorok Eredmények kiírása print() saveastextfiles(prefix, [suffix]) saveasobjectfiles(prefix, [suffix]) saveashadoopfiles(prefix, [suffix]) foreachrdd(func) foreachrdd: adat kimentése külső rendszerekben dstream.foreachrdd { rdd => val connection = createnewconnection() // executed at the driver rdd.foreach { record => connection.send(record) // executed at the worker } } Big Data Korszerű Adatbázisok 19

Broadcast variable Csak olvasható változó, amelyet minden node csak egyszer kap meg @volatile private var instance: Broadcast[Seq[String]] = null def getinstance(sc: SparkContext): Broadcast[Seq[String]] = { if (instance == null) { synchronized { if (instance == null) { val wordblacklist = Seq("a", "b", "c") instance = sc.broadcast(wordblacklist) } } } instance } Big Data Korszerű Adatbázisok 20

Accumulator variable Csak növelhető változó Hasznos a folyamat állapotszámlálónak @volatile private var instance: Accumulator[Long] = null def getinstance(sc: SparkContext): Accumulator[Long] = { if (instance == null) { synchronized { if (instance == null) { instance = sc.accumulator(0l, "WordsInBlacklistCounter") } } } instance } Big Data Korszerű Adatbázisok 21

Használatuk WordCount-nál wordcounts.foreachrdd((rdd: RDD[(String, Int)], time: Time) => { // Get or register the blacklist Broadcast val blacklist = WordBlacklist.getInstance(rdd.sparkContext) // Get or register the droppedwordscounter Accumulator val droppedwordscounter = DroppedWordsCounter.getInstance(rdd.sparkContext) // Use blacklist to drop words and use droppedwordscounter to count them }) val counts = rdd.filter { case (word, count) => if (blacklist.value.contains(word)) { droppedwordscounter += count false } else { true } }.collect() val output = "Counts at time " + time + " " + counts Big Data Korszerű Adatbázisok 22

Checkpointing Az adatok folyamatosak, így hiba esetén nincs visszaállítási lehetőség A spark-nak checkpointokra van szüksége, hogy visszatudjon állítani egy korábbi állapotot Típusai: Metadata szintű: a stream számításhoz szükséges információkat tárolja (driver hibákra jó) Adat szintű: korábbi RDD adatok tárolása (statefull adat hibákra jó) Checkpoint beállítása: egy fault-tolerant rendszeren mappa megadása (pl HDFS) ssc.checkpoint(checkpointdirectory) Big Data Korszerű Adatbázisok 23

Alkalmazás felépítése 1. SparkConf, StreamingContext 2. Input source megadása 3. Stream műveletek elkészítése 4. streamcontext elindítása 5. Végtelen futtatás vagy streamcontext leállítása Big Data Korszerű Adatbázisok 24

Spark eszközök Big Data Korszerű Adatbázisok 25

Gráfok Nagy méretű gráfok mindenhol Web: weboldalak, hivatkozások Közösségi hálózatok Felhasználó-Termék gráf Big Data Korszerű Adatbázisok 26

Gráf feldolgozási feladatok Alap statisztikák Pl: Bemenő/kimenő élek Származtatott tulajdonságok a gráfból Klaszterezési együttható Legrövidebb út keresés Internet (routing) Párosítás Randi oldalak (match.com) Big Data Korszerű Adatbázisok 27

Gráf feldolgozási feladatok PageRank Node fontosság meghatározás Háromszögek keresése Társaságok megtalálása Big Data Korszerű Adatbázisok 28

PageRank példa ResetProb: 0.15 Page1 Page3 Page2 Page4 Page6 Page5 Big Data Korszerű Adatbázisok 29

PageRank példa ResetProb: 0.15 Page1 0.15 Page3 0.15 Page2 0.15 Page4 0.15 Page6 0.15 Page5 0.15 Big Data Korszerű Adatbázisok 30

PageRank példa ResetProb: 0.15 Page3 0.15 1/3 Page1 0.15 1/3 1/2 1/2 Page5 0.15 1 1/2 1 1/3 Page4 0.15 Page2 0.15 1/2 Page6 0.15 Big Data Korszerű Adatbázisok 31

PageRank példa ResetProb: 0.15 Pr(Page) = resetprob + (1-resetProb) * szumall(neighpage * Edge) Page3 0.15 1/3 Page1 0.15 1/3 1/2 1/2 Page5 0.15 1 1/2 1 1/3 Page4 0.15 Pr(Page1) = 0.15 Pr(Page2) = 0.15 + 0.85 * (1/3*0.15) ~0.19 Pr(Page3) = 0.15 + 0.85 * (1 *0.15 + Page2 1/3* 0.15 + ½ * 0.15) 0.15 ~ 0.38 1/2 Page6 0.15 Big Data Korszerű Adatbázisok 32

PageRank példa ResetProb: 0.15 Pr(Page) = resetprob + (1-resetProb) * szumall(neighpage * Edge) 1/3 Page1 0.15 1/3 Page3 0.38 1/2 1/3 1/2 Page5 0.26 1 1/2 1 Page4 0.27 Page2 0.19 1/2 Page6 0.21 Big Data Korszerű Adatbázisok 33

Kihívások Gráfok nagyok Milliós nagyságrendű csúcsok és élek Tárolás, feldolgozás egy serveren: Memória limit Lassú Tárolás elosztva: Sok kommunikáció a gépek között Big Data Korszerű Adatbázisok 34

Tipikus gráf feldolgozás Iteratív Minden csúcs rendelkezik értékkel Minden iterációban: Újraszámolja a saját értékét a szomszédok és az élek alapján Iteráció vége: Fix számú iteráció Nincs új érték a gráfban Big Data Korszerű Adatbázisok 35

MapReduce? 1 job = 1 iteráció A reduce kulcsa nodeid, értéke az üzenetek Előny: Ismert Hátrány: Minden csúcs átmegy a hálózaton minden iterációban Minden csúcs ki lesz írva a HDFS-re Lassú, nem hatékony Big Data Korszerű Adatbázisok 36

Bulk Synchronous Parallel(BSP) Model Think like a vertex Originally by Valiant (1990) Big Data Korszerű Adatbázisok 37

Elosztott gráf feldolgozás Think like a vertex Minden csúcs legyen egy szerveren Így a szerverek csúcshalmazt tárolnak Egy iteráció lépése: Gather: megkapjuk a szomszéd csúcsok értékét Apply: Kiszámoljuk az új értéket Scatter: elküldjük az új értéket a szomszédoknak Big Data Korszerű Adatbázisok 38

Csúcs tárolás Honnan tudjuk melyik csúcs melyik szerveren tárolódik? Lehetőségek: Hash-alapú: Hash(csúcs id) mod num(server) Hasonló: P2P Lokalitás-alapú A szomszédos csúcsokat próbáljuk egy szerveren tárolni Csökken a szerver-szerver közötti kommunikáció Big Data Korszerű Adatbázisok 39

GraphX Optimális particionálás és indexelés a csúcsok és élek tárolására Alapstruktúra: Property graph API Bejárás Elérés Alap függvények PageRank Connected components Tringle counting Big Data Korszerű Adatbázisok 40

Property graph Felhasználói struktúrák a csúcsokhoz és élekhez Big Data Korszerű Adatbázisok 41

Optimális gráftárolás Általában GraphX Big Data Korszerű Adatbázisok 42

Optimális adattárolás Big Data Korszerű Adatbázisok 43

Gráf operátorok Big Data Korszerű Adatbázisok 44

Gráf operátorok Big Data Korszerű Adatbázisok 45

GraphX Big Data Korszerű Adatbázisok 46

Spark eszközök Big Data Korszerű Adatbázisok 47

Machine Learning Big Data Korszerű Adatbázisok 48

Machine Learning Library (MLlib) Big Data Korszerű Adatbázisok 49

Classification Adatok címkézése / osztályokba sorolásaű pl: spam Big Data Korszerű Adatbázisok 50

Clustering Csoportok keresése pl: Vevők csoportosítása Anomália detektálás Szöveg kategorizálása Big Data Korszerű Adatbázisok 51

Collaborative Filtering Ajánló rendszerek A múltban hasonló termékeket kedvelő userek a jövőben is kedveli fognak hasonló terméket. Big Data Korszerű Adatbázisok 52

Machine Learning Library (MLlib) 2 csomagban érhetőek el: spark.mllib: RDD-ken dolgozik alacsonyabb szintű spark.ml DataFrame-ken dolgozik magasabbszintű pipeline-ok készítése Big Data Korszerű Adatbázisok 53

spark.ml package Építő elemi: Transformer: DataFrame-ből DataFrame-be alakít át Estimator: Egy algoritmus ami rátanul az adatra (egy model-t készít) Pipeline: Transformerek és Estimator-ok láncolt sorozata Parameter Különböző paraméterek a Trandformereknek, Estimatoroknek Big Data Korszerű Adatbázisok 54

Transformer példa: olvass be egy oszlopot ( text ) készíts egy új oszlopot ( features vector ) a term-frequency alapján (hányszor fordult elő a szó a dokumentumban) val hashingtf = new HashingTF().setInputCol( text ).setoutputcol("features") Big Data Korszerű Adatbázisok 55

Estimator példa: Logisztikus regresszió val lr = new LogisticRegression().setMaxIter(10).setRegParam(0.01) Big Data Korszerű Adatbázisok 56

Pipeline Az egyes komponenseket egy sorba rakjuk Alakítsd a szövegeket dokumentummá alakítsd a szavakat számmal rendelkező feature vektorrá Tanulj rá az adathalmazra val pipeline = new Pipeline().setStages(Array(tokenizer, hashingtf, lr)) val model = pipeline.fit(training) Big Data Korszerű Adatbázisok 57

Pipeline Training Test Big Data Korszerű Adatbázisok 58

Parameters Két lehetőség paraméterek átadására 1. Az instance-nak adjuk meg logreg.setmaxiter(10) 2. Készítünk egy ParamMap-et maxiter -> 10 Ezt a ParamMap-et minden instance használni fogja Ez felülírja a setter-ekkel beállított értéket Big Data Korszerű Adatbázisok 59

Model selection via Cross-Validation // We use a ParamGridBuilder to construct a grid of parameters to search over. // With 3 values for hashingtf.numfeatures and 2 values for lr.regparam, // this grid will have 3 x 2 = 6 parameter settings for CrossValidator to choose from. val paramgrid = new ParamGridBuilder().addGrid(hashingTF.numFeatures, Array(10, 100, 1000)).addGrid(lr.regParam, Array(0.1, 0.01)).build() // Note that the evaluator here is a BinaryClassificationEvaluator and // its default metric is areaunderroc. val cv = new CrossValidator().setEstimator(pipeline).setEvaluator(new BinaryClassificationEvaluator).setEstimatorParamMaps(paramGrid).setNumFolds(2) // Use 3+ in practice Big Data Korszerű Adatbázisok 60

Köszönöm a figyelmet! Big Data Korszerű Adatbázisok 61