Big Data elemzési eszközök nyílt forráskódú platformokon el adásjegyzet. Cseh Gábor Kócsó Balázs Váradi Szabolcs

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Big Data elemzési eszközök nyílt forráskódú platformokon el adásjegyzet. Cseh Gábor Kócsó Balázs Váradi Szabolcs"

Átírás

1 Budapesti M szaki és Gazdaságtudományi Egyetem Big Data elemzési eszközök nyílt forráskódú platformokon el adásjegyzet Készítette: Cseh Gábor Kócsó Balázs Váradi Szabolcs El adó: Prekopcsák Zoltán Lektorálta: Holczer Tamás, Prekopcsák Zoltán BMEVITMAV15 Budapest, 2014 L A T E X

2 Tartalomjegyzék 1. Bevezetés 4 2. Elosztott rendszerek, Hadoop, HDFS Elosztott rendszerek Elosztott fájlrendszerek Hadoop története Hadoop HDFS Hadoop szerver szerepek Name Node (NN) Secondary Name Node (SNN) Data Node (DN) Adatm veletek Olvasás Írás MapReduce Az általános MapReduce modell Feladat Feladat Hadoop MapReduce felépítése Hadoop Cluster Meghibásodások MapReduce programozási minták, Streaming feladat feladat feladat feladat Streaming Adattömörítés Hadoop csomagok, SQL for Hadoop: Hive Hadoop csomagok Flume Sqoop Hive Pig HBase Mahout

3 TARTALOMJEGYZÉK Zookeeper SQL for Hadoop: Hive A Hive felépítése Pig programozás Bevezetés A fájlok feltöltése A script megírása Reláció deniálása Reláció deniálása sémával Reláció létrehozása egy másik relációból Adatok kiírása Oszlop kiválasztása a relációból Adatok írása a HDFS-re Két reláció illesztése (Join m velet) Adatok rendezése Adatok sz rése és csoportosítása További források Hadoop klaszterek kongurációja és üzemeltetése Hardver Operációs rendszer Hálózat Disztribúció Feladatok ütemezése és kvóták használata Hadoop YARN, Tez, Spark Hadoop Kialakulása Különbségek YARN job futtatás Tez Eloszott rendezési példa Tez-ben Impala Spark Storm Hadoop & NoSQL: HBase Adatbázis-kezel rendszerek Elosztott adatbázis-kezel rendszerek NoSQL adatbázis-kezel rendszerek HBase M ködése HBase adatszervezési példa A. MapReduce Patterns, Algorithms, and Use Cases 45 A.1. Basic MapReduce Patterns A.1.1. Counting and Summing A.1.2. Collating

4 TARTALOMJEGYZÉK A.1.3. Filtering (Grepping), Parsing, and Validation A.1.4. Distributed Task Execution A.1.5. Sorting A.2. Not-So-Basic MapReduce Patterns A.2.1. Iterative Message Passing (Graph Processing) A.2.2. Distinct Values (Unique Items Counting) A.2.3. Solution II: A.2.4. Cross-Correlation A.3. Relational MapReduce Patterns A.3.1. Selection A.3.2. Projection A.3.3. Union A.3.4. Intersection A.3.5. Dierence A.3.6. GroupBy and Aggregation A.3.7. Joining

5 1. el adás Bevezetés BigData deníciója: Olyan nagy és komplex adathalmaz, amelyet már a szokásos alkalmazásainkkal nem tudunk kezelni. Ez nem egy túl pontosan értelmezhet deníció, ezért ez felhasználási területenként változik (1.1. ábra). Ha a felhasználási terület ˆ az Excel, akkor 1 millió sor, ha ˆ valamilyen memória alapú feldolgozóeszköz, akkor amennyi memóriánk van, azaz 4-8 GB, ha ˆ valamilyen adatbázis pl. MySQl, akkor GB, ha ˆ az általunk készített hatékony diszket jól használó programok, akkor 1 TB fölött számít BigData-nak. Nagy általánosságban azt lehet mondani, hogy GB alatt nem számít az adat BigData-nak, mert egy nagy memóriával rendelkez felh szolgáltatással ezek az adatok még nagyon jól kezelhet ek ábra. A BigData értelmezése a felhasználási terület függvényében 4

6 ELŽADÁS 1. BEVEZETÉS Ett l nagyobb adatmennyiség esetén már csak valamilyen elosztott rendszerrel tudjuk hatékonyan kezelni az adatainkat, ilyen elosztott rendszer a Hadoop. A scale up felfogás szerint, ha egy gépen szeretnénk minél nagyobb számítási kapacitást, akkor csak egyszer en felskálázzuk (azaz több memóriát és er sebb processzort teszünk bele), míg a scale out szerint teljesen hagyományos PC-ken elosztott rendszerben gondolkodunk. Egy másik felfogás szerint onnantól beszélünk BigData problémákról, amikor az adat olyan nagy, hogy az már részévé válik a problémának, például amikor már nem férünk a memóriába, vagy amikor már egy számítógépen napokig fut az adott feladat. Összefoglalva bármilyen probléma, amely abból származik, hogy túl sok adatot kell kezelni. Ezek legtöbbször valamilyen hardver korlátból adódnak (1.2. ábra), amelyek egy normál PC esetén ˆ TB méret merevlemezt, ˆ GB méret memóriát jelent. Ezen felül jelent s probléma az is, ha egy átlagos 2 TB méret merevlemezr l le akarjuk olvasni a teljes tartalmát, akkor az 6 órába tellene a merevlemez átereszt képessége miatt ábra. A hardver korlátok egy átlagos PC esetén 5

7 2. el adás Elosztott rendszerek, Hadoop, HDFS 2.1. Elosztott rendszerek Az elosztott rendszerek lehet vé teszik azt, hogy bármilyen m veletet több számítógép között elosztottan hajtsunk végre, ezáltal megnövelve annak sebességét, kapacitását, rendelkezésre állását. Egy elosztott rendszer rengeteg számítógépb l állhat, melyek egy közös cél érdekében együtt tudnak dolgozni, és m ködni. Ezek a számítógépek egy hálózaton (vagy akár az interneten) keresztül vannak egymással összekötve, így tudnak kommunikálni. Fontos megemlíteni, hogy a meghibásodás ténye teljesen más, mint egy egyedülálló számítógép esetében. Az elosztott rendszerek ezt rugalmasan tudják kezelni, folytatódik a rendszer futása szinte észrevehetetlenül. Egyedülálló gép esetében természetesen ez nem lehetséges (a hiba típusától függ en). Ez a fajta rugalmasság azért is fontos, mert egy több tíz vagy száz gépb l álló hálózat esetén a meghibásodás egy napi vagy heti rendszerességgel el forduló esemény, és nagyon fontos, hogy 1-2 gép kiesése esetén a többi gond nélkül tovább m ködjön, s t lehet leg a feladatok futása se szakadjon meg. Többféle célra is használják ezeket a rendszereket: ˆ Elosztott adattároló központok: Ezeket a rendszereket kifejezetten nagy mennyiség adatok tárolására találták ki. Mivel egy adathordozón és számítógépen meglehet sen limitált a tárolható adatmennyiség, így ezt több számítógépen több adathordozón tudjuk tárolni. Többnyire az adatok megfelel en vannak replikálva is, így az adatvesztés kockázata jelent sen lecsökken. ˆ Elosztott számítási kapacitás: A másik nagy felhasználás, amikor az elosztott rendszereket a teljesítményük miatt kapcsolják össze egy nagy számítási felh vé. Ilyenkor egy bizonyos nagy számításigény feladatot nagyon gyorsan és hatékonyan végre lehet hajtani, míg ez egy önálló számítógépen több évig eltarthatna (pl. genetikai minták elemzése). Az ilyen típusú rendszerek lehetnek el re konguráltak, és telepítettek, de lehetnek akár önkéntesek is, ahova egyszer felhasználói számítógépeket az interneten keresztül kapcsolnak be a rendszerbe, és használják az er forrásaikat. (Ezek lehetnek a GRID computing, HPC, Volunteer computing, Distributed programming, MPI. Ezek mindegyike számítás- és nem adatigényes feladatokra vannak optimalizálva.) 6

8 ELŽADÁS 2. ELOSZTOTT RENDSZEREK, HADOOP, HDFS Elosztott fájlrendszerek Régen egy 1 GB-os merevlemezt körülbelül 4 MB/s sebességgel tudtunk olvasni. Mára a technológia sokat javult a tárolható adatmennyiség terén, de az olvasási sebesség növekedése nem a várt értékeket mutatja. Egy ma kapható 2 TB-os merevlemezt 100 MB/s sebességgel tudunk olvasni, ami még így is lassúnak mondható abban az esetben, ha a teljes lemeztartalmat szekvenciálisan végig szeretnénk olvasni (kb. 5,5 óra). Ha ezt az adatmennyiséget elosztva 100 db merevlemezen tárolnánk, akkor az adatokat ugyanilyen olvasási sebesség mellett szinte néhány perc alatt fel tudnánk dolgozni. Emellett a statisztikák szerint 100 db merevlemezb l 5 hibásodik meg évente. Ezen okok miatt kezdték el létrehozni az elosztott fájlrendszereket. Az elosztott fájlrendszerek lényege, hogy a fájljainkat egy kliens-szerver architektúra segítségével tárolhatjuk illetve érhetjük el. Egy elosztott fájlrendszerben egy vagy több központi szerver található, amelyek tárolják az alapvet információkat a többi szerverr l, melyek száma elméletben korlátlan lehet. Ezek a kitüntetett szerepkörrel rendelkez szerverek tárolják a fájlstruktúra hierarchikus felépítését, a metaadatokat, és a fájlok konkrét szerveren való helyét. A gyakorlatban legalább kett központi szervert használnak annak érdekében, hogy redundancia biztosított legyen. Ha egy elosztott fájlrendszerbeli fájlt egy kliens géppel szeretnénk elérni, akkor gyakorlatilag semmilyen különbséget nem veszünk észre, tehát teljesen olyan, mintha az adott fájlt egy darab szerveren tároltuk volna, vagyis a tároló Node-ok struktúrája elfedésre kerül. Err l az elfedésr l az elosztott rendszer gondoskodik. Az elosztott rendszerek er ssége abban rejlik, hogy általuk könnyen elérhet ek több kliens számára is ugyanazok az adatok, és gyakorlatilag egy központi tárolóegységr l beszélünk, a kliensek nem tárolnak lokálisan olyan fájlokat, amelyek más kliensek számára is fontosak lehetnek Hadoop története A 2.1. ábrán látható a Hadoop rendszer fejl déstörténete. Eredetileg a Hadoop egy elosztott fájlrendszerként indult, amelyet a Google kezdett el fejleszteni Google File System néven. Ezután többen megpróbálták ezt reprodukálni, és elkészíteni Open Source projekt keretein belül ábra. Hadoop kialakulásának története Ezek után a Yahoo is elkezdte ugyanezt a rendszert saját maga elkészíteni. A próbálkozásoknak és a fejlesztéseknek köszönhet en egyre többen elkezdték használni a Hadoop rendszert (pl. Facebook, Last.FM), és ennek következtében az Apache felkarolta, és egy 7

9 ELŽADÁS 2. ELOSZTOTT RENDSZEREK, HADOOP, HDFS dedikált Open Source fejlesztési projekt keretein belül a mai napig k foglalkoznak a témával. Több nagy cég üzleti szolgáltatásként is elindította a saját továbbfejlesztett és kiegészített verzióját. A 2.2. ábrán látható, hogy 2012-ben a Hadoop rendszert céges környezetben 1 éven belül nagyon sokan tervezik bevezetni, tehát jelent s növekedés várható a piacon ábra. Bevezetni kívánt technológiák céges környezetben 2.3. Hadoop HDFS A Hadoop rendszer egy teljesen saját, egyedülálló elosztott fájlrendszert használ, a Hadoop Distributed File System-et (HDFS). Ez a fájlrendszer arra lett tervezve, hogy kifejezetten nagy méret fájlokat tároljunk rajta, mivel a rendszerben nagy adathalmazokon tudunk valamilyen lekérdezést, vagy m veletet egyszer en végrehajtani. Például log-ok esetén érdemes nagyobb egységekben tárolni az adatokat, így nagy fájlméret érhet el. Az adatokat általában egyszer letároljuk, és többször teljesen végig kell olvasnunk ket (full scan). A Hadoop fájlrendszer arra lett tervezve, hogy átlagos otthoni PC-kre vagy átlagos szerverekre is telepíthet legyen, ezzel is azt ösztönözve, hogy költséghatékonyabban tudjunk egy elosztott rendszert kialakítani (ez nagy mértékben különbözik a SAN szemlélett l). A HDFS egy blokkalapú fájlrendszer (tipikusan MB egy blokkméret), tehát a nagy fájlok (tipikusan a GB-os nagyságrendben) ilyen méret blokkokra darabolódnak szét, és a blokkok egymástól függetlenül tárolhatók más-más er forrásokon, és számítógépeken. A blokkméretet az elérési id miatt kell nagyobbra venni, mint egy átlagos fájlrendszer esetében. A fentebb említett MB blokkméretnél nagyobbat már nem érdemes választani, mert ezzel elveszítenénk a párhuzamosítás lehet ségét, mivel a számítási feladatok esetében a blokkok betölt dnek a memóriába, tehát így több is befér egyszerre, nem kell állandóan cserélgetni ket a számítás során. Ez a gyakorlatban azt jelenti, hogy egy 1 GB-os fájl esetében, 1 MB-os blokkok esetén az olvasás során a merevlemez fejének 8

10 ELŽADÁS 2. ELOSZTOTT RENDSZEREK, HADOOP, HDFS mozgatása ms keresési id t jelent. Nagyobb blokkméret esetén ez a késleltetés jóval csökken. Ezen kívül nagyon fontos, hogy minden blokk replikálódik legalább egy - de általában több (2-3) - másik számítógépen is, tehát ezzel elkerülhet az adatvesztés (Hadoop esetén az alapértelmezett replikációs faktor a 3, ez azt jelenti, hogy minden blokk 3 különböz helyen van eltárolva). Ha kiesik egy számítógép, azt egyszer en kivehetjük a rendszerb l, és egy újat tehetünk a helyébe. Ezáltal a rendszer nagyon jól skálázható, rendkívül jól m ködik óriási géppark esetén is. A blokkok helyének meghatározását egy komplex terheléselosztó algoritmus határozza meg, ami többek között gyelembe veszi az egyes gépek terhelését, a replikálásból származó adatforgalom minimalizálását, illetve a minél nagyobb megbízhatóságot (ennek érdekében lehet leg több rack illetve adatpark között is megosztja a replikákat) Hadoop szerver szerepek A fájlrendszerben több kitüntetett szereppel rendelkez gépnek kell lennie ahhoz, hogy az egész rendszer megfelel en tudjon m ködni (2.3. ábra) ábra. Hadoop szerver szerepek forrás: Name Node (NN) Ebb l általában egy van egy Hadoop rendszerben, feladata a metaadatok tárolása és karbantartása. Gyakorlatilag tudja azt, hogy milyen mappák, milyen fájlok találhatóak a fájlrendszeren. Ezt két fájl segítségével tudja tárolni: ˆ Namespace image: Ez egy lenyomat a fájlokról, mappákról. ˆ Edit log: A legutóbbi namespace image-hez képest történt változtatásokat írja le, ezáltal nem kell mindig azt az image-t frissíteni, ami jelent s er forrásigénnyel járna. Ennek ellenére ezt a log-ot egy id után bele kell f znünk a namespace image-be, mert feleslegesen nagy méret vé válna. 9

11 ELŽADÁS 2. ELOSZTOTT RENDSZEREK, HADOOP, HDFS Fontos megemlíteni, hogy a Data Node-ok rendszeresen jelentik a náluk lév blokkok listáját a Name Node-nak, amit természetesen nyilván is tart. Így ha egy kliens a Name Node-hoz fordul egy fájlért, akkor ebb l a naplóból tudja, hogy melyik blokkok kellenek, és a jelentésekb l el tudja irányítani a klienst a megfelel Data Node-hoz, ugyanis ezen jelentések nélkül a Name Node nem tudná, hogy milyen blokkok találhatóak a Data Nodeokon (amelyek nem kerültek mentésre még a namespace image-be). A metaadatok tárolásának hátránya, hogyha a Name Node kiesik, és a metaadatokról nincs biztonsági másolatunk, akkor minden adatunk elveszik annak ellenére, hogy zikailag az adatblokkok megmaradnak a Data Node-okon. Ennek kiküszöbölésére RAID és/vagy NFS (Network File System) technológiákat használnak, így mind helyileg, mind hálózaton is tudjuk ezeket tárolni. Létezik egy Name Node High Avaibility megoldás, amely szerint több Name Node van a rendszerben. Így mindegyik folyamatosan tárolja az információkat és közülük valamelyik aktív, a többi pedig passzív, a kliensek pedig mindig az aktívhoz fordulnak. Az aktív kiesése esetén ekkor bármelyik passzív rögtön átveheti az aktív szerepét. Ez a megoldás természetesen jelent sen nagyobb terhet ró a Name Node-ra, hiszen biztosítani kell a konzisztenciát az aktív és passzív Name Node-ok között Secondary Name Node (SNN) Ez a szerepkör ahogy els re gondolnánk nem egy másodlagos Name Node, tehát az elnevezése megtéveszt lehet. Feladata az, hogy segítsen a NameNode-nak az általa tárolt adatok kezelésében, és a namespace image karbantartásában. Ž gondoskodik arról, hogy a fentebb említett Edit log-ot belef zze a Namespace image-be, és ezeket újra átadja az els dleges Name Node-nak Data Node (DN) Ezek a számítógépek tárolják gyakorlatilag a fentebb említett adatblokkokat. Žk jelentkeznek be a Name Node-nak egy fájl keresése során, hogy annak a fájlnak egy blokkja náluk található meg (reporting). A reporting folyamatosan megy, így szerez tudomást a Name Node a túl és alul replikált blokkokról, illetve így tudja a klienst a megfelel Data Node-hoz irányítani Adatm veletek Olvasás Az olvasást egy példán keresztül mutatjuk be. A 2.4. ábrán láthatjuk, hogy a kliens el ször a Name Node-dal veszi fel a kapcsolatot (➊), akinek megmondja, hogy a Results.txt állományt szeretné olvasni. A Name Node az általa tárolt metaadatok alapján megmondja a kliensnek, hogy ennek a fájlnak három blokkja létezik, és a blokkok külön-külön melyik Data Node-okon vannak tárolva (➋). Ezután a kliens egyesével közvetlenül az adatblokkokat tartalmazó valamelyik Data Node-hoz fordul, és letölti azokat (➌) (minden adatblokk esetében az azt tartalmazó valamelyik Data Node-hoz). 10

12 ELŽADÁS 2. ELOSZTOTT RENDSZEREK, HADOOP, HDFS Írás 2.4. ábra. HDFS olvasás forrás: Az írás hasonló módon történik, mint az olvasás. A 2.5. ábrán látható, hogy a kliens el ször felveszi a kapcsolatot a Name Node-al (➊), hogy egy File.txt-t szeretne tárolni, amelyet 3 blokkra tudott felbontani. A Name Node visszaküld annyi Data Node címet, amennyi blokk szükséges (➋). A kliens ezután közvetlenül a Data Node-oknak elküldi az egyes blokkokat (➌). Ha ez készen van, akkor a Data Node-ok replikálják az új blokkokat (➍), és jelentik ezt a Name Node-nak (➎) ábra. HDFS írás forrás: 11

13 3. el adás MapReduce A MapReduce nem egy programnyelv hanem programozási modell, egy programozási keretrendszer, amely megadja, hogy hogyan hozzunk létre elosztott programokat. Kifejezetten alkalmas arra, hogy nagy adathalmazon dolgozzon elosztott módon, sok adat párhuzamos feldolgozására van kitalálva. Mivel nem egy programnyelv, ezért van megvalósítása többféle programozási nyelv esetén is, például Java, Python, R stb. A MapReduce nem csak Hadoop specikus, más adattárházakat is lehet MapReduce-ban programozni, ilyen például a MongoDB Az általános MapReduce modell Egy példán keresztül nézzük meg az általános MapReduce modell m ködését. Adott egy adathalmaz, amely h mérsékleti értékeket tárol. Határozzuk meg az évi maximum h mérsékletet. Adat: Eredmémy: év, hónap, nap, óra, perc, város, h mérséklet (nagy adathalmaz) év, maximum h mérséklet (kis adathalmaz) Ha egy gépen szeretnénk leprogramozni ezt a feladatot, akkor egy sima maximum kiválasztást kell valamilyen nyelven implementálnunk, így nem kell memóriában tartani az adatot, egyszeri végig olvasással meg tudjuk mondani a kérdésre a választ. Ha viszont már annyi adatunk van, hogy egy gépen ezt nem tudjuk tárolni, akkor valamilyen elosztott rendszeren kell az adott problémát megoldani. Ez viszont nem egyszer, ezért találták ki a MapReduce keretrendszert, amely elfedi a programozótól a párhuzamosítás feladatát (pl.: nem kell foglalkozni a gépek közötti kommunikációval, különböz hibák és kiesések kezelésével, er forrás kiozstással stb). A keretrendszer alapvet en kulcs-érték párokon dolgozik, egy szöveges tartalom esetén a kulcs az, hogy a fájl hanyadik sora, és az érték pedig a sor tartalma szövegként. A MapReduce a nevéb l adódóan két lépésb l áll egy Map-b l és egy Reduce-ból. Map: (K 1, V 1 ) list(k 2, V 2 ) Reduce: (K 2, list(v 2 )) list(k 3, V 3 ) A Map lépésben kulcs-érték pár jön bemenetként és egy újfajta kulcs-érték párt, listát fog kiadni a kimenetén. A Reduce lépés a Map kimenetén lév kulcs-érték párokat kapja meg, olyan formában, hogy az azonos kulcsokhoz tartozó összes érték egy listába kerül. 12

14 ELŽADÁS 3. MAPREDUCE Err l a lépésr l a keretrendszer gondoskodik. Végül a Reduce kimenetén újabb kulcs érték párokat fogunk kapni. Nézzük meg ez alapján az el bbi példát: Map: Reduce: (sorid, sor) (év, h mérséklet) (év, list(h mérséklet)) (év, max(h mérséklet)) A Map bemenetén kulcs-érték párokat kapunk, ami jelen esetben sorazonosító-sor párokat jelent. Érdemes kiadnunk minden sorból, hogy melyik évr l szól az a sor és mi volt az ottani h mérséklet. Ezzel lényegében a Map lépésben ebb l az adatból kisz rjük azt amire szükségünk van, és minden sorra kiadjuk ezt a párost úgy, hogy az év lesz a kulcs. A Reduce bemenetén megjelenik az év mint kulcs és az összes abban az évben mért h mérséklet. A Reduce-ból pedig kiadjuk az évet és a maximum h mérsékletet. A MapReduce keretrendszerben megírt program esetén a programozónak annyi a feladata, hogy logikailag megírjon egy Map és egy Reduce függvényt majd a keretrendszer gondoskodik róla, hogy elossza ezt a feladatot. A Map függvény bemenete lehet blokk, fájl de akár sor is és a bemeneten egymástól függetlenül soronként hajtódik végre. Tehát a Map lépés triviálisan párhuzamosítható. A Reduce lépés is, hogyha megkapja az egy kulcshoz tartozó összes elemet akkor az is egyszer en párhuzamosítható. A keretrendszer azt biztosítja számunkra, hogy amikor kijönnek ezek a kulcs érték párok akkor ez biztosan megérkezzen egy Reduce függvény bemenetére úgy, hogy az összegy jtés már tulajdonképpen megtörtént. Ha két gépr l beszélünk akkor úgy lehet elképzelni, hogy meg van írva egy Map függvény, (hogy hogyan lehet kiszedni az évet és a h mérsékleteket az adatokból) és itt a Map függvénynek meg van adva az, hogy páros évszámú adatokat az egyikhez a páratlan évszámú adatokat a másik géphez küldi. A Reduce gépen történik ezeknek a listába rendezése, kulcs alapján a beérkez adatokat rendezi és utána könnyedén létre tudja hozni ezeket a listákat. Hadoop esetén az MapReduce keretrendszer gyel a lokalitás elvére is, tehát minden adatot lehet leg ott dolgoz fel, ahol az rendelkezésre áll, így nagyban csökkentve a hálózati kommunikációt, és növelve a sebességet Feladat Vannak dokumentumaink vagy valamilyen szöveges fájlok amik soronként tetsz leges szöveget tartalmaznak, az elvárt eredmény az, hogy minden szóra mondjuk meg, hogy hányszor szerepel. Map: (sorid, sor) (szó, 1) Reduce: (szó, list(#)) (szo, #) Ahogy látunk egy szót, azt rögtön kiadjuk a Map oldalon, míg a Reduce oldalon egy sima számlálót kell megvalósítani. Ennek egy variációja, ha a Map oldalon megszámláljuk az egyforma szavakat a sorban, és a szavak számát adjuk meg a konstans 1 helyett. Az utóbbi megoldás nagyobb terhet rak a Map oldalra, viszont csökkenti a hálózati kommunikációt és a Reduce oldal terhelését Feladat Kérem az összes sort amiben szerepel a BME szó. A feladatot Map oldalon lehet a legegyszer bben megoldani. A kiadott kulcs bármi lehet. A Reduce egyszer en megismétli a kimenetén a bemenetét. 13

15 ELŽADÁS 3. MAPREDUCE Map: Reduce: (sorid, sor) (?, sor) dummy reduce Hadoop MapReduce felépítése 3.1. ábra. A MapReduce m ködése Hadoop esetén forrás: Vannak HDFS blokkjaink, a Hadoopban az esetek jelent s részében egy Map task egy HDFS blokkon dolgozik (egy HDFS blokk egy számítógépet jelent). A Map feladat soronként egymástól független, általában JAVA-ban megírt program részletr l beszélünk, indul egy JVM és az soronként elkezdi feldolgozni. A kimenetét pedig megfelel en irányítani kell a Reduce-ok felé. Az a feladata, hogy a megfelel kulcsú elemeket a megfelel Reduce-hoz juttassa el. A Map után létezik még egy Partitioning függvény ami kap egy kulcsot és megmondja, hogy melyik Reduce folyamathoz tartozik, lényegében ez egy hash függvény. A Particioning-et már a Map gépen végezzük. Tudunk csinálni egy Combiner függvényt is ami egy adatblokkon a Partitioning után lefuttat egy másik függvényt is. Tudunk írni saját particionáló függvényt is de alapértelmezetten egy egyenletes hash függvény, amely csak nagyon egyenetlen adateloszlás esetén nem m ködik jól. Ahhoz, hogy majd a Reduce-nál össze tudjuk gy jteni a kulcshoz tartozó összes értéket egy nagy Sortolást kell végrehajtani, történik egy lokális sort így lesznek kisebb eredményhalmazaink amik már rendezettek és ezt küldik el a Reducer-nek. A kisebb eredményhalmazainkat egy összefésüléses rendezéssel érdemes összef zni (természetesen err l a keretrendszer gondoskodik). A Reduce a kimenetét egy HDFS fájlba szokta tipikusan kiírni. Ahogy az architektúrából látszik egy MapReduce feladat indításának van egy elég nagy overhead-je (ez akár perces nagyságrendbe is eshet), tehát csak kell en nagy feladatok esetén érdemes használni, és interaktív feladatokra nem igazán alkalmas Hadoop Cluster Vannak hasonló szerepek mint a fájlrendszer esetében. Master szerep: JobTraceker, felel azért, hogy egy teljes job végrehajtásra kerüljön. A TaskTraceker pedig a végrehajtásért 14

16 ELŽADÁS 3. MAPREDUCE felel s, vannak neki szabad kapacitásai, Map illetve Reduce slot-ja (mennyi az kapacitása) és a JobTraceker ezzel gazdálkodik, egyszer en odaadja neki a feladatokat, hogy melyik Map függvényt melyik Reduce függvénnyel futassa le. A TaskTrackernek semmi információja nincs arról, hogy a többiek hogy állnak, néha visszaszól a JobTracekernek, hol tart a feladatával (HeartBeat). Lényegében minden szervezési logika itt is a Masterben (JobTrackerben) összpontosul. A 3.2. ábra az írás és olvasás m ködését szemlélteti. Mi történik amikor egy számítási feladatot szeretnénk végrehajtani. Van egy kliensünk, egy JobTrackerünk illetve több TaskTracker. Illetve van egy HFDS (közös fájlrendszer) amivel mindenki tud kommunikálni. Az els lépés az az, hogy a kliens bejelentkezik a JobTrackerhez, hogy szeretne egy feladatot végrehajtani. Erre válaszul kap egy azonosítót és egy jogosultságot, hogy onnantól kezdve azzal a job-al foglalkozzon. Különböz szükséges dolgokat a HDFS-re másolja a kliens (Map és Reduce kódja illetve a el re megírt library-k amiket ezek a függvények felhasználnak) lényegében a job-nak egy teljes információs csomagját felrakja a HDFS-re. A TaskTracker sebessége nagyban függ attól, hogy mekkora replikáció számot állítunk be a HDFS-en. Nagyon sokszor a replikációk számát magasra állítják, így minden TaskTracker gyorsan hozzáférhet az HDFS-en tárolt adatokhoz. A következ lépés a submit vagyis a kliens szól a JobTrackernek, hogy induljon el ez a job. A HDFS-en megvan minden információ ami a job-ot leírja, ez tipikusan egy XML vagy egy JAR fájl stb ábra. A JobTracker m ködése Hadoop esetén Amikor a JobTracker megkapja ezt a submit-ot megnézi, hogy a leíró helyes illetve az adatot is leírja amin le kell futtatni ezt a job-ot. Így ki tudja számolni hogy melyik fájl hány blokkból áll illetve hány Map és hány Reduce folyamat lesz. Rendelkezésre kell álljon minden olyan információ ami a feladatok kiosztását és elkezdését lehet vé teszi. Nagyon fontos dolog, hogy nem a JobTracker fog kapcsolatot létesíteni a TaskTrackerek-kel, hanem várja, hogy a TaskTracker-ek bejelentkezzenek (HeartBeat)és elküldjék mennyi üres slot-juk van illetve az egyes taskok, hogy állnak náluk. A JobTracker tudja, hogy az egyes 15

17 ELŽADÁS 3. MAPREDUCE adatblokkok hol helyezkednek el és melyik gépen vannak HDFS-en, továbbá tud arról, hogy milyen aktív jobok vannak és melyek azok amelyek nem futnak sehol és erre válaszul ad egy task-ot a TaskTrackernek amiben benne van, hogy a HDFS-r l hol tudja elérni annak a task-nak az információját. A JobTracker kiadja a task-ot a TaskTracker begy jti az információkat, hol érhet el a Map függvény illetve a különböz Partícionáló függvényeket és ezeket a szükséges adatokat a HDFS-r l betölti. Így m ködik minden HDFS esetén, amíg vannak szabad Taskok amiket végre kell hajtani, addig mindegyik bejelentkezésnél meg fogják kapni a feladatokat. Ha pedig végeznek küldenek egy HeartBeatet, hogy ez a task készen van. Adott esetben egy Map task szól hogy készen van és amikor a Reduce ezt kiolvasta akkor lesz befejezettnek tekintve a Map-nek a feladata Meghibásodások Ha meghal egy task akkor nincs semmi baj mert újraindítja azt a taskot a TaskTracker. Sajnos a JobTracker nem tudhatja, hogy egy-egy task azért halt meg mert rossz a felhasználó kódja, elment az áram, elromlott egy switch stb. Ilyenkor van egy limit, hogy hányszor lehet újraindítani azt a taskot. Igyekszik egy másik Node-on újraindítani az elhalt taskot a JobTracker. Létezik egy spekulatív futtatás nev eljárás, miszerint ugyanazt a taskot több TaskTrackeren is futtatja. Ennek az a célja, hogy ha bármikor van egy olyan node ami túl lassú, akkor az ne blokkolja az egész rendszert ezért több példányon elindul és ha valami befejez dött a másikat eldobja (ezt leginkább az utolsó task-ok esetén szokta csinálni a JobTracker). Ez abban az esetben jó, ha viszonylag kihasználatlan a cluster és van szabad er forrás. Ha egy TaskTracker kiesik akkor nem fog jönni t le több HeartBeat ilyenkor a JobTracker azt látja, hogy az összes Task ami ott futott elhalt és újraindítja máshol. Ha a JobTracker áll meg, akkor köztes állapotban maradnak a Nodeok és ha újra elindul akkor elölr l indulnak az adott task-ok. Erre megoldás a redundancia alkalmazása, létezik egy High Availability konguráció ahol két JobTracker van. 16

18 4. el adás MapReduce programozási minták, Streaming feladat Adott egy adathalmaz, amely h mérsékleti értékeket tárol. Határozzuk meg egy város átlagh mérsékletét egy adott hónapban. Adat1: Eredmény: év, hónap, nap, óra, perc, város, h mérséklet város, hónap, átlagh mérséklet Map: Reduce: (sorid, sor) ((város + hónap), h mérséklet) ((város + hónap), list(h mérséklet)) ((város + hónap), avg(h mérséklet)) A szövegfájloknál a bemeneti kulcs-érték szinte mindig (sor, sorid) lesz, amikor valamilyen aggregálást végzünk. Ha SQL lekérdezést készítenénk erre a feladatra, akkor a Map kimenetének a kulcsa az lesz, amit a GROUP BY mögé írnánk, ami szerint aggregálunk. Ezért lesz a Map kimenetének kulcsa a (város + hónap). A keretrendszer automatikusan ezen kulcs alapján csinál egy listát, amely a Reduce bemenete lesz majd, így egy kulcshoz tartozó értékek egy Reducehoz kerülnek. A Reduce pedig kiszámolja az egy kulcshoz, azaz a (város + hónap)-hoz tartozó átlagh mérsékletet feladat Adott egy adathalmaz, amely egy weblog adatait tárolja. Határozzuk meg hogy melyik nap hány oldalletöltés volt. Adat2: Eredmény: dátum, id, sessionid, url dátom, oldalletöltések száma Ha ez egy strukturált SQL tábla lenne, akkor a következ lekérdezéssel lehetne a választ megadni: SELECT date, COUNT(*) FROM table GROUP BY date A szövegfájloknál a bemeneti kulcs-érték szinte mindig (sor, sorid) lesz, amikor valamilyen aggregálást végzünk. A GROUP BY mögött a dátum van, ezért a Map kimeneti kulcsa a 17

19 ELŽADÁS 4. MAPREDUCE PROGRAMOZÁSI MINTÁK, STREAMING Map: (sorid, sor) (dátum, 1) Reduce: (dátum, list(1)) (dátum, cnt(1)) dátum lesz, és csak meg kell számolni, hogy abból hány darab van. A Reduce-nak már csak ezeket az 1-eseket kell megszámolnia feladat Az adathalmaz ugyanaz, mint az el bb, de most azt szeretnénk megtudni, hogy hány egyedi látogató volt az oldalon egy napon. Egyedi látogatás alatt az egy sessionid-hoz tartozó lekéréseket értjük. Adat2: Eredmény: dátum, id, sessionid, url dátum, egyedi látogatószám Ha ez egy strukturált SQL tábla lenne, akkor a következ lekérdezéssel lehetne a választ megadni: SELECT date, COUNT (DISTINCT(sessionID)) FROM table GROUP BY date Map: Reduce: (sorid, sor) (dátum, sessionid) (dátum, list(sessionid)) unique (dátum, cnt(distinct(session))) A szövegfájloknál a bemeneti kulcs-érték szinte mindig (sor, sorid) lesz, amikor valamilyen aggregálást végzünk. A Map kimeneti kulcsa a dátum lesz és a Reduce fogja az egyediséget garantálni (unique). Az egy Reduce folyamatnak kell az egy dátumhoz tartozó összes kérést a memóriában tartani és ez sz k keresztmetszet lehet, ha egy napon nagyon sok adat keletkezett, akkor a folyamatunk nem tud skálázódni. Ezért érdemesebb szétbontani ezt két külön MapReduce folyamatra: Map 1: (sorid, sor) ((dátum + sessionid), 1) Reduce 1: ((dátum + sessionid), list(1)) ((dátum + sessionid), 1) Map 2: ((dátum + sessionid), 1) (dátum, 1) Reduce 2: (dátum, list(1)) (dátum, cnt(1)) Az els MapReduce folyamat kimeneti kulcsa a (dátum + sessionid), így minden naphoz egy sessionid csak egyszer tartozhat. A második folyamatban már csak meg kell számolnunk, hogy az adott dátumhoz hány bejegyzés található. Ezzel módszerrel skálázhatóvá tettük a megoldást még akkor is, ha egy naphoz nagyon sok adat tartozik, mert nem kell egy Reduce folyamatnak a memóriában tartani az egy naphoz tartozó összes adatot feladat Az adathalmazunk az el bb már megismert weblog adatai, amihez felveszünk még egy kapcsolótáblát, amely megmondja, hogy melyik sessionid melyik felhasználóhoz tartozik. Gyakori feladat, hogy a két táblát össze kell illeszteni (join). 18

20 ELŽADÁS 4. MAPREDUCE PROGRAMOZÁSI MINTÁK, STREAMING Adat2: Adat3: Map: Reduce: dátum, id, sessionid, url - LEFT sessionid, userid - RIGHT (sorid, sor) (sessionid, (L/R + sor)) (sessionid, list(l/r + sor) list(sessionid, (sorr + sorl)) Erre az egyik lehet ség a REDUCE-SIDE join: Az Adat2 halmazt nevezzük el baloldali táblának, az Adat3 halmazt pedig nevezzük el jobb oldali táblának. A Map bemenete a mindkét tábla soraiból adódik, de tudnia kell, hogy melyik táblából érkezett az adat. Ha SQL lekérdezést készítenénk erre a feladatra, akkor a Map kimenetének a kulcsa az lesz, ami alapján végeznénk a join m veletet. Ezért a Map kimenetén a kulcs a sessionid lesz, az érték a sor tartalma és hogy melyik táblából származik (L/R). A Reduce folymat a sessionid-hoz tartozó értékeket a memóriában tartja és úgy végzi el az összeillesztést (például egy for ciklussal összeilleszt mindenkit mindenkivel). Ez akkor okozhat problémát, ha az összeilleszt elemhez (jelen esetben a sessionid-hoz) nagyon sok adat tartozik, amely nem fér el a Reducer memóriájában. A másik hibája ennek a megoldásnak, hogy lehet olyan sessionid, amir l nincs rekordunk a másik táblában. Ekkor ezt feleslegesen küldjük át és generálunk vele nagy adatforgalmat. (Sok esetben el fordul, hogy a felhasználó nem lép be az adott oldalra, így csak sessionid-t tudunk hozzá társítani, de userid-t nem.) Ez a probléma egy másfajta joinnal elkerülhet. A Map kimenetén nem adjuk ki már azokat az elemeket, amikhez nem lehet másik táblából adatokat társítani, ez lesz a MAP- SIDE (broadcast) join: Map: (sorid, sorl) (sorid, (sorl + sorr)) Reduce: - A joinok nagy része olyan szokott lenni, hogy van egy nagy táblánk és van egy kisebb táblánk, például minden felhasználóhoz egy rekord. Ha ez a kisebb tábla elfér a memóriában, akkor el ször minden Mapnek elküldjük ezt a táblát, hogy csináljon bel le egy sessionid-userid struktúrát a memóriában. Eztán a másik táblából átküldjük a sorokat és megnézzük, hogy melyiket kell ehhez hozzáilleszteni. Így a Map bemenete csak a sorid és a bal oldali tábla sorai lesznek, míg a jobb oldali tábla a Map memóriájában van. Az összeillesztés már a Map lépésben megtörténik, tehát nincs szükség Reduce lépésre. Általában ez a két join típus használatos, mindkett nek megvannak a saját korlátai, de ha van valamilyen plusz információnk az adatok szerkezetér l vagy rendezettségér l, akkor gyorsabb és jobban skálázódó join függvényeket is tudunk készíteni. További MapReduce példák az A. függelékben találhatóak Streaming Java-ban MapReduce kódot írni nehézkes, mert meglehet sen sok kódot kell írni, ezért valós igény az, hogy ne csak Hadoop-Java API-val írhassunk kódot. Erre van egy olyan megoldás, aminek a neve Hadoop-streaming: bármilyen nyelvben meg lehet írni MapReduce függvényeket, amelyek a standard bemenetr l (stdin) tudnak olvasni és standard kimenetre (stdout) tudnak írni. A keretrendszer a standard bemenetre fogja küldeni az 19

21 ELŽADÁS 4. MAPREDUCE PROGRAMOZÁSI MINTÁK, STREAMING adatot és a standard kimeneten fogja várni a függvény eredményét. A kulcs-érték párok szeparálása soronként tabbal történik. A következ példán keresztül nézzük meg, hogy ezt hogyan lehet megvalósítani pythonban. Bemenet: Kimenet: dátum, h mérséklet adott évi maximum h mérséklet Ennek a MapReduce megoldása: Map: Reduce: (sorid, sor) (év, h mérséklet) (év, list(h mérséklet) ) (év, maxh mérséklet) A Map és a Reduce függvények megvalósítása pythonban: 1 for line in sys. stdin : 2 vals = line. split (",") 3 print vals [0] \t vals [1] 4.1. Kódrészlet. map.py 1 last_key = None 2 max_ val = for line in sys. stdin : 5 (key, value ) = line. split ("\t") 6 if key == last_key : 7 if max_ val < value : 8 max_ val = value 9 else : 10 print last_key max 11 max_ val = last_key = key 4.2. Kódrészlet. reduce.py 4.6. Adattömörítés Általános felhasználás mellett a Hadoop keretrendszer inkább tárhely, mintsem processzorigényes. Nagyon nagy adathalmazokat kell tárolnunk, illetve egy Map és egy Reduce lépés között nagyon sok adatot kell mozgatnunk. Ezért ezeket a lépéseket érdemes optimalizálni, amelynek az els dleges módja az adattömörítés. Adattovábbítás a hálózaton Snappy tömörítéssel történhet, mivel nagyon kicsi a CPU overheadje. Nem olyan hatékony tömörít algoritmus, mint például a gzip, de streamként tud tömöríteni és így elég sokat tud spórolni az adatátvitelen (20-30 %-os teljesítménynyereség). A másik lehet ség a tömörített fájlok használata. A rendszer automatikusan felismeri a tömörített fájlokat és kitömöríti a különböz feladatok el tt. A merevlemezen történ tároláshoz a következ tömörítéseket szokták alkalmazni: 20

22 ELŽADÁS 4. MAPREDUCE PROGRAMOZÁSI MINTÁK, STREAMING ˆ gzip: Tegyük fel hogy van egy 1 GB-os fájlunk ami 16 blokkból áll és tömörítve van. A blokkméret 64 MB, így ekkora részekre van vágva a tárolónkon. Ha csak egy rész kell a fájlból, akkor is ki kell ki kell tömöríteni az egészet, hogy ki tudjuk olvasni bel le az adatot. Egy Map folyamat el tt mindenhova el kellene juttatni a teljes fájlt, hogy az adott blokkot a Map fel tudja dolgozni. Ezért a gzip esetén a fájlokat úgy érdemes szervezni, hogy a fájlok a blokkmérettel azonosak legyenek. ˆ bzip2: Olyan tömörítési eljárás, amelyet ha bárhol elkezdünk olvasni, akkor is ki lehet olvasni a fájl tartalmát, de ezt nem annyira használják, mert eléggé lassú és nem annyira hatékony. ˆ lzo: Az ezzel a tömörített fájlt sem lehet bárhonnan olvasni alapesetben anélkül, hogy ki kellene az egész fájlt tömöríteni, de emellé kitaláltak egy metaadat fájlt, amely tartalmazza a Map folyamat számára, hogy mely blokkot kell kitömöríteni. A legegyszer bb eset, ha nyers adatokkal dolgozunk, de nagyon nagy fájlméretek esetén már szükségessé válik a tömörítés, akkor ha lehetséges a gzip-es tömörítést érdemes alkalmazni a blokkmérettel azonos nagyságú fájlokkal. Ezen kívül sok kicsi fájl összevonására még a SequenceFile formátum is használatos, ami egy Hadoop specikus formátum, leginkább a tar formátumra hasonlít. 21

23 5. el adás Hadoop csomagok, SQL for Hadoop: Hive 5.1. Hadoop csomagok Minden csomag vagy projekt opensource, Apache oldalán megtalálható a megfelel aloldalon forráskóddal és dokumentációval együtt Flume Logok tárolása és gy jtése a szerepe, képes HDFS-en tárolni a logokat. Egy általános use-case, hogy van egy webes cég ahol kiszolgálják felhasználókat. Minden webszerveren indítanak egy Flume ágenst aminek van valami bemeneti pontja, és bármilyen üzenetet kap onnantól az feladat az, hogy továbbítsa ezt az üzenetet. Ez egy megbízható logolási rendszer. Fontos, hogy a logok megmaradjanak ugyanis kés bb ezek alapján lehet elemezni a program m ködését és a felhasználói élményt. Megkönnyíti, hogy bármilyen számítógépt l logokat gy jtsünk és nem kell a webalkalmazásnak azzal foglalkoznia, hogy a logokat elküldje, a logszerver megkapja, hanem mindezt átveszi a Flume. Nem egy speciális Hadoop csomag de a Hadoophoz nagyon sokan használják. Fontos megjegyezni, hogy ez egy egyirányú adat közvetítés Sqoop Különböz SQL alapú adatbázisokkal tud adatot cserélni. Valamilyen JDBC kapcsolaton keresztül elér egy adatbázist és képes arra, hogy ha valahol van egy 10 gépb l álló MySQL cluster akkor a sqoop, ezt a táblát át tudja másolni a HDFS-re. Ilyenkor több Mapet elindít és elosztottan tud másolni adatbázisok és Hadoop között. Ez természetesen odavissza m ködik és az a nagy el nye, hogy habár ezt bármilyen adatbázissal meg tudná csinálni, képes arra, hogy párhuzamosítsa ezt feladatot így sokkal gyorsabb. A folyamat lényegében az, hogy indul egy MapReduce job a JDBC connection kiépül és jönnek az adatok Hive Ez a csomag már az elemzési réteghez tartozik míg a korábbiak az adatelérési rétegben nyújtanak szolgáltatásokat. Tulajdonképpen egy SQL lekérdez nyelvet nyújt Hadoop 22

24 ELŽADÁS 5. HADOOP CSOMAGOK, SQL FOR HADOOP: HIVE felé. A Hive-nak az a feladata, hogy SQL lekérdezéseket lehet vele végrehajtani. Az SQL lekérdezésb l csinál egy MapReduce job-ot és ezt lefuttatja a clusteren majd visszaadja strukturált táblázatos formában az eredményeket. Ez kényelmes mivel csak SQL kifejezéseket kell írni és nem kell gondolkozni a Map és a Reduce függvényeken. Sok mindenben különbözik egy hagyományos adatbázisnak az SQL lekéréseit l, sokkal több id be telik egy lekérdezés, ezért tipikusan analitikus elemzésekhez használják Pig Ez egy szkript nyelv ami céljában hasonlít az SQL-hez. A feladata lényegében ugyanaz, MapReduce job-okat csinál a szkriptb l. Nagyon rugalmasan kezeli a sorok feldolgozását bármit megeszik. Preziben szinte kizárólag piget használnak, viszonylag könnyen tanulható és hasonló szerepe van mint a Hive-nak, hogy helyetted MapReduce jobokat hozzon létre HBase Minden amir l eddig szó volt az HDFS és MapReduce alapokon m ködött. Az HBase egy specialitása, hogy nem indít MapReduce jobot mivel az HBase az egy kulcs-érték adatbázis mely megvalósítja a NoSQL paradigmát. A NoSQL (egyes értelmezések szerint Not only SQL, azaz nem csak SQL, más értelmezés szerint egyszer en csak nem SQL) adatbázis szoftverek gy jt neve. A NoSQL adatbázisok els sorban nem táblázatokban tárolják az adatokat és általában nem használnak SQL nyelvet lekérdezésre. Ez egy kulcsérték adatbázis amelynek hatalmas el nye az, hogy nem MapReduce alapokon dolgozik, hanem közvetlen hozzáférése van a HDFS-hez. Így képes milliszekundumos lekérések végrehajtására (sokkal gyorsabb mint a Hive) Mahout Ez egy szintén népszer csomag, statisztikai gépi tanulási algoritmusokat tartalmaz, osztályozó algoritmusok, gyakori mintakeres, szöveg osztályozásra használják sokan Zookeeper Létezik egy állatgondozó nev csomag (Zookeeper). Minden egyéb Hadoop csomag felhasználja ennek a szolgáltatásait, mivel egy elosztott rendszerben elég nehéz a konkurens dolgoknak a kezelése. Ha két kliens ugyanazt a HDFS blokkot akarja írni vagy ugyanazt a táblát akarják írni, ezek nem triviális problémák. Ezeket a szervezési koordinációs dolgokat valósítja meg a Zookeeper. 23

25 ELŽADÁS 5. HADOOP CSOMAGOK, SQL FOR HADOOP: HIVE 5.1. ábra. A Hadoop csomagok felépítése forrás: SQL for Hadoop: Hive A Hadoop most már lassan 10 éves, de kezdetben eléggé üres volt és kevés volt hozzá az eszköz. Szükség volt valami egyszer felületre amit tömegesen tudnak használni az emberek. A Facebook hozta létre, kellett egy SQL alapú csomag mert a JAVA MapReduce programozás nem igazán m ködött és eléggé nehéz volt. Elkezdték a HIVE fejlesztését ami egy SQL interface a hadoopra (egy plusz réteg de nem tárház). Maga a Hadoop platformot azért választották mert olcsó és jól skálázódik A Hive felépítése 5.2. ábra. A Hive m ködése forrás: Van egy Driver ami a fordításért felel és az SQL kifejezéseket fordítja MapReduce jobokra. A következ lépcs az optimalizálója, ezt kitalálja maga, hogy hogyan legyen hatékonyabb a lekérdezés. (minden SQL motorban található egy ilyen). Az Executor 24

26 ELŽADÁS 5. HADOOP CSOMAGOK, SQL FOR HADOOP: HIVE pedig az aki operatívan ezt a futtatást elvégzi. Kommunikál a MapReduce-szal és elvégzi ennek a futtatását. Ezen kívül meg találhatók a következ elemek még benne: Command Line Interface (CLI), JDBC, ODBC kapcsolat távoli elérésekhez. Létezik továbbá egy MetaStore nev komponens is amelyben olyan bejegyzések vannak, hogy milyen tábláink vannak, milyen a fájlok formátuma, mi a szeparátor karakter, milyen típusú adatok illetve mez k vannak (ez írja le, hogy lehet a szöveges fájlokat adatbázis táblaként értelmezni). Az esetek túlnyomó többségében ez egy MySQL adatbázis amely általában kis méret, egy gépen futó SQL adatbázis. Amikor err l a számítógépen elindítanak egy lekérést akkor ez végig megy az összes említett komponensen és a végén megkapjuk az eredményeket. Furcsa lehet azonban, hogy adatot feltöltünk és utólag valami sémát deniálunk rá, ez az eddigi tudásunkkal pont ellentétesen m ködik. Ezt a folyamatot úgy hívják, hogy schemeon-write. Amikor bekerül az adat akkor ellen rzöm a sémát (amikor a táblába betöltöm) és onnantól tudom, hogy jó az adat ami bekerül a táblába. A scheme-on-read pedig kiolvasáskor ellen rzi a sémát, ha rossz az adat azokon a helyeken null-t fogunk visszakapni nem hibát. További különbségek az SQL és a Hive között: nincs olyan hogy UPDATE. Egyszer en nincs rá szükség, logokat gy jtünk és miért akarnánk frissíteni a tegnapi adatokat (persze ha meg akarjuk hamisítani akkor lehet) de ráadásul az adatok is blokkokban vannak tárolva és egy blokkban egy adatot módosítani nem éri meg. Indexeléssel vannak közepesen kiforrott próbálkozások, de alapvet en adattáblák végig olvasására találták ki és nem arra, hogy egy felhasználó adataival m veleteket végezzünk, majd pedig ezeket az adatokat újra beleírjuk az adatbázisba. 25

27 6. el adás Pig programozás 6.1. Bevezetés A Pig egy magas szint, az SQL nyelvhez hasonló szkript nyelv, amit az Apache Hadoop használ MapReduce job-ok létrehozására. Lehet vé teszi komplex adat transzformációk írását Java tudás nélkül. A nyelv eszközkészlete teljes, ezért mindenféle adatmanipulációs m veletet tudunk vele végrehajtani. A felhasználó által deniált függvényeken keresztül (User Dened Functions - UDF), pedig bármilyen kódot meghívhatunk különféle nyelvekb l mint például: JRuby, Jython és Java. A scriptünket más nyelvekbe is beágyazhatjuk, ennek eredményeképp komponensként használhatjuk, hogy nagyobb rendszereket készítsünk, és még komplexebb alkalmazásokat, amik releváns problémákra adnak megoldást. A Pig többféle forrásból származó adattal tud dolgozni, beleértve strukturált és strukturálatlan adatokat, az eredményt pedig eltárolhatjuk a HDFS-en. A Pig szkripteket MapReduce job-okra fordítják, amik az Apache Hadoop klaszteren futnak. Ebben a fejezetben követve a Hortonworks leírását (Hogyan használjuk az alapvet pig parancsokat ), átnézzük az alapvet m veleteket, és a szkript nyelv használatát. A következ területeket érintjük: ˆ Egy reláció készítése séma nélkül ˆ Egy új reláció készítése egy létez relációból ˆ Két reláció illesztése (Join m velet) ˆ Adatok rendezése az ORDER BY használatával ˆ Az adatok sz rése és csoportosítása a GROUP BY használatával A leírás a Hortonworks rendszeren lett elkészítve, de valószín könnyedén átültethet egyéb rendszerekre is A fájlok feltöltése Els ként szerezzük be a szükséges adatokat a feladat elvégzéséhez. Err l a linkr l le tudjátok tölteni a szükséges adatokat, amik a New York Stock Exchange adatait tartalmazzák 2000 és 2001-es évb l. infochimps_dataset_4778_download_16677-csv.zip 26

28 ELŽADÁS 6. PIG PROGRAMOZÁS Töltsük fel az adatokat a File Browser segítségével ábra. Adatok feltoltese 6.3. A script megírása A Pig felhasználói felületét a Pig ikonra kattintással tudjuk el hozni. A baloldali panelen a szkriptjeink listáját láthatjuk, a jobb oldalon pedig a szerkeszt felületet, a szkriptek írásához és módosításához. Egy speciális funkció az oldal alján található, mégpedig a Pig helper, ami templateket nyújt a Pig kifejezésekhez, függvényekhez, I/O m veletekhez, stb. Az oldal alján látható egy státusz felület, amikor futtatjuk a szkriptet itt láthatjuk majd az eredményeket és a log fájlokat. Adjunk egy nevet a szkriptnek és kezdjük el a szkript írását egy reláció létrehozásával ábra. Pig script szerkeszt felülete Reláció deniálása Ebben a lépésben beolvassuk az adatokat és létrehozunk egy relációt. 1 STOCK_A = LOAD 'nyse / NYSE_daily_prices_A. csv ' using PigStorage ( ','); 2 DESCRIBE STOCK_ A ; Az els sorban deniálunk egy relációt STOCK_A néven és beolvassuk a *.csv fájlunkat, a második sorban pedig kiírjuk a STOCK_A relációt. A "Save" gombbal elmenthetjük 27

29 ELŽADÁS 6. PIG PROGRAMOZÁS a szkriptet az "Execute" gombbal pedig futtathatjuk. Ez a m velet egy, vagy több MapReduce job-ot fog indítani. Egy kis id múlva a script futni kezd, és az "Execute" gomb egy "Kill" gombra fog változni. Ezzel megállíthatjuk a szkript futását. A Progress bar mutatja, a folyamat el rehaladását. Ha kék a színe, akkor a job fut. Ha piros a színe, akkor valami probléma, vagy hiba történt. Ha zöldre vált, a szkript helyesen lefutott. Az eredményt megtekinthetjük a zöld dobozban a Progress bar alatt, vagy el is menthetjük. Jelenleg a STOCK_A relációnak nem lesz sémája, mert nem deniáltunk neki sémát mikor betöltöttük az adatot a STOCK_A relációba ábra. A séma kiírása Reláció deniálása sémával Módosítsuk az el z szkriptünknek az els sorát és adjuk hozzá a "AS" kifejezést, hogy egy sémát deniáljunk az adatokra. 1 STOCK_A = LOAD ' NYSE_daily_prices_A. csv ' using PigStorage ( ',') AS ( exchange : chararray, symbol : chararray, date : chararray, open : float, high : float, low : float, close : float, volume :int, adj_close : float ); 2 DESCRIBE STOCK_ A ; Mentsük el és futtassuk a szkriptet. A kimeneten látható lesz a séma, amit deniáltunk ábra. A létez séma kiírása Reláció létrehozása egy másik relációból Egy létez relációból tudunk új relációkat létrehozni. Például szeretnénk egy B relációt készíteni, ami a STOCK_A relációnak az els 100 bejegyzését tartalmazza. Adjuk hozzá a szkriptünkhöz a következ sort. 28

30 ELŽADÁS 6. PIG PROGRAMOZÁS 1 B = LIMIT STOCK_ A 100; DESCRIBE B; 2 DESCRIBE B; Mentsük el és futtassuk a szkriptünket. Láthatjuk, hogy a B relációnak ugyanaz a sémája, mint a STOCK_A relációnak, mivel egy részhalmaza a STOCK_A relációnak Adatok kiírása Az adatok kiírásához használjuk a DUMP parancsot a Pig szkriptünkben. A szkriptünk végéhez f zzük hozzá a következ sort. Mentsük el és futtassuk újra a szkriptünket. 1 DUMP B; Oszlop kiválasztása a relációból Töröljük az eddig megírt szkriptet, mivel a következ kben nem lesz rá szükségünk. Az egyik el nye annak, hogy a Piget használjuk az adatok transzformációja. Új relációkat tudunk létrehozni, a meglév relációkban lév mez k kiválasztásával, a FOREACH parancs használatával. Deniáljunk egy új relációt C néven, ami csak a symbol, adat és close mez ket tartalmazza a B relációból. A teljes kód a következ : 1 STOCK_A = LOAD ' NYSE_daily_prices_A. csv ' using PigStorage ( ',') AS ( exchange : chararray, symbol : chararray, date : chararray, open : float, high : float, low : float, close : float, volume :int, adj_close : float ); 2 B = LIMIT STOCK_ A 100; C = FOREACH B GENERATE symbol, date, close ; 3 DESCRIBE C; Mentsük és futtassuk a szkriptünket, a kimeneten a következ fogjuk látni Adatok írása a HDFS-re Ebben a részben megnézzük, hogy hogyan tudunk írni a HDFS-re a szkriptünkb l. A következ parancsot írjuk bele a szkriptünkbe: 1 STORE C INTO ' output /C '; Ezúttal is indulni fog egy MapReduce job, így várnunk kell egy kicsit az eredményre. Amikor a Job futása befejez dik nyissuk meg a File Browsert, és keressük meg az újonnan készített könyvtárunkat, aminek a neve output. Ebben lesz egy alkönyvtár C néven, amiben találni fogunk egy part-r nev fájlt. Ha rákattintunk láthatjuk a tartalmát Két reláció illesztése (Join m velet) Készítsünk egy új Pig szkriptet Pig-Join néven, majd hozzunk létre egy új relációt DIV_A néven. Ezután illesszük a két relációt A és B a symbol és dátum mez k alapján, majd 29

31 ELŽADÁS 6. PIG PROGRAMOZÁS 6.5. ábra. Adatok kiírása a HDFS-re írjuk ki az új reláció sémáját. 1 STOCK_A = LOAD ' NYSE_daily_prices_A. csv ' using PigStorage ( ',') AS ( exchange : chararray, symbol : chararray, date : chararray, open : float, high : float, low : float, close : float, volume :int, adj_close : float ); 2 3 DIV_A = LOAD ' NYSE_dividends_A. csv ' using PigStorage ( ',') AS ( exchange : chararray, symbol : chararray, date : chararray, dividend : float ); 4 5 C = JOIN STOCK_ A BY ( symbol, date ), DIV_ A BY ( symbol, date ); 6 DESCRIBE C; Ha meggyeljük a C reláció mind a két relációból tartalmazni fogja az összes mez t. A DUMP paranccsal tudjuk kiírni a C reláció tartalmát Adatok rendezése Az ORDER BY parancs segítségével tudjuk a relációt rendezni egy, vagy több mez jére. Készítsünk egy új Pig szkriptet Pig-Sort néven, majd adjuk ki a következ parancsokat az adatok rendezéséhez. 1 DIV_A = LOAD ' NYSE_dividends_A. csv ' using PigStorage ( ',') AS ( exchange : chararray, symbol : chararray, date : chararray, dividend : float ); B = ORDER DIV_ A BY symbol, date asc ; 2 DUMP B; Adatok sz rése és csoportosítása A GROUP paranccsal tudjuk egy mez re csoportosítani az adatokat, a FILTER paranccsal pedig sz rhetjük ket egy mintára. Készítsünk egy új Pig szkriptet Pig-group néven és írjuk be a következ parancsokat a szerkeszt felületen. 30

32 ELŽADÁS 6. PIG PROGRAMOZÁS 1 DIV_A = LOAD ' NYSE_dividends_A. csv ' using PigStorage ( ',') AS ( exchange : chararray, symbol : chararray, date : chararray, dividend : float ); 2 B = FILTER DIV_A BY symbol == 'AZZ '; 3 C = GROUP B BY dividend ; 4 DESCRIBE C; 5 DUMP C; 6.4. További források Az alapvet parancsok átnézése után, ha szeretnél jobban elmélyedni a Pig szkriptek írásában, akkor remek elfoglaltság a Pig dokumentációjának az átolvasása, amelyet a következ linken értek el. 31

33 7. el adás Hadoop klaszterek kongurációja és üzemeltetése Egy Hadoop cluster felállítása annyira nem is egyszer feladat, mint ahogy azt gondolnánk. Sok szempontot gyelembe kell vennünk az elosztott rendszerek megtervezésekor Hardver A cluster legfontosabb épít elemei a számítógépeket (Node-okat) kiszolgáló hardverek. Minden Node-ként egy olyan hardverrel felszerelt gépet kell üzemeltetnünk, amely kell en sok háttértárral rendelkezik, és a számítási feladatokhoz er s CPU és jelent s memóriamennyiség jellemzi. A hardverméretezést egy példán keresztül mutatjuk be. Tegyük fel, hogy egy cég át szeretne térni Hadoop cluster-es szerverparkra, amelyen naponta 100 GB új bejöv adatot szeretnének tárolni. Ezt a mennyiséget egy évre levetítve 36 TB-ra becsülhet a tárolni kívánt adat. Tudjuk, hogy a Hadoop cluster egy adatot 3 különböz helyen tárol el a replikáció miatt, tehát ez a mennyiség 100 TB lesz. Az egyéb dolgok és elemzések céljából +25%-kal számolhatunk, tehát 125 TB-nál tartunk. A Hadoop rendszer elég sok mindenr l készít log-ot, valamint emellett minden gépen kell operációs rendszernek futnia, tehát szükség van olyan adatok tárolására is, amik nem a HDFS-en belül találhatóak. Erre +10%-ot számolunk, tehát nagyjából 140 TB tárhelyre van szükségünk. Egy átlagos szervergépben 4-6 HDD található, ha 3 TB-os egységekben gondolkozunk, akkor ez TB. Ha a fentebbi adatmennyiséget nézzük, akkor 10 gépes cluster-t kell felállítanunk. Mivel tipikusan az IO a sz k keresztmetszet Hadoop esetén, ezért érdemesebb több kisebb HDD-t berakni, mint kevés extrém nagyot. Hozzá kell tennünk, hogy ez az adatmennyiség nem tömörített, tömörítéssel sokkal kevesebb adatmennyiséggel is lehet számolni. Például egy olyan log esetében, ahol ugyanaz az érték sokszor szerepel, vagy ismétl dik, ott gzip esetén akár 2-3-szoros tömörítési ráta is elérhet, ezzel rengeteg helyet tudunk spórolni. Memória tekintetében a master szerepeket birtokló gépek esetében az ajánlott mennyiség 24 GB, a CPU-nak pedig érdemes 8 magost választani (2013-as adatok alapján). Emellett a fontos szerepeket kiszolgáló gépek esetében érdemes egy bizonyos védelmet is beiktatni (pl. RAID). Az egyszer Data Node-ok esetében elég egy 4 magos CPU, és 8-24 GB memória. A Hortonworks által ajánlott hardverméretezésr l a 7.1. táblázatban találhatunk részletesebb bemutatást. 32

34 ELŽADÁS 7. HADOOP KLASZTEREK KONFIGURÁCIÓJA ÉS ÜZEMELTETÉSE Machine Type Workload Pattern/ Cluster Type Storage Processor (# of Cores) Memory (GB) Network Balanced workload Four to six 2 TB disks One Quad 24 Slaves HBase cluster Six 2 TB disks Dual Quad 48 1 GB Ethernet all-to-all Masters Balanced and/or HBase cluster Four to six 2 TB disks Dual Quad ábra. Hardver méretezés ajánlások 5-50 gépes cluster-ekhez Operációs rendszer Az operációs rendszert tekintve az összes Hadoop disztribúció UNIX-os környezetben használható, ezekre lett alapvet en kialakítva. Legtöbbet használt Linux disztribúciók Hadoop cluster-ekhez a RedHat, és a CentOS. Céges környezetben leginkább az el bbivel találkozhatunk a legtöbbször, míg otthoni felhasználók körében az Ubuntu, és különböz Debian verziók az elterjedtebbek. Mivel nincs nagy különbség Hadoop szempontjából a különböz operációs rendszerek között, ezért általános ajánlás, hogy a támogatási id intervallum és a rendszergazdák tapasztalata alapján érdemes OS-t választani. Létezik emellett egy Windows Server számítógépekre átalakított verzió is, amelyet újszer sége és kisebb közösségi támogatása miatt kockázatos lehet használni ábra. Hadoop futtatására alkalmas operációs rendszerek 7.3. Hálózat A jó és alapos hálózati beállítások rendkívül fontosak, mivel ezek szokták okozni a legtöbb problémát és furcsa hibajelenséget telepítés és üzemeltetés közben. Emiatt fontos, hogy minden számítógépnek tudnia kell a saját host nevét, IP címét. DNS és reversedns-nek hibátlanul kell m ködnie privát címek esetén is, mert léteznek olyan feladatok, ahol a Node-tól a rendszer megkérdezi a host nevét, és erre neki válaszolnia kell tudnia, hiszen egyéb esetben mondjuk nem tud az a feladat lefutni, és rengeteg hibát kaphatunk. A cluster általában bels hálózaton van, és nincs küls interfésze, tehát csak a bels hálón érhet el. Erre a bels hálóra pl. VPN-el szokás bejelentkezni, és így használható a cluster. Ennek az a célja, hogy a küls támadásokat teljesen ki tudjuk sz rni, és csak akkor törhet fel a rendszer, ha valaki a bels hálóra be tudott jutni. 1 ajánlása 33

35 ELŽADÁS 7. HADOOP KLASZTEREK KONFIGURÁCIÓJA ÉS ÜZEMELTETÉSE 7.4. Disztribúció Mivel a Hadoop-nak sok cég által elkészített változata van, így ezek különböz egyéb szolgáltatásokkal vannak kiegészítve, és más-más feladatokra vagy akár platformokra vannak optimalizálva. A legelterjedtebb a Cloudera (CDH) által készített verzió, amely egy olyan komplex segédszolgáltatásokat nyújtó programokkal, illetve webes felülettel rendelkezik, amelyekkel nagyon könny kezelni az egyedi Node-okat, és a különböz keretszolgáltatásokat, amelyek segítik a rendszer összhangban való m ködését. Ezen felül vannak az Intel, Amazon, Hortonworks által készített verziók is. Általában minden verzióból létezik zet s és ingyenes vagy akár nyílt forráskódú verzió is. A zet sök leginkább internetes támogatás meglétében és pár egyéb extra szolgáltatásban térnek el az ingyenes verzióktól, és általában csak nagyvállalati környezetben használják ket az áruk miatt. Érdemes megemlíteni még, hogy természetesen a Hadoop minden része letölthet az Apache oldaláról is, de azok egyesével történ telepítése és kongurációja nagyságrendekkel nagyobb szakértelmet és id t igényelnek, mint egy disztribúció használata ábra. Hadoop disztribúciók 7.5. Feladatok ütemezése és kvóták használata MapReduce feladat esetén a FIFO alapelv feladatütemez volt a legelterjedtebb, de ez túl egyszer volt, és egy kis slotigény (slot - szabad kapacitás) feladatnak is várnia kellett egy nagy slotigény re, ami igen sok várakozást eredményezett a lekérdezést futtató számára. Ennek a kiküszöbölésére találták ki a Fair scheduler-t, amely lehet séget ad arra, hogy a kisebb job-okat a nagyok közé be tudjuk szúrni, ezáltal csökken a várakozási id. Léteznek slot pool-ok, amelyek lehet vé teszik, hogy a slot-ok egy csoportját például a kisebb job-oknak fenntartjuk, így a nagy job-ok a többi slot használatával helyet hagynak a kisebbek számára. Az üzemeltetés egy másik tipikus problémája, ha egy HDFS fájl mérete tévedésb l hatalmasra n (például két nagy fájl join-olása miatt), és elfoglalja a helyet minden más adat el l. Ez ellen kvóták bevezetésével lehet védekezni. 34

36 8. el adás Hadoop YARN, Tez, Spark 8.1. Hadoop Kialakulása A Hadoop 2.0-ban rengeteg új lehet séget és szolgáltatást vezettek be, amelyek sokkal könnyebbé teszik az elosztott rendszerek használatát, azok kezelhet ségét és feladatok futtatását. A rendszer újragondolásánál az volt az els dleges cél, hogy ne csak MapReduce job-okat lehessen indítani, hanem más típusú szolgáltatások és applikációk is gond nélkül fussanak. Emellett a régi rendszerben nem volt lehet ség különböz csoportoknak különböz adathalmazokon dolgozni, elkülönített elemzéseket futtatni. Eddig a HDFS-en erre csak a különböz jogosultságokkal való tárolás volt a lehetséges mód Különbségek A Hadoop 1.0-ban JobTracker-nél volt minden szerep, felügyelte az er forrásokat, osztotta ki a feladatokat a DataNode-ok számára MapReduce job-oknál, valamint monitorozta a feladatok futását. Felismerték, hogy az er forrás menedzsmentet és az alkalmazások kezelését külön kell választani. Emiatt az új YARN architektúra került kialakításra (lásd 8.1. ábra), ami gyakorlatilag egy új generációs MapReduce-t jelent. Az er források kiosztása és a feladatok ütemezése leválasztódik a JobTracker-r l, és a JobTracker szerep feldarabolódik. Így kerültek bevezetésre a ResourceManager az ApplicationMaster szerepek. A régi TaskTracker-ek helyett NodeManager-ek vannak az egyes node-okon, amelyek feladata a programkód futtatása és a MapReduce kommunikációk felügyelete. A ResourceManager a job futtatása során kiválasztja, hogy melyik node-on helyezi el a feladat futtatásáért felel s ApplicationMaster szerepet, amelyb l minden feladathoz külön példány kerül létrehozásra. Az ApplicationMaster a ResourceManager-t l kapott információ alapján kell mennyiség ResourceContainer-t fog igényelni, amely egy er forrás foglalás a Map és Reduce taskok számára. A ResourceContainer-ek kommunikálnak az ApplicationMasterrel, és jelentik, hogy hol tartanak a feladat futtatásával. Az ApplicationMaster a job futása után megsz nik. A korábbi gyakorlattal ellentétben az er forrás foglaláskor a NodeManager-ek - a régi TaskTracker-ek slot és progress információi helyett - szabad memória és CPU állapotot küldenek vissza. Az alkalmazás futásáért az ApplicationMaster a felel s, tehát a ResourceManager-nek nem kell a progress-t jelenteni. 35

37 ELŽADÁS 8. HADOOP YARN, TEZ, SPARK Mivel a MapReduce job-ok mellett már alkalmazások is lehetnek, így az ApplicationMaster visszajelez, hogy melyik módban indult el a beküldött feladat. Például az HBase szolgáltatás is a ResourceManager-en keresztül tudja elérni a cluster-t, így a különböz folyamatok nem veszik el egymás el l az er forrásokat ábra. Az új YARN réteg forrás: YARN job futtatás Az új YARN rendszerben jelent sen megváltozott a rendszerben indítható feladatok futtatása. A 8.2. ábrán bemutatott módon futtatja a rendszer a beküldött feladatokat: 1. A kliens beküldi a feladatot a rendszernek az alkalmazás specikus ApplicationMaster indításához szükséges információkkal együtt. 2. A ResourceManager eldönti, hogy melyik node-ra delegálja az ApplicationMaster elindításával és futtatásával járó feladatkört. 3. Az ApplicationManager a létrejötte után bejelentkezik a ResourceManager-nél, aki lehet vé teszi a kliens számára a közvetlen kommunikációt az ApplicationMaster-rel. 4. A futás során az ApplicationMaster a resource-request protokoll segítségével megfelel ResourceContainer-eket foglal az alkalmazás futásához. 5. A sikeres er forrás foglalás után az ApplicationManager a NodeManager számára elküldi a megfelel információkat és adatokat, így elindul a Container futtatása. Ezek az információk tartalmazzák azt is, hogy a Container miként tud az ApplicationManager-rel kommunikálni. 6. A Container elkezdni futtatni a programkódot, miközben az applikáció specikus protokoll segítségével folyamatosan jelenti a feladat el rehaladtát, állapotát. 7. Szintén az applikáció specikus protokoll segítségével a feladatot beküld kliens az ApplicationMaster-rel kommunikálva kérdezi le a feladat státuszát, illetve az azzal kapcsolatos egyéb információkat. 8. Amikor a feladat elkészült és minden szükséges háttérfolyamat lefutott, az ApplicationMaster törli magát a ResourceManager-nél, és leáll. Ekkor a Container újra felhasználható lesz. 36

38 ELŽADÁS 8. HADOOP YARN, TEZ, SPARK 8.2. Tez 8.2. ábra. YARN job futtatás forrás: A Tez projekt létrehozásának célja az volt, hogy az új YARN rendszerhez egy forradalmasított, gyorsabb, egyszer bb MapReduce megoldást nyújtsanak, amely csökkenti a rendszer er forrás használatát. A korábbi MapReduce-ok m ködési elve az volt, hogy minden Map és Reduce fázis között a köztes adatok a HDFS-re íródtak ki (replikációval együtt), így jelent s I/O kapacitást használtak el (különösen több MapReduce job egyszerre történ futtatásával). Ezt a Tezben azzal küszöbölték ki, hogy nem feltétlen kell külön MapReduce job-okat létrehozni az adatok feldolgozása során, hanem lehet ezeket batch-esíteni (Map Reduce Reduce), így nem kell mindig közöttük HDFS-t használni, tehát spórolhatunk az I/O kapacitással. Ezen kialakítás els dleges célja volt, hogy a Hive és a Pig-beli feladatokat egyetlen MapReduce job-bal valósítsunk meg. A rendszer a feladatokból itt is egy DAG-ot (körmentes gráf) alakít ki, és készíti el a futtatás sorrendjét. Eltérés, hogy a Tez-ben a MapReduce-al ellentétben nem kell ezt megadni, hogy hány Reduce feladatunk lesz, ezt a rendszer futás közben kioptimalizálja Eloszott rendezési példa Tez-ben A 8.4. ábrán látható egy elosztott rendezési példa, amely módszerrel akár 10-szeresen gyorsabb adatfeldolgozás érhet el. A korábbi egy Reduce job-tól eltér en, itt 3 részb l áll a folyamat. Az el feldolgozó szakasz mintákat küld a Sampler-nek, amely az adatokat egyenletesen elosztja rendezett tartományokra osztja. Ezek a tartományok a partícionáló és aggregáló fázisba kerülnek, ahol a megfelel feldolgozók a saját tartományukat olvassák be, és elvégzik az adatok összef zését. Ez az adatfolyam egyetlen Tez feladat, amely elvégzi az 37

39 ELŽADÁS 8. HADOOP YARN, TEZ, SPARK egész számítást ábra. Tez és a YARN kapcsolata forrás: ábra. Tez elosztott rendezés forrás: Impala Az Impala egy Hive alternatívaként jött létre annak érdekében, hogy egy egyszer lekérdezésre egy kisebb táblán ne kelljen 5-10 sec-et várni. A megvalósítás tisztán C és C++ alapú, és az adatokat is cache-eli, ezért jóval gyorsabb, mint a Hive. A cache-elés lényege ebben az esetben, hogy a már korábban kiszámolt vagy futtatott lekérdezések eredményét memóriában tárolja, így azokat nem kell minden esetben újra a HDFS-r l olvasni, ha gyakran használjuk. 38

40 ELŽADÁS 8. HADOOP YARN, TEZ, SPARK 8.4. Spark A Spark valójában egy memória alapú MapReduce keretrendszer, amelyet szintén a YARN-hoz fejlesztettek ki. Ez leginkább iteratív számításokhoz ideális (pl. logisztikus regresszió, neurális hálók). Bizonyos adatokról kódszinten meg lehet mondani, hogy legyen cache-elve, tehát akár az adathalmaz tárolható memóriában a futás idején, és csak a végeredményt írjuk HDFS-re. A Shark a Spark rendszerhez nagyon hasonlóan egy memória alapú megoldás, amelyet a Hive futtatásához terveztek Storm A Storm egy valósidej, nem batchelt feldolgozó rendszer, amelyben topológiába rendszerezhetünk forrásokat és feldolgozó egységeket, amely folyam végén kerül csak az adat elmentésre a háttértárra vagy adatbázisba (lásd 8.5. ábra). Ez a leggyakrabban olyan felhasználási módoknál jelent hatalmas el nyt, ahol azonnali jelentéseket vagy valós idej analízist kell készíteni. A feldolgozó egységek lényege, hogy azonnali számolást végeznek, adattárolást egyáltalán nem. Felhasználási példák közé tartozik gyakori szavak, kulcsszavak keresése sok bejöv rövid üzenetben, amelyet azonnal kivezethetünk egy valós megjelenít felületre. Ezek mellett természetesen a tárolt adatokon kés bb Tez-t vagy MapReduce-t is futtathatunk a korábbi gyakorlatnak megfelel en ábra. Storm topológia forrás: 39

41 9. el adás Hadoop & NoSQL: HBase 9.1. Adatbázis-kezel rendszerek Az adatbázis-kezel rendszereknek két nagy csoportját különböztetjük meg, amelyek összehasonlítása a 9.1. táblázatban látható. OLTP (On-line Transaction Processing) OLTP (On-line Analytical Processing) Célja tranzakciókezelés adatelemzés Formája adatbázis adattárház M veletek gyors, kis m veletek: SELECT, komplex SELECT típusú lekérdezések UPDATE, DELETE, INSERT Tervezés normalizált forma (1NF, 2NF, nem normalizált, csillag séma: 3NF, BCNF) egy f tábla és több hozzá f z d kapcsolótábla Technológiák standard SQL adatbázisok HBase, Accumulo, Cassandra 9.1. táblázat. OLTP vs. OLAP Általában megpróbáljuk a kétféle adatbázis-kezel rendszert elszeparálni akkor is, ha ugyanazzal az eszközökkel valósítottuk meg ket. Ennek legf bb szerepe az er források kiosztásánál van, hiszen egy komolyabb elemzési m velettel nem szeretnénk a tranzakciós adatbázist lebénítani Elosztott adatbázis-kezel rendszerek Az adatbázis kezel rendszerek egygépes környezetben viszonylag egyszer en elkészíthet ek, de elosztott esetben számos problémába ütközhetünk, amelyhez kapcsolódik a következ tétel: CAP-tétel: egy-egy konkrét elosztott rendszer az alábbi három alapvet képesség közül legfeljebb kett t tud megvalósítani: ˆ Consistency (konzisztencia): mindig ugyanazt olvassuk ki, mint amit beírtunk ˆ Availibility (rendelkezésre állás): mindig kapunk választ a kérdésre ˆ Parition tolerance (particionálás-t rés): mennyire viseli el a rendszer, ha valamilyen okból kifolyólag szétesik több különálló részre 40

42 ELŽADÁS 9. HADOOP & NOSQL: HBASE A 9.1. ábrán látható a különböz adatbázis-kezel rendszereknek az összefoglalása a CAP-tétel alapján, hogy melyik két képességgel rendelkezik ábra. CAP-tétel forrás: NoSQL adatbázis-kezel rendszerek A NoSQL adatbázisok nem relációs adatmodellt használnak, hanem különféle megoldások léteznek: ˆ dokumentum alapú: MongoDB Ezek az adatbázis-kezel rendszerek legf képp az aggregátum számolásra, GROUP BY-jelleg m veletekre vannak specializálva. Más m veletet vagy nem is tudnak, vagy nem hatékonyan tudnak elvégezni. ˆ gráf alapú: Neo4j ˆ oszlop alapú: HBase, Cassandra ˆ kulcs-érték alapú: DynamoDB, Riak 41

43 ELŽADÁS 9. HADOOP & NOSQL: HBASE 9.3. HBase A Google 2006-ban publikálta a BigTable nev oszlop alapú adatbázis-kezel rendszerét. Célja, hogy a Google által használt HDFS-hez hasonló fájlrendszeren skálázhatóan tudjanak adatokat tárolni. Ennek mintájára készült az HBase, amelynek deníciója a következ : ˆ sparse: ritka, ugyanis az oszlopok értékét nem kötelez mindig megadni és nem tárol különféle NULL értékeket, mint az SQL alapú adatbázisok ˆ consistant: konzisztens ˆ distributed: elosztott, mivel az adatok HDFS-en elhelyezett fájlokban találhatóak ˆ multidimensional: többdimenziós, azaz egy kulcshoz több oszlop (column) is tartozhat és ezek oszlopcsaládokba (columnfamily) vannak rendezve, tehát (columnfamily: column) alapján lehet értéket lekérni. Ezenfelül tárol még timestampet is, vagyis az értékek verziózva vannak és mindig a legfrissebb kerül visszaadásra. (A konzisztenciának feltétele, hogy mindig legyen timestamp a beszúrt értékek mellett.) ˆ sorted: rendezett, tehát nem csak kulcs alapján kereshet, hanem tartományt is egyszer en le lehet kérni ˆ map: kulcs-érték párok tárolása A következ m veleteket lehet elvégezni az HBase-ben: ˆ put(kulcs: {'cf:c': érték, 'cf:c': érték,...}): egy elem beszúrása ˆ get(kulcs): egy kulcshoz tartozó értékek lekérése ˆ scan(kezd érték, végérték): egy tartomány lekérése, illetve használható prex keresésre ˆ delete(kulcs): egy elem törlése A használatához vegyünk egy webkereséses példát, aminek a célja, hogy a különféle URLekhez adatokat mentsünk le. HBase-ben a kulcsot rowkey-nek szokták nevezni, amely jelen esetben az URL lesz. Mivel nagyon sok URL-hez kell adatot tárolni, ezért mindenképpen szükség van valamilyen elosztott infrastruktúrára. Az értékek pedig a MIME-type, nyelv, tartalmazott szöveg, stb. lesz, amely a oszlopok szabad felhasználhatóságából adódóan bármikor b víthet és szabadon kihagyható. Mivel az HBase-nek nagyon kicsi a késleltetése, ezért a különféle modulok (crawlerek) nagyon gyorsan tudnak lekérdezni. Minden változtatás atomi, tehát nem fogják blokkolni egymást és nem okoz problémát az sem, ha két különböz modul ugyanazt a rowkey-t akarja felülírni. Így kaptunk egy nagyon jól skálázódó, kis késleltetés adatbázist, amelyet (cserébe) csak URL alapján tudunk elérni, de ehhez a felhasználáshoz ez pont elég. Egy columnfamily kerül egy HDFS fájlba, tehát ha egy rowkey-hez több columnfamily tartozik, akkor több fájlból kell az értékeket kiolvasni. Oszlop alapú adattömörítést használ az HBase, de használható a rendszer key-value adatbázis felfogásban, amelyb l látszik, hogy nincs éles határ a két típusú adatbázis-kezel rendszer között. 42

44 ELŽADÁS 9. HADOOP & NOSQL: HBASE M ködése HDFS fölött fut, de nem MapReduce alapokon, hiszen tudjuk, hogy a MapReduce-nak másodperces nagyságrend késleltetése van, míg a NoSQL rendszerek ms-os válaszid vel dolgoznak. Felépítésében hasonlít a HDFS és a MapReduce struktúrára, hiszen Master- Slave architektúrára épül ahogyan azt a 9.2. ábrán látható ábra. HBase felépítése forrás: Van egy HBase master és vannak különböz régiószerverek. Ezek külön szolgáltatásként futnak a Hadoop clusteren, tehát teljesen függetlenek a MapReduce keretrendszert l. Mivel az adathalmazunk rendezett, ezért a régiószerverek a kulcs szerint vannak felosztva, tehát minden régiószervernek van egy kulcstartománya (start_key stop_key), amit az kezel. Ha a kliens le akar kérni egy értéket kulcs szerint, akkor el ször a master megmondja, hogy melyik régiószerverhez tartozik és utána attól a régiószervert l fogja elkérni az adott elemet és beírás is hasonlóan m ködik. Ahhoz, hogy a rendszer valóban ms-os nagyságrendben futhasson, a kliensek cash-elik, hogy a régiók hogyan oszlanak el. Ha ez a felosztás valami miatt megváltozik, akkor az adott régiószerver válaszol, hogy ez a kulcs nem hozzá tartozik és akkor fordul újra a masterhez a kliens. A master elég kicsi szerepet kap a rendszerben, mivel csak a kezdeti kéréseket kell kiszolgálnia, illetve az újraszervezési feladatokat kell neki elvégeznie. A nagy terhelés a régiószerverekre jut. A felépítésb l már jól látszik, hogy a rendszer miért nem áll mindig rendelkezésre. Ha egy régiószerver kiesik, akkor az tartománya aktuálisan kiszolgálatlan lesz addig, amíg a master ezt észre nem veszi (nem érkezik heartbeat). Ezután kiosztja más régiószervereknek ezt a tartományt, aki meg fogja találni a HDFS-en az ehhez a régiószerverhez tartozó fájlokat, de így vannak olyan átmeneti id szakok, amely alatt bizonyos rekordok nem elérhet ek. A particionálás-t rés viszont teljesülni fog, hiszen ha a cluster szétesik több részre akkor is adott régiószerverek a hozzájuk tartozó kéréseket teljesíteni tudják. Így a rendszer továbbra is m ködni fog, természetesen a HDFS replikációt nem biztos, hogy végre tudja hajtani amíg a teljes cluster újra össze nem kapcsolódik. Ahhoz hogy a kérések minnél el bb ki legyenek szolgálva a régiószerverek folyamatosan nyitva tartják a HDFS fájlokat, amik hozzájuk tartoznak és általában replikákat is igyekszik a rendszer úgy elhelyezni, hogy legyen a régiószerven egy lokális replika a hozzá tartozó blokkokból. A régiószerver ezekbe a fájlokba nagyon gyorsan bele tud indexelni és visszaadni a megfelel értéket. Ezen felül az adatok nagy részét memóriában tartják, tehát ezért fontos a sok memória az HBase-t kiszolgáló zikai gépekbe. (Vessük össze 43

45 ELŽADÁS 9. HADOOP & NOSQL: HBASE a 7.1. ábrán található Slave-hez tartozó Balanced workload és HBase cluster értékeket.) Az adatok beírásának folyamata Az HBase írási folyamata a 9.3. ábrán látható szekvenciadiagram szerint történik ábra. HBase változtatás írási folyamata forrás: Inicializáláskor a kliens megkérdezi a master-t, hogy melyik régiószerverhez kell fordulnia, ha ez még ezel tt nem történt meg. Egy kulcsot és a hozzá tartozó értéke(ke)t szeretné a kliens beszúrni vagy törölni (➊). A régiószerver el ször a változást beírja a commit log-ba (➋), ami a lokális diszken tárolódik, hogy adatvesztésünk ne legyen. Ezután kerül be a memstore-ba, ahol a régiószerver tárolja a változásokat és követi azok verzióit ( ➌). Amikor ez a memstore kezd betelni, akkor a commit log-nak egy rendezett formáját HDFS-re írja (➎). A commit log és a memstore írása nagyon gyors és utána visszatér a parancs (➍), míg a HDFS-re írás már aszinkron módon hajtódik végre. Így esetleges hiba esetén, ha visszatér a régiószerver, akkor a commit log-ból újra fel tudja építeni a hiányzó módosításokat. Ebb l következik, ha régiószerver többet nem tér vissza, akkor azok a változások elvesznek, amik HDFS-re nem kerültek át HBase adatszervezési példa A legf bb kérdés: Hogyan válasszuk meg a kulcsokat? Ehhez el ször is meg kell vizsgálnunk, hogy milyen lekérdezéseket szeretnénk futtatni. Egy példán keresztül vizsgáljuk meg, hogy milyen szempontokra érdemes odagyelni. Tegyük fel, hogy id járási adatokat gy jtünk. Vannak id járás állomások, amelyekhez timestamp-et és mérési adatokat szeretnénk letárolni. A lekérdezéseinket arra szeretnénk optimalizálni, hogy a leggyorsabban kapjuk vissza az adott id járás állomáshoz tartozó legfrissebb mért adatokat. Ebben az esetben triviálisnak t nik, hogy válasszuk az állomás+timestamp-et kulcsnak. De ez ebben az esetben nem a legoptimálisabb megoldást adja, ugyanis a keresésnél mindig végig kell nézni az összes adott állomáshoz tartozó adatot amíg elérjük az utolsót. Erre azt a megoldást szokták alkalmazni, hogy egy távoli jöv beli id pontból kivonják az aktuális timestamp-et, ezzel megfordítva annak növekv voltát. Ha így futtatjuk le a keresést, akkor els elemként az állomáshoz tartozó legfrissebb adatokat kapjuk meg. 44

46 A. függelék MapReduce Patterns, Algorithms, and Use Cases Source: In this article I digested a number of MapReduce patterns and algorithms to give a systematic view of the dierent techniques that can be found on the web or scientic articles. Several practical case studies are also provided. All descriptions and code snippets use the standard Hadoop's MapReduce model with Mappers, Reduces, Combiners, Partitioners, and sorting. This framework is depicted in the gure below. A.1. ábra. MapReduce Framework 45

47 FÜGGELÉK A. MAPREDUCE PATTERNS, ALGORITHMS, AND USE CASES A.1. Basic MapReduce Patterns A.1.1. Counting and Summing Problem Statement: There is a number of documents where each document is a set of terms. It is required to calculate a total number of occurrences of each term in all documents. Alternatively, it can be an arbitrary function of the terms. For instance, there is a log le where each record contains a response time and it is required to calculate an average response time. Solution: Let start with something really simple. The code snippet below shows Mapper that simply emit 1 for each term it processes and Reducer that goes through the lists of ones and sum them up: 1 class Mapper 2 method Map ( docid id, doc d) 3 for all term t in doc d do 4 Emit ( term t, count 1) 5 6 class Reducer 7 method Reduce ( term t, counts [c1, c2,...]) 8 sum = 0 9 for all count c in [c1, c2,...] do 10 sum = sum + c 11 Emit ( term t, count sum ) The obvious disadvantage of this approach is a high amount of dummy counters emitted by the Mapper. The Mapper can decrease a number of counters via summing counters for each document: 1 class Mapper 2 method Map ( docid id, doc d) 3 H = new AssociativeArray 4 for all term t in doc d do 5 H{t} = H{t} for all term t in H do 7 Emit ( term t, count H{t }) In order to accumulate counters not only for one document, but for all documents processed by one Mapper node, it is possible to leverage Combiners: 1 class Mapper 2 method Map ( docid id, doc d) 3 for all term t in doc d do 4 Emit ( term t, count 1) 5 6 class Combiner 7 method Combine ( term t, [c1, c2,...]) 8 sum = 0 9 for all count c in [c1, c2,...] do 46

48 FÜGGELÉK A. MAPREDUCE PATTERNS, ALGORITHMS, AND USE CASES 10 sum = sum + c 11 Emit ( term t, count sum ) class Reducer 14 method Reduce ( term t, counts [c1, c2,...]) 15 sum = 0 16 for all count c in [c1, c2,...] do 17 sum = sum + c 18 Emit ( term t, count sum ) Applications: Log Analysis, Data Querying A.1.2. Collating Problem Statement: There is a set of items and some function of one item. It is required to save all items that have the same value of function into one le or perform some other computation that requires all such items to be processed as a group. The most typical example is building of inverted indexes. Solution: The solution is straightforward. Mapper computes a given function for each item and emits value of the function as a key and item itself as a value. Reducer obtains all items grouped by function value and process or save them. In case of inverted indexes, items are terms (words) and function is a document ID where the term was found. Applications: Inverted Indexes, ETL A.1.3. Filtering (Grepping), Parsing, and Validation Problem Statement: There is a set of records and it is required to collect all records that meet some condition or transform each record (independently from other records) into another representation. The later case includes such tasks as text parsing and value extraction, conversion from one format to another. Solution: Solution is absolutely straightforward Mapper takes records one by one and emits accepted items or their transformed versions. Applications: Log Analysis, Data Querying, ETL, Data Validation A.1.4. Distributed Task Execution Problem Statement: There is a large computational problem that can be divided into multiple parts and results from all parts can be combined together to obtain a nal result. Solution: Problem description is split in a set of specications and specications are stored as input data for Mappers. Each Mapper takes a specication, performs corresponding computations and emits results. Reducer combines all emitted parts into the nal result. Case Study: Simulation of a Digital Communication System There is a software simulator of a digital communication system like WiMAX that passes some volume of random data through the system model and computes error probability of throughput. Each Mapper runs simulation for specied amount of data which is 1/Nth of the required sampling and emit error rate. Reducer computes average error rate. 47

49 FÜGGELÉK A. MAPREDUCE PATTERNS, ALGORITHMS, AND USE CASES Applications: Physical and Engineering Simulations, Numerical Analysis, Performance Testing A.1.5. Sorting Problem Statement: There is a set of records and it is required to sort these records by some rule or process these records in a certain order. Solution: Simple sorting is absolutely straightforward Mappers just emit all items as values associated with the sorting keys that are assembled as function of items. Nevertheless, in practice sorting is often used in a quite tricky way, that's why it is said to be a heart of MapReduce (and Hadoop). In particular, it is very common to use composite keys to achieve secondary sorting and grouping. Sorting in MapReduce is originally intended for sorting of the emitted key-value pairs by key, but there exist techniques that leverage Hadoop implementation specics to achieve sorting by values. See this blog for more details. It is worth noting that if MapReduce is used for sorting of the original (not intermediate) data, it is often a good idea to continuously maintain data in sorted state using BigTable concepts. In other words, it can be more ecient to sort data once during insertion than sort them for each MapReduce query. Applications: ETL, Data Analysis A.2. Not-So-Basic MapReduce Patterns A.2.1. Iterative Message Passing (Graph Processing) Problem Statement: There is a network of entities and relationships between them. It is required to calculate a state of each entity on the basis of properties of the other entities in its neighborhood. This state can represent a distance to other nodes, indication that there is a neighbor with the certain properties, characteristic of neighborhood density and so on. Solution: A network is stored as a set of nodes and each node contains a list of adjacent node IDs. Conceptually, MapReduce jobs are performed in iterative way and at each iteration each node sends messages to its neighbors. Each neighbor updates its state on the basis of the received messages. Iterations are terminated by some condition like xed maximal number of iterations (say, network diameter) or negligible changes in states between two consecutive iterations. From the technical point of view, Mapper emits messages for each node using ID of the adjacent node as a key. As result, all messages are grouped by the incoming node and reducer is able to recompute state and rewrite node with the new state. This algorithm is shown in the gure below: 1 class Mapper 2 method Map ( id n, object N) 3 Emit ( id n, object N) 4 for all id m in N. OutgoingRelations do 5 Emit ( id m, message getmessage (N)) 6 7 class Reducer 8 method Reduce ( id m, [s1, s2,...]) 9 M = null 48

50 FÜGGELÉK A. MAPREDUCE PATTERNS, ALGORITHMS, AND USE CASES 10 messages = [] 11 for all s in [s1, s2,...] do 12 if IsObject ( s) then 13 M = s 14 else // s is a message 15 messages. add (s) 16 M. State = calculatestate ( messages ) 17 Emit ( id m, item M) It should be emphasized that state of one node rapidly propagates across all the network of network is not too sparse because all nodes that were infected by this state start to infect all their neighbors. This process is illustrated in the gure below: Case Study: Availability Propagation Through The Tree of Categories Problem Statement: This problem is inspired by real life ecommerce task. There is a tree of categories that branches out from large categories (like Men, Women, Kids) to smaller ones (like Men Jeans or Women Dresses), and eventually to small end-ofline categories (like Men Blue Jeans). End-of-line category is either available (contains products) or not. Some high level category is available if there is at least one available end-of-line category in its subtree. The goal is to calculate availabilities for all categories if availabilities of end-of-line categories are know. Solution: This problem can be solved using the framework that was described in the previous section. We dene getmessage and calculatestate methods as follows: 1 class N 2 State in { True = 2, False = 1, null = 0}, 49

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

MMK-Informatikai projekt ellenőr képzés 4 Miről lesz szó Big Data definíció Mi a Hadoop Hadoop működése, elemei Köré épülő technológiák Disztribúciók, Big Data a felhőben Miért, hol és hogyan használják Big Data definíció Miért Big a Data? 2017.

Részletesebben

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

GENERÁCIÓS ADATBÁZISOK A BIG DATA KÜLÖNBÖZŐ TERÜLETEIN INFORMATIKAI PROJEKTELLENŐR 30 MB Szabó Csenger ÚJ GENERÁCIÓS ADATBÁZISOK A BIG DATA KÜLÖNBÖZŐ TERÜLETEIN 2016. 12. 31. MMK- Informatikai projektellenőr képzés Big Data definíció 2016. 12. 31. MMK-Informatikai

Részletesebben

Weblog elemzés Hadoopon 1/39

Weblog elemzés Hadoopon 1/39 Weblog elemzés Hadoopon 1/39 Az előadás témái Egy Hadoop job életciklusa A Weblog-projekt 2/39 Mi a Hadoop? A Hadoop egy párhuzamos programozási séma egy implementációja. 3/39 A programozási séma: MapReduce

Részletesebben

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

MapReduce paradigma a CAP-tétel kontextusában. Adatb haladóknak. Balassi Márton Adatbázisok haladóknak 2012. MapReduce paradigma a CAP-tétel kontextusában Balassi Márton balassi.marton@gmail.com 2012. október 30. Adatbázisok haladóknak 2012. 2012. október 30. Miről lesz szó? Elosztott adatfeldolgozásról általában

Részletesebben

Hadoop és használata az LPDS cloud-on

Hadoop és használata az LPDS cloud-on Hadoop és használata az LPDS cloud-on Bendig Loránd lbendig@ilab.sztaki.hu 2012.04.13 Miről lesz szó? Bevezetés Hadoop áttekintés OpenNebula Hadoop cluster az LPDS cloud-on Tapasztalatok, nyitott kérdések

Részletesebben

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17 Adatbázisok 8. gyakorlat SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT 2015. október 26. 2015. október 26. Adatbázisok 1 / 17 SQL nyelv Structured Query Language Struktúrált lekérdez

Részletesebben

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Adatbázis-kezelő rendszerek. dr. Siki Zoltán Adatbázis-kezelő rendszerek I. dr. Siki Zoltán Adatbázis fogalma adatok valamely célszerűen rendezett, szisztéma szerinti tárolása Az informatika elterjedése előtt is számos adatbázis létezett pl. Vállalati

Részletesebben

Big Data tömeges adatelemzés gyorsan

Big Data tömeges adatelemzés gyorsan MEDIANET 2015 Big Data tömeges adatelemzés gyorsan STADLER GELLÉRT Oracle Hungary Kft. gellert.stadler@oracle.com Kulcsszavak: big data, döntéstámogatás, hadoop, üzleti intelligencia Az utóbbi években

Részletesebben

Integrált ügyviteli rendszer: Kettős könyvelés modul

Integrált ügyviteli rendszer: Kettős könyvelés modul Integrált ügyviteli rendszer: Kettős könyvelés modul Használati útmutató 1988-2015. 3100.Salgótarján Fő tér 1. tel.: 36-32-423-912, e-mail minorg@minorg.hu Internet: http://www.minorg.hu/ 1.oldal Tartalomjegyzék.

Részletesebben

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

Muppet: Gyors adatok MapReduce stílusú feldolgozása. Muppet: MapReduce-Style Processing of Fast Data Muppet: Gyors adatok MapReduce stílusú feldolgozása Muppet: MapReduce-Style Processing of Fast Data Tartalom Bevezető MapReduce MapUpdate Muppet 1.0 Muppet 2.0 Eredmények Jelenlegi tendenciák Nagy mennyiségű

Részletesebben

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1 SZE INFORMATIKAI KÉPZÉS 1 ADATBÁZIS-KEZELÉS MS ACCESS 2010 A feladat megoldása során a Microsoft Office Access 2010 használata a javasolt. Ebben a feladatban a következőket fogjuk gyakorolni: Adatok importálása

Részletesebben

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni: 1 Adatbázis kezelés 3. gyakorlat A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni: Tábla kapcsolatok létrehozása,

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2013. november 20. 10. El adás SQLite SQLite: Adatbázis kezel rendszer SQL standardokat nagyrészt követi Nagyon elterjedt, pl böngész kben is használt Nehéz olyan programnyelvet

Részletesebben

Big Data adattárházas szemmel. Arató Bence ügyvezető, BI Consulting

Big Data adattárházas szemmel. Arató Bence ügyvezető, BI Consulting Big Data adattárházas szemmel Arató Bence ügyvezető, BI Consulting 1 Bemutatkozás 15 éves szakmai tapasztalat az üzleti intelligencia és adattárházak területén A BI Consulting szakmai igazgatója A BI.hu

Részletesebben

Adatbázis rendszerek. dr. Siki Zoltán

Adatbázis rendszerek. dr. Siki Zoltán Adatbázis rendszerek I. dr. Siki Zoltán Adatbázis fogalma adatok valamely célszerűen rendezett, szisztéma szerinti tárolása Az informatika elterjedése előtt is számos adatbázis létezett pl. Vállalati személyzeti

Részletesebben

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

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon Mi az IMDG? Nem memóriában futó relációs adatbázis NoSQL hagyományos relációs adatbázis Más fajta adat tárolás Az összes adat RAM-ban van, osztott

Részletesebben

NIIF Központi Elosztott Szolgáltatói Platform

NIIF Központi Elosztott Szolgáltatói Platform NIIF Központi Elosztott Szolgáltatói Platform Bajnok Kristóf kristof.bajnok@sztaki.hu MTA-SZTAKI ITAK 2004. április 7. MTA Sztaki / ITAK 1 A helyzet 2002-ben Az NIIF központi szolgáltatásait a helka.iif.hu

Részletesebben

P-GRADE fejlesztőkörnyezet és Jini alapú GRID integrálása PVM programok végrehajtásához. Rendszerterv. Sipos Gergely sipos@sztaki.

P-GRADE fejlesztőkörnyezet és Jini alapú GRID integrálása PVM programok végrehajtásához. Rendszerterv. Sipos Gergely sipos@sztaki. P-GRADE fejlesztőkörnyezet és Jini alapú GRID integrálása PVM programok végrehajtásához Rendszerterv Sipos Gergely sipos@sztaki.hu Lovas Róbert rlovas@sztaki.hu MTA SZTAKI, 2003 Tartalomjegyzék 1. Bevezetés...

Részletesebben

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu Számonkérés 2 Papíros (90 perces) zh az utolsó gyakorlaton. Segédanyag nem használható Tematika 1. félév 3 Óra Dátum Gyakorlat 1. 2010.09.28.

Részletesebben

Online algoritmusok. Algoritmusok és bonyolultságuk. Horváth Bálint március 30. Horváth Bálint Online algoritmusok március 30.

Online algoritmusok. Algoritmusok és bonyolultságuk. Horváth Bálint március 30. Horváth Bálint Online algoritmusok március 30. Online algoritmusok Algoritmusok és bonyolultságuk Horváth Bálint 2018. március 30. Horváth Bálint Online algoritmusok 2018. március 30. 1 / 28 Motiváció Gyakran el fordul, hogy a bemenetet csak részenként

Részletesebben

12. tétel. Lemezkezelés

12. tétel. Lemezkezelés 12. tétel 12_12a_1.5 Lemezkezelés (Particionálás, formázás, RAID rendszerek) A partíció a merevlemez egy önálló logikai egysége, amely fájlrendszer tárolására alkalmas. Alapvetően két esetben hozunk létre

Részletesebben

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

RHadoop. Kocsis Imre Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék RHadoop Kocsis Imre ikocsis@mit.bme.hu Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Házi feladat Csapatépítés o 2 fő, tetszőleges kombinációkban http://goo.gl/m8yzwq

Részletesebben

BarAck.Net. Internetes csomagkezel. Felhasználói kézikönyv V 1.0. (2011. július 20.)

BarAck.Net. Internetes csomagkezel. Felhasználói kézikönyv V 1.0. (2011. július 20.) BarAck.Net Internetes csomagkezel Felhasználói kézikönyv V 1.0 (2011. július 20.) Tartalomjegyzék 1 Áttekintés...2 1.1 Célkitzés...2 1.2 A program felépítése...2 2 Futtatási környezet, telepítési információk...3

Részletesebben

PHP-MySQL. Adatbázisok gyakorlat

PHP-MySQL. Adatbázisok gyakorlat PHP-MySQL Adatbázisok gyakorlat Weboldalak és adatbázisok Az eddigiek során megismertük, hogyan lehet a PHP segítségével dinamikus weblapokat készíteni. A dinamikus weboldalak az esetek többségében valamilyen

Részletesebben

4. Használati útmutatás

4. Használati útmutatás megbízható(másnéven: robusztus): mert a programozási hibák egy részét megakadályozza,a másik részét pedig futás közben kisz ri és támogatja a fejleszt t azok professzionális kezelésében. biztonságos: megakadályozza

Részletesebben

Rendszermodernizációs lehetőségek a HANA-val Poszeidon. Groma István PhD SDA DMS Zrt.

Rendszermodernizációs lehetőségek a HANA-val Poszeidon. Groma István PhD SDA DMS Zrt. Rendszermodernizációs lehetőségek a HANA-val Poszeidon Groma István PhD SDA DMS Zrt. Poszeidon EKEIDR Tanúsított ügyviteli rendszer (3/2018. (II. 21.) BM rendelet). Munkafolyamat támogatás. Papírmentes

Részletesebben

OCSP Stapling. Az SSL kapcsolatok sebességének növelése Apache, IIS és NginX szerverek esetén 1(10)

OCSP Stapling. Az SSL kapcsolatok sebességének növelése Apache, IIS és NginX szerverek esetén 1(10) OCSP Stapling Az SSL kapcsolatok sebességének növelése Apache, IIS és NginX szerverek esetén 1(10) 1. Tartalomjegyzék 1. Tartalomjegyzék... 2 2. Bevezető... 3 3. OCSP Stapling támogatással rendelkező webszerverek...

Részletesebben

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi. Függvények 1.Függvények...1 1.1.A függvény deníció szintaxisa... 1..Függvények érték visszatérítése...3 1.3.Környezettel kapcsolatos kérdések...4 1.4.Lokális változók használata...4 1.5.Rekurzív hívások...5.kód

Részletesebben

Virtuális Obszervatórium. Gombos Gergő

Virtuális Obszervatórium. Gombos Gergő Virtuális Obszervatórium Gombos Gergő Áttekintés Motiváció, probléma felvetés Megoldások Virtuális obszervatóriumok NMVO Twitter VO Gombos Gergő Virtuális Obszervatórium 2 Motiváció Tudományos módszer

Részletesebben

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni: 1 Adatbázis kezelés 2. gyakorlat A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni: Táblák létrehozása,

Részletesebben

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év). 1. fejezet AWK 1.1. Szűrési feladatok 1. Készítsen awk szkriptet, ami kiírja egy állomány leghosszabb szavát. 2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét,

Részletesebben

SQLServer. Particionálás

SQLServer. Particionálás SQLServer 11. téma DBMS particiók, LOG shipping Particionálás Tábla, index adatinak szétosztása több FileGroup-ra 1 Particionálás Előnyök: Nagy méret hatékonyabb kezelése Részek önálló mentése, karbantartása

Részletesebben

RDBMS fejlesztési irányok. Ferris Wheel (óriáskerék) Jim Gray törvényei. Elosztott adatbázisok problémái. Elosztott adatbázisok

RDBMS fejlesztési irányok. Ferris Wheel (óriáskerék) Jim Gray törvényei. Elosztott adatbázisok problémái. Elosztott adatbázisok 1 RDBMS fejlesztési irányok Column store Tömb adatmodell JIT fordító és vektorizált végrehajtás Ferris wheel (óriáskerék) Elosztott adatbázisok Ferris Wheel (óriáskerék) Optimalizált scan műveletek Table

Részletesebben

Segesdi Dániel. OpenNebula. Virtualizációs technológiák és alkalmazásaik BMEVIMIAV89. 2011 ősz

Segesdi Dániel. OpenNebula. Virtualizációs technológiák és alkalmazásaik BMEVIMIAV89. 2011 ősz Segesdi Dániel OpenNebula Virtualizációs technológiák és alkalmazásaik BMEVIMIAV89 2011 ősz OpenNebula Előszó A feladatom az OpenNebula nyílt forráskódú cloud management eszköz megismerése, mely egységes

Részletesebben

Adatbázis rendszerek 7. előadás State of the art

Adatbázis rendszerek 7. előadás State of the art Adatbázis rendszerek 7. előadás State of the art Molnár Bence Szerkesztette: Koppányi Zoltán Osztott adatbázisok Osztott rendszerek Mi is ez? Mi teszi lehetővé? Nagy sebességű hálózat Egyre olcsóbb, és

Részletesebben

A hierarchikus adatbázis struktúra jellemzői

A hierarchikus adatbázis struktúra jellemzői A hierarchikus adatbázis struktúra jellemzői Az első adatbázis-kezelő rendszerek a hierarchikus modellen alapultak. Ennek az volt a magyarázata, hogy az élet sok területén első közelítésben elég jól lehet

Részletesebben

TÁMOP 4.1.1 VIR alprojekt VIR felhasználói kézikönyv

TÁMOP 4.1.1 VIR alprojekt VIR felhasználói kézikönyv 1. sz. melléklet TÁMOP 4.1.1 VIR alprojekt Készítette: Aloha Informatika Kft. Tartalomjegyzék 1. A Vezetői Információs Rendszer, mint a stratégiai gondolkodás eszköze...4 1.1 Elméleti háttér...4 1.2 VIR

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 6. gyakorlat C++ alapok, szövegkezelés Surányi Márton PPKE-ITK 2010.10.12. Forrásfájlok: *.cpp fájlok Fordítás: a folyamat, amikor a forrásfájlból futtatható állományt állítunk

Részletesebben

Component Soft 1994-2013 és tovább

Component Soft 1994-2013 és tovább Component Soft 1994-2013 és tovább IT szakemberek oktatása, tanácsadás Fő témáink: UNIX/Linux rendszerek, virtualizációs, fürtözési, tároló menedzsment és mentési technológiák Adatbázisok és middleware

Részletesebben

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

Egészítsük ki a Drupal-t. Drupal modul fejlesztés Egészítsük ki a Drupal-t Drupal modul fejlesztés Drupal 6.0 2008. február 13. Miért írjunk Drupal modult? Nincs az igényeinknek megfelelő modul Valamilyen közösségi igény kielégítése Valami nem úgy működik

Részletesebben

A Facebook adattárháza. Trencséni Márton info99

A Facebook adattárháza. Trencséni Márton info99 A Facebook adattárháza Trencséni Márton mtrencseni@gmail.com info99 1 Néhány szót rólam 1. BME-n végeztem 2004-ben műszaki informatikusként 2. Adatbázisok tárgy már akkor is volt :) Utána: ELTE, fizikus

Részletesebben

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

Az MTA Cloud a tudományos alkalmazások támogatására. Kacsuk Péter MTA SZTAKI Az MTA Cloud a tudományos alkalmazások támogatására Kacsuk Péter MTA SZTAKI Kacsuk.Peter@sztaki.mta.hu Tudományos alkalmazások és skálázhatóság Kétféle skálázhatóság: o Vertikális: dinamikusan változik

Részletesebben

Active Directory kiegészítő kiszolgálók telepítése és konfigurálása Windows Server 2003 R2 alatt

Active Directory kiegészítő kiszolgálók telepítése és konfigurálása Windows Server 2003 R2 alatt Active Directory kiegészítő szerverek telepítése és konfigurálása Windows Server 2003 R2 alatt Készítette: Petróczy Tibor Active Directory kiegészítő kiszolgálók telepítése és konfigurálása Windows Server

Részletesebben

Szkriptnyelvek. 1. UNIX shell

Szkriptnyelvek. 1. UNIX shell Szkriptnyelvek 1. UNIX shell Szkriptek futtatása Parancsértelmez ő shell script neve paraméterek shell script neve paraméterek Ebben az esetben a szkript tartalmazza a parancsértelmezőt: #!/bin/bash Szkriptek

Részletesebben

Fájlrendszerek. A Windows operációs rendszerek fájlrendszere

Fájlrendszerek. A Windows operációs rendszerek fájlrendszere Fájlrendszerek A Windows operációs rendszerek fájlrendszere Fájlrendszerek definíció A számítástechnika egy fájlrendszer alatt a számítógépes fájlok tárolásának és rendszerezésének a módszerét érti, ideértve

Részletesebben

GS1 Logger for Staff. Felhasználói kézikönyv. Verzió 2.3, 2013.10.15. GS1 Logger Staff Felhasználói kézikönyv

GS1 Logger for Staff. Felhasználói kézikönyv. Verzió 2.3, 2013.10.15. GS1 Logger Staff Felhasználói kézikönyv GS1 Logger for Staff Felhasználói kézikönyv Verzió 2.3, 2013.10.15. Verzió 2.3 Minden jog fenntartva GS1 Magyarország Zrt. Oldal: 1 / 19 Tartalom 1. Bevezetés... 3 2. Funkcionális leírás a szoftver működése...

Részletesebben

Multimédiás adatbázisok

Multimédiás adatbázisok Multimédiás adatbázisok Multimédiás adatbázis kezelő Olyan adatbázis kezelő, mely támogatja multimédiás adatok (dokumentum, kép, hang, videó) tárolását, módosítását és visszakeresését Minimális elvárás

Részletesebben

Takács Gábor mérnök informatikus, okl. mérnöktanár

Takács Gábor mérnök informatikus, okl. mérnöktanár Takács Gábor mérnök informatikus, okl. mérnöktanár takacsg@sze.hu http://rs1.sze.hu/~takacsg/ Big Data Definition Big Data is data that can t be stored or analyzed using traditional tools. Információ tartalom,

Részletesebben

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK Mérési Utasítás Linux/Unix jogosultságok és fájlok kezelése Linux fájlrendszerek és jogosultságok Linux alatt, az egyes fájlokhoz való hozzáférések szabályozása érdekében a fájlokhoz tulajdonost, csoportot

Részletesebben

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft Flash és PHP kommunikáció Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft A lehetőségek FlashVars External Interface Loadvars XML SOAP Socket AMF AMFphp PHPObject Flash Vars Flash verziótól függetlenül

Részletesebben

Önálló laboratórium beszámoló

Önálló laboratórium beszámoló Önálló laboratórium beszámoló BME-TMIT Készítette: Sümeghy Tamás Pál Neptun-kód: GFHSRE Szak: műszaki informatikus Szakirány: Internet és infokommunikációs alkalmazásai E-mail cím: schumy@sch.bme.hu Konzulens(ek):

Részletesebben

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

Tipikus időbeli internetezői profilok nagyméretű webes naplóállományok alapján Tipikus időbeli internetezői profilok nagyméretű webes naplóállományok alapján Schrádi Tamás schraditamas@aut.bme.hu Automatizálási és Alkalmazott Informatikai Tanszék BME A feladat A webszerverek naplóállományainak

Részletesebben

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14 Adatbázisok 9. gyakorlat SQL: SELECT 2015. október 26. 2015. október 26. Adatbázisok 1 / 14 SQL SELECT Lekérdezésre a SELECT utasítás szolgál, mely egy vagy több adattáblából egy eredménytáblát állít el

Részletesebben

Java és web programozás

Java és web programozás Budapesti Műszaki Egyetem 2015. 04. 08. 10. Előadás Ami kimearad múlthéten Ha már megvan a KeyListener vagy MouseListener osztályunk a következõ módon tudjuk hozzárendelni egy JFrame vagy JPanel-hez: Ami

Részletesebben

Adatbázis, adatbázis-kezelő

Adatbázis, adatbázis-kezelő Adatbázisok I. rész Adatbázis, adatbázis-kezelő Adatbázis: Nagy adathalmaz Közvetlenül elérhető háttértárolón (pl. merevlemez) Jól szervezett Osztott Adatbázis-kezelő szoftver hozzáadás, lekérdezés, módosítás,

Részletesebben

1 Kezd lépések. 1.1 Felhasználók azonosítása. 1.2 Menüpontok. 1.3 Bejelentkezés. icard

1 Kezd lépések. 1.1 Felhasználók azonosítása. 1.2 Menüpontok. 1.3 Bejelentkezés. icard 1 Kezd lépések Az Elektronikus Vendégnyilvántartás a Harkányi Kedvezménykártya Rendszer része! A Harkány-Kártyával kapcsolatos további tájékoztatást a Tourinform ad! 1.1 Felhasználók azonosítása Az egyes

Részletesebben

Felhők teljesítményelemzése felhő alapokon

Felhők teljesítményelemzése felhő alapokon Felhők teljesítményelemzése felhő alapokon Kocsis Imre ikocsis@mit.bme.hu HTE Infokom 2014 Budapest University of Technology and Economics Department of Measurement and Information Systems 1 IT Szolgáltatásmenedzsment

Részletesebben

DAT adatcserefájl AutoCAD MAP DWG mapobject konvertáló program dokumentáció

DAT adatcserefájl AutoCAD MAP DWG mapobject konvertáló program dokumentáció H - 1161 Budapest Rákóczi út 76. Tel./Fax.: +36-1-4010159 http://www.pageos.hu toni@pageos.hu DAT adatcserefájl AutoCAD MAP DWG mapobject konvertáló program dokumentáció A program használható a TOPOBASE

Részletesebben

Access gyakorlati feladatok lépésről lépésre

Access gyakorlati feladatok lépésről lépésre Access gyakorlati feladatok lépésről lépésre 1. feladat: Hajómenetrend A balatoni hajómenetrend rendelkezésünkre áll a menetrend.txt állományban. Készítsen új adatbázist HAJO néven! A mellékelt adatállományt

Részletesebben

Welcome3 Bele pteto rendszer

Welcome3 Bele pteto rendszer Welcome3 Bele pteto rendszer Programozói kézikönyv beks Kommunikációs Technika Kft 4024, Debrecen, Rákóczi utca 21 www.beks.hu 2013. március 7. Tartalomjegyzék Rendszer telepítési folyamatábra... 6 Welcome3

Részletesebben

FELHASZNÁLÓI ÚTMUTATÓ

FELHASZNÁLÓI ÚTMUTATÓ Számítástechnikai Fejlesztı Kft. FELHASZNÁLÓI ÚTMUTATÓ E-SZIGNÓ KÁRTYAKEZELİ ALKALMAZÁS ver. 1.0 2010. november 9. MICROSEC SZÁMÍTÁSTECHNIKAI FEJLESZTİ KFT. 1022 BUDAPEST, MARCZIBÁNYI TÉR 9. Felhasználói

Részletesebben

Kisvállalkozások könyvelése. Infotéka Kft. programjaival

Kisvállalkozások könyvelése. Infotéka Kft. programjaival A Kisvállalkozások könyvelése Könyvelés a gyakorlatban (Perfekt, 2014) című könyv esettanulmányának megoldása az Infotéka Kft. programjaival Készítette: Hauserné Dénes Éva A programok letölthetők: http://infoteka.hu/ugyviteli-szoftverek/

Részletesebben

BaBér bérügyviteli rendszer telepítési segédlete 2011. év

BaBér bérügyviteli rendszer telepítési segédlete 2011. év BaBér bérügyviteli rendszer telepítési segédlete 2011. év Ajánlott konfiguráció A program hardverigénye: Konfiguráció: 2800 MHz processzor 512 Mbyte memória (RAM) / Szerver gépen 1G memória (RAM) Lézernyomtató

Részletesebben

Alternatív adatbázisok Gráfadatbázisok

Alternatív adatbázisok Gráfadatbázisok Alternatív adatbázisok Gráfadatbázisok Adatbázis típusok Relációs PostgreSQL, Oracle, MySQL, stb. Dokumentum MongoDB, CouchDB, OrientDB Gráfadatbázis Neo4J, OrientDB, ArangoDB, InfiniteGraph Key-value

Részletesebben

Ezek után már csak a Mentés és a Lekérdezés Futtatása (az ellenőrzés miatt) van hátra. Ügyeljünk, hogy a mentésnél a megadott (Kezd) nevet adjuk meg.

Ezek után már csak a Mentés és a Lekérdezés Futtatása (az ellenőrzés miatt) van hátra. Ügyeljünk, hogy a mentésnél a megadott (Kezd) nevet adjuk meg. 1. A feladat szövegéből kiderül, hogy a teljes adatbázisból a feltétel szerint szűkíteni akarunk, vagyis az alapértelmezett Választó lekérdezést kell használni. Szintén a feladat szövegéből látszik, hogy

Részletesebben

Nyilvántartási Rendszer

Nyilvántartási Rendszer Nyilvántartási Rendszer Veszprém Megyei Levéltár 2011.04.14. Készítette: Juszt Miklós Honnan indultunk? Rövid történeti áttekintés 2003 2007 2008-2011 Access alapú raktári topográfia Adatbázis optimalizálás,

Részletesebben

Felhasználói kézikönyv. Verzió: 1.01

Felhasználói kézikönyv. Verzió: 1.01 Felhasználói kézikönyv Verzió: 1.01 Tartalomjegyzék Általános áttekintés 3 A DocGP rendszer célja 3 A rendszer által biztosított szolgáltatások 3 A felhasználói felület elérése 3 JAVA JRE telepítése 3

Részletesebben

Általános statisztika II. Kriszt, Éva Varga, Edit Kenyeres, Erika Korpás, Attiláné Csernyák, László

Általános statisztika II. Kriszt, Éva Varga, Edit Kenyeres, Erika Korpás, Attiláné Csernyák, László Általános statisztika II Kriszt, Éva Varga, Edit Kenyeres, Erika Korpás, Attiláné Csernyák, László Általános statisztika II Kriszt, Éva Varga, Edit Kenyeres, Erika Korpás, Attiláné Csernyák, László Publication

Részletesebben

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED BASH bevezetés, script írása, futtatása Operációs rendszerek 4. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik

Részletesebben

MTA Cloud Use cases MTA Cloud workshop. Hernáth Szabolcs MTA WIGNER FK

MTA Cloud Use cases MTA Cloud workshop. Hernáth Szabolcs MTA WIGNER FK MTA Cloud Use cases MTA Cloud workshop Hernáth Szabolcs MTA WIGNER FK IT felhasználás dimenziói Felhasználók száma / jellege Kapacitás mérete / jellege Számítási feladat / szoftverkörnyezet Adatok mérete

Részletesebben

Fogalmak: Adatbázis Tábla Adatbázis sorai: Adatbázis oszlopai azonosító mező, egyedi kulcs Lekérdezések Jelentés Adattípusok: Szöveg Feljegyzés Szám

Fogalmak: Adatbázis Tábla Adatbázis sorai: Adatbázis oszlopai azonosító mező, egyedi kulcs Lekérdezések Jelentés Adattípusok: Szöveg Feljegyzés Szám Fogalmak: Adatbázis: logikailag összefüggő információ vagy adatgyőjtemény. Tábla: logikailag összetartozó adatok sorokból és oszlopokból álló elrendezése. Adatbázis sorai: (adat)rekord Adatbázis oszlopai:

Részletesebben

Vodafone ODI ETL eszközzel töltött adattárház Disaster Recovery megoldása. Rákosi Péter és Lányi Árpád

Vodafone ODI ETL eszközzel töltött adattárház Disaster Recovery megoldása. Rákosi Péter és Lányi Árpád Vodafone ODI ETL eszközzel töltött adattárház Disaster Recovery megoldása Rákosi Péter és Lányi Árpád Adattárház korábbi üzemeltetési jellemzői Online szolgáltatásokat nem szolgált ki, klasszikus elemzésre

Részletesebben

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése Célok: gyors lekérdezés, gyors adatmódosítás, minél kisebb tárolási terület. Kezdetek Nincs általánosan legjobb optimalizáció. Az egyik

Részletesebben

Web-fejlesztés NGM_IN002_1

Web-fejlesztés NGM_IN002_1 Web-fejlesztés NGM_IN002_1 Rich Internet Applications RIA Vékony-kliens generált (statikus) HTML megjelenítése szerver oldali feldolgozással szinkron oldal megjelenítéssel RIA desktop alkalmazások funkcionalitása

Részletesebben

7. fejezet: Mutatók és tömbök

7. fejezet: Mutatók és tömbök 7. fejezet: Mutatók és tömbök Minden komolyabb programozási nyelvben vannak tömbök, amelyek gondos kezekben komoly fegyvert jelenthetnek. Először is tanuljunk meg tömböt deklarálni! //Tömbök használata

Részletesebben

FELHASZ ÁLÓI KÉZIKÖ YV. Számlázó programhoz

FELHASZ ÁLÓI KÉZIKÖ YV. Számlázó programhoz LafiSoft program FELHASZ ÁLÓI KÉZIKÖ YV Számlázó programhoz Kiss Zoltán Számítógép programozó Telepítése: Helyezze be a CD-t a CD ROM-ba, majd kattintson a SAJÁTGÉP => CD ROM mappára ahol látni fog egy

Részletesebben

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - bevezetés Operációs rendszerek 10. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 1 / 15 Reguláris

Részletesebben

Oktatási cloud használata

Oktatási cloud használata Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnikai és Információs Rendszerek Tanszék Oktatási cloud használata Készítette: Tóth Áron (BME MIT), 2013. A segédlet célja a tanszéki oktatási cloud

Részletesebben

KELE3. Felhasználói kézikönyv

KELE3. Felhasználói kézikönyv KELE3 Felhasználói kézikönyv Tartalomjegyzék Bevezetés 9 Üdvözlet 9 Kezdetek 10 Rendszerkövetelmények 10 Kérdések, észrevételek 10 Telepítés 10 Frissítések 10 A program használata 11 Bejelentkezés 11 Automatikus

Részletesebben

Kaszás Tímea: Corvina OPAC az SZTE Mez gazdasági Könyvtárában

Kaszás Tímea: Corvina OPAC az SZTE Mez gazdasági Könyvtárában Kaszás Tímea: Corvina OPAC az SZTE Mez gazdasági Könyvtárában Bevezetés Az amerikai Voyager integrált könyvtári rendszer magyar installálásának eredménye a Corvina rendszer. A Corvina-t használó könyvtárak

Részletesebben

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

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2 Az indexelés újdonságai Oracle Database 12c R1 és 12c R2 Szabó Rozalinda Oracle adattárház szakértő, oktató szabo.rozalinda@gmail.com Index tömörítés fejlődése 8.1.3-as verziótól: Basic (Prefixes) index

Részletesebben

Adatbáziskezelés alapjai. jegyzet

Adatbáziskezelés alapjai. jegyzet Juhász Adrienn Adatbáziskezelés alapja 1 Adatbáziskezelés alapjai jegyzet Készítette: Juhász Adrienn Juhász Adrienn Adatbáziskezelés alapja 2 Fogalmak: Adatbázis: logikailag összefüggı információ vagy

Részletesebben

9. MPI

9. MPI 9. MPI kertesz.gabor@nik.uni-obuda.hu MPI Message Passing Interface Elosztott memóriájú párhuzamos programozási API Gyk. folyamatok közötti kommunikáció de facto ipari standard Több száz előre definiált

Részletesebben

Adatbázis rendszerek I

Adatbázis rendszerek I Normalizálás 1NF 2NF BCNF Adatbázis rendszerek I 20111201 1NF 2NF BCNF Ha BCNF 2NF A B B A 2NF BCNF 2NF részkulcsból indul ki FD létezik FD, amely nem jelölt kulcsból indul ki Jelölt kulcs olyan mezőcsoport

Részletesebben

E mail titkosítás az üzleti életben ma már követelmény! Ön szerint ki tudja elolvasni bizalmas email leveleinket?

E mail titkosítás az üzleti életben ma már követelmény! Ön szerint ki tudja elolvasni bizalmas email leveleinket? E mail titkosítás az üzleti életben ma már követelmény! Ön szerint ki tudja elolvasni bizalmas email leveleinket? Egy email szövegében elhelyezet információ annyira biztonságos, mintha ugyanazt az információt

Részletesebben

Adatbázisok elleni fenyegetések rendszerezése. Fleiner Rita BMF/NIK Robothadviselés 2009

Adatbázisok elleni fenyegetések rendszerezése. Fleiner Rita BMF/NIK Robothadviselés 2009 Adatbázisok elleni fenyegetések rendszerezése Fleiner Rita BMF/NIK Robothadviselés 2009 Előadás tartalma Adatbázis biztonsággal kapcsolatos fogalmak értelmezése Rendszertani alapok Rendszerezési kategóriák

Részletesebben

SZAKDOLGOZAT ÓBUDAI EGYETEM. Neumann János Informatikai kar Alba Regia Egyetemi Központ

SZAKDOLGOZAT ÓBUDAI EGYETEM. Neumann János Informatikai kar Alba Regia Egyetemi Központ ÓBUDAI EGYETEM Neumann János Informatikai kar Alba Regia Egyetemi Központ SZAKDOLGOZAT OE-NIK Hallgató neve: Berencsi Gergő Zsolt 2010. Törzskönyvi száma: T 000123/FI38878/S-N Tartalomjegyzék Tartalmi

Részletesebben

API tervezése mobil környezetbe. gyakorlat

API tervezése mobil környezetbe. gyakorlat API tervezése mobil környezetbe gyakorlat Feladat Szenzoradatokat gyűjtő rendszer Mobil klienssel Webes adminisztrációs felület API felhasználói Szenzor node Egyirányú adatküldés Kis számítási kapacitás

Részletesebben

Párhuzamos programozási platformok

Párhuzamos programozási platformok Párhuzamos programozási platformok Parallel számítógép részei Hardver Több processzor Több memória Kapcsolatot biztosító hálózat Rendszer szoftver Párhuzamos operációs rendszer Konkurenciát biztosító programozási

Részletesebben

Moodle-integrálás intézményi környezetben

Moodle-integrálás intézményi környezetben Moodle-integrálás intézményi környezetben Dr. Tornóci László, Dr. Kokovay Ágnes Semmelweis Egyetem E-learning és Digitális Tartalomfejlesztő Igazgatóság A felhasználóazonosítás és a jogosultságkezelés

Részletesebben

Microsoft SQL Server telepítése

Microsoft SQL Server telepítése Microsoft SQL Server telepítése Az SQL Server a Microsoft adatbázis kiszolgáló megoldása Windows operációs rendszerekre. Az SQL Server 1.0 verziója 1989-ben jelent meg, amelyet tizenegy további verzió

Részletesebben

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. május 6. Parancssori paraméterek Parancssorban történ programindításkor a program nevét követ en szóközökkel elválasztva paraméterek (command

Részletesebben

Felhőalkalmazások a. könyvvizsgálatban

Felhőalkalmazások a. könyvvizsgálatban Felhőalkalmazások a könyvvizsgálatban Bevezetés cloud computing google keresés Nagyjából 247 000 000 találat (0,39 másodperc) Felhő alapú szolgáltatások jellemzője: bárhonnan (ahol Internet elérés biztosított),

Részletesebben

Kifizetések kezelése. 1 Kifizetési dátumok megadása pénzügyi kódokhoz

Kifizetések kezelése. 1 Kifizetési dátumok megadása pénzügyi kódokhoz Kifizetések kezelése 1 Kifizetési dátumok megadása pénzügyi kódokhoz 1.1 Pénzügyi kódok menüponttól indulva Pénzügyek (kék menüpont, csak lenyitni + jelnél)(78600)/kifizetési jogcímek (jogcím kiválasztása)

Részletesebben

Adatbázis rendszerek Gy: Az adattárolás fejlődése

Adatbázis rendszerek Gy: Az adattárolás fejlődése Adatbázis rendszerek 1. 2. Gy: Az adattárolás fejlődése 1/22 B ITv: MAN 2017.09.17 Papír alapú adattárolás Lyukkártya 2/22 Probléma: 3/22 Papír alapú adattárolás Lyukszalag 4/22 Papír alapú adattárolás

Részletesebben

Csoportos üzenetszórás optimalizálása klaszter rendszerekben

Csoportos üzenetszórás optimalizálása klaszter rendszerekben Csoportos üzenetszórás optimalizálása klaszter rendszerekben Készítette: Juhász Sándor Csikvári András Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Automatizálási

Részletesebben

GroupWise 5.2 használói jegyzet

GroupWise 5.2 használói jegyzet GroupWise 5.2 használói jegyzet 32 bites verzió Készítette: Borsodi Gábor, ABS Consulting Kft. (http://www.abs.hu) 1998-2001 Ez a dokumentáció szabadon felhasználható (nyomtatható, másolható) és terjeszthet,

Részletesebben

Tájékoztató. Használható segédeszköz: -

Tájékoztató. Használható segédeszköz: - A 12/2013. (III. 29. NFM rendelet szakmai és vizsgakövetelménye alapján. Szakképesítés, azonosítószáma és megnevezése 54 481 06 Informatikai rendszerüzemeltető Tájékoztató A vizsgázó az első lapra írja

Részletesebben

Lemezkezelés, állományrendszerek

Lemezkezelés, állományrendszerek Lemezkezelés, állományrendszerek A fizikai lemezek területét használat előtt logikai lemezekké kell szerveznünk. A logikai lemez az az egység, amely a felhasználó számára külön lemezként jelenik meg, vagyis

Részletesebben

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS Hartung István BME Irányítástechnika és Informatika Tanszék TEMATIKA Cloud definíció, típusok, megvalósítási modellek Rövid Azure cloud bemutatás

Részletesebben