Elosztott Hash Táblák. Jelasity Márk



Hasonló dokumentumok
Hálózatba kapcsolt erőforrás platformok és alkalmazásaik. Simon Csaba TMIT 2017

Hálózatok II 2005/ : Peer-To-Peer Hálózatok II

Elosztott adatbázisok és peerto-peer. Simon Csaba

Big data amikor a probléma az adat mérete maga

Teljesen elosztott adatbányászat alprojekt

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

Infrastruktúrához igazodó alkalmazások

Felhasználói réteg. Számítógépes Hálózatok Domain Name System (DNS) (RFC 821/822) Domain Name System

Pacemaker készülékek szoftverének verifikációja. Hesz Gábor

Körkép a lakossági felhasználók fogyasztásának készülékszintű becsléséről (NILM)

XSLT XML. DEIM Forum 2013 B2-1 XML XML XML XML XSLT XSLT XSLT XML XSLT XSLT

Policy keretrendszer dinamikus hálózatkompozíciók automatizált tárgyalási folyamatához

Kollektív tanulás milliós hálózatokban. Jelasity Márk

DroidLab Androidos eszközökkel épített teszthálózat. Vida Rolland, BME-TMIT szeptember 27.

mobil rádióhálózatokban

A CAN mint ipari kommunikációs protokoll CAN as industrial communication protocol

A KUTATÁS EREDMÉNYEI ZÁRÓJELENTÉS

Teljesen elosztott adatfeldogozás és adatbányászat

Bevezetés a programozásba. 12. Előadás: 8 királynő

Andrew S.Tanenbaum. Számítógéphálózatok. Második, bővített, átdolgozott kiadás. Panem

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

VIRTUAL NETWORK EMBEDDING VIRTUÁLIS HÁLÓZAT BEÁGYAZÁS

Távközlô hálózati folyamatok monitorozása

A DIPLOMADOLGOZAT SZERKESZTÉSE

Elosztott rendszerek

Előrenéző és paraméter tanuló algoritmusok on-line klaszterezési problémákra

Peer-to-peer alapú betörésérzékelés

TITOKMEGOSZTÁS ÉS TÖBBRÉSZTVEVŐS SZÁMÍTÁSOK. Szakdolgozat. Írta: Zentai Dániel Matematika bsc szak Alkalmazott matematikus szakirány.

Valós idejû számlázás mobil környezetben

Adatfolyam alapú RACER tömbprocesszor és algoritmus implementációs módszerek valamint azok alkalmazásai parallel, heterogén számítási architektúrákra

Publikációs lista. Gódor Győző július 14. Cikk szerkesztett könyvben Külföldön megjelent idegen nyelvű folyóiratcikk...

A nyilvános kulcsú infrastruktúra önálló kialakításának szükségessége

Dinamikus programozás alapú szivattyú üzemvitel optimalizálási technikák (főként) kombinatorikus vízműhálózatokra

Vezetői információs rendszerek

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

Önszerveződő adatbázisok

Teljesen elosztott adatbányászat pletyka algoritmusokkal. Jelasity Márk Ormándi Róbert, Hegedűs István

AKTUÁTOR MODELLEK KIVÁLASZTÁSA ÉS OBJEKTÍV ÖSSZEHASONLÍTÁSA

Kétdimenziós mesterséges festési eljárások. Hatások és alkalmazások

Informatika. Magyar-angol két tanítási nyelvű osztály tanterve. 9. évfolyam

Algoritmusok és adatszerkezetek 2.

Algoritmusok és adatszerkezetek gyakorlat 07

Mérnök informatikus (BSc) alapszak levelező tagozat (BIL) / BSc in Engineering Information Technology (Part Time)

Számítógépes adatbiztonság

Telefonszám(ok) Mobil Fax(ok) Egyetem u. 10., 8200 Veszprém. Tehetséggondozás (matematika)

8. osztály. Felhasznált tankönyv: Pedellus Tankönyvkiadó, Debrecen, 2009; 2009

Adatszerkezetek 7a. Dr. IványiPéter

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

DSI működésre. tervezve. Hogyan fog kinézni a jövő informatikai infrastruktúrája? Egész szoftverrendszerek egy

Teszt generálás webes alkalmazásokhoz

Alkalmazások terjedésének vizsgálata mobil ad hoc hálózatokban

átvitt bitek számával jellemezhetjük. Ezt bit/s-ban mérjük (bps) vagy ennek többszöröseiben (kbps, Mbps).

V2V - Mobilitás és MANET

Taszkok ütemezése desktop-griden

Új algoritmusok a vezetéknélküli szenzoriális kommunikációhoz

SZOFTVEREK A SORBANÁLLÁSI ELMÉLET OKTATÁSÁBAN

Site design. Ez határozza meg a keretet. A fő cél. Meg kell határozni ki célközönség Mit akarunk elmondani Hogyan rendezzük el a tartalmat


Free Viewpoint Television: új perspektíva a 3D videó továbbításban

8. Mohó algoritmusok Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

Bevitel-Kivitel. Bevitel-Kivitel és Perifériák. Algoritmusok és Alkalmazásaik Tanszék Budapest december 16.

Tervezési kérdések. Azonnali helyreállítást garantáló védelmi módszerek. Helyreállítási (recovery) ciklus

Közösségi kapcsolatok a virtuális térben a Facebook-használat statisztikai elemzése

A magánélet védelme az elosztott adatbányászatban

Pletykaalapú gépi tanulás teljesen elosztott környezetben

RLC-alapú HSDPA szállítóhálózati torlódásvezérlés

Internet of Things 2

GÉPI ÉS EMBERI POZICIONÁLÁSI, ÉRINTÉSI MŰVELETEK DINAMIKÁJA

A megerosítéses tanulás és a szimulált hutés kombinált használata: algoritmusok és alkalmazások

A Jövő Internet Nemzeti Kutatási Program és eredményei

PÁLYÁZAT. a SZÉCHENYI ISTVÁN EGYETEM MŰSZAKI TUDOMÁNYI KAR KUTATÁSI FŐIRÁNY pályázati felhívásához. 1. A pályázó kollektíva vezetőjének adatai:

I. Az internet alapjai

Klasztervizsgálat, keresés hálózatokban

10. fejezet Az adatkapcsolati réteg

Szemantikus protokollt alkalmazó mobil Peer-to-Peer kliensszoftver

Számítógép hálózatok, osztott rendszerek 2009

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

GOOGLE ANALITYCS VS. SPSS CLEMENTINE

ATM hálózatra épülő Interaktív Televízió Szolgáltatás

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Intelligens robotok. Előadás vázlat. 1 előadás

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

Organizáció. Számítógépes Hálózatok ősz Tartalom. Vizsga. Web-oldal

MIT IS MONDOTT? HOGY IS HÍVJÁK? ELIGAZODÁS A KÁRTEVŐK VILÁGÁBAN

Algoritmus vizualizáció a tanítási gyakorlatban. Törley Gábor

Máté: Számítógép architektúrák

Szoftveripar és üzleti modellek

Információ-visszakeresı módszerek egységes keretrendszere és alkalmazásai. Kiezer Tamás

Entity Resolution azonosságfeloldás

Vasúti fejlesztések. Dr. Szepessy Zsolt K+F ágazatvezető. evopro Kft.

ÚTON AZ 5. GENERÁCIÓ FELÉ

Peer-to-peer alapú elosztott fájlrendszerek

Számítógépes Hálózatok Felhasználói réteg DNS, , http, P2P

Felhasználói réteg. Számítógépes Hálózatok Domain Name System (DNS) DNS. Domain Name System

Multicast és forgalomkötegelés többrétegû hálózatokban

Bevezetés a programozásba 2

PÁLYÁZATI LAP a Színpadon a Természettudomány 2014 rendezvényre

ALKALMAZÁS MONITOROZÁS A MERCURY MONITORRAL A CLUSTERGRID INFRASTRUKTÚRÁN. Gombás Gábor, gombasg@sztaki.hu MTA SZTAKI

Profitálj naponta Te is az egyre növekvő globális online reklámpiac bevételeiből!

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

Átírás:

Elosztott Hash Táblák Jelasity Márk

Motiváció Nagyméretű hálózatos elosztott rendszerek az Interneten egyre fontosabbak Fájlcserélő rendszerek (BitTorrent, stb), Grid, Felhő, Gigantikus adatközpontok, Botnetek Ezek számára speciális algoritmusokat kell kifejleszteni! Koordináció, terheléselosztás, adattárolás és visszakeresés, adatelemzés, stb. 2

Rendszermodell Elvonatkoztatunk az előbbi konkrét rendszerektől, és az esszenciájukra koncentrálunk hagyományos algoritmus kurzusokon is van rendszermodell Központi CPU, RAM, stb. Még itt is figyelni kell: pl. virtuális memória esetén más a praktikus időkomplexitás Esetünkben a rendszermodell kulcsfontosságú 3

Rendszermodell Nagyon sok CPU, amelyek saját memóriával rendelkeznek (komplett számítógépek) Ezentúl csomópontnak hívjuk őket (node) Csomagkapcsolt hálózat segítségével kommunikálnak Minden csomópont hálózati címmel rendelkezik A cím ismeretében a csomópont számára üzenet küldhető bármely másik csomópontból Az üzenetek a hálózatban késhetnek, és el is veszhetnek, sorrendjük sem garantált 4

Rendszermodell A csomópontok bármikor távozhatnak a rendszerből figyelmeztetés nélkül Bármikor csatlakozhat új csomópont a rendszerhez A csomópontok száma akár milliós nagyságrendű is lehet Egyszóval, óriási, extrém módon dinamikus és elég megbízhatatlan komponensekből álló rendszer Viszont óriási számítási-, tároló-, és kommunikációs kapacitással 5

Fedőhálózatok (overlay networks) Szeretnénk egységes, megbízható, hatékony rendszerré kovácsolni ezt a kaotikus rendszert Egy megoldás: az alkalmazási rétegben lakó protokollokkal un. fedőhálózatot alakítunk ki Virtuális hálózat, amit az ismeretségi reláció definiál Független a fizikai hálózattól Ennek a segítségével pl. elosztott adatszerkezeteket építhetünk, amik egy egyszerű interfészen keresztül kezelhetők; pl. hash tábla. 6

Fedőhálózat fedőhálózat B A B látképe A leírója C C leírója D E E leírója F 7

Elosztott adatszerkezetek Kb. mint a linkelt adatszerkezetek, de speciális problémák A A Dinamizmust kezelni kell, és nem minden szerkezet valósítható meg egyszerűen, pl. láncok, fák problémásak (de nem lehetetlen!) B C D B C D 8

Hash táblák Kulcsok és szatellit adatok tárolása Allokált hash tábla tömb Tárolt (key,value) párok put(key,value) 1=h(k 1 )=h(k 2 ) k 1 v 1 k 2 v 2 value = get(key) remove(key) A h() hash függvény a cella indexét adja meg A (key,value) pár pl. az adott cellából linkelt listába kerülhet 2 3=h(k 3 )=h(k 4 ) 4 5=h(k 5 ) 5 k 3 v 3 k 5 v 5 k 4 v 4 9

Miért kell hash tábla? Ideális esetben N kulcsot O(N) időben tudunk O(N) méretű helyre eltárolni, és O(1) időben elérni minden kulcsot. Tehát gyorsan tudunk keresni tetszőleges kulcsokra (bár a szatellit adatok attribútumaira nem tudunk gyorsan keresni!) A kulcs lehet pl. fájlnév, az adat maga a fájl, vagy esetleg egy link a fájlra. A cél ugyanezt elérni az elosztott rendszerünkben 10

Első lépés: konzisztens hash-elés A hash táblákban a tömb átméretezése nagyon költséges, mert majdnem minden kulcs új cellába kerül Konzisztens hash-elés: olyan hash tábla implementáció, ahol egyedi cellák hozzáadása vagy törlése olcsó művelet Törlés esetén csak a törölt cella elemeit kell áthelyezni Hozzáadás esetén régi cellák között nincs adatforgalom (monotonitás) 11

Konzisztens hash-elés: egy példa Tárolandó kulcsok k 1 h() hash függvény 1 g() hash függvény Aktuális csomópontok a hálózatban Tárolt (key,value) párok k 2 c 1 k 1 v 1 k 5 v 5 k 3 c 2 k 3 v 3 k 4 v 4 k 4 c 3 k 2 v 2 k 5 0 12

Konzisztens hash-elés még egyszer Absztrakt allokált tömb, más néven azonosító (ID) tér Aktuális csomópontok a hálózatban (g() szerint rendezve) Tárolt (key,value) párok 1=h(k 1 )=h(k 2 ) 2 2 k 1 v 1 k 2 v 2 3=h(k 3 ) 4=h(k 4 ) 4 k 3 v 3 k 4 v 4 5=h(k 5 ) 6 7 k 5 v 5 7 13

Konzisztens hash-elés és fedőhálózatok Tehát, minden esetben Egy k kulcshoz kiszámoljuk a h(k) hash értéket A konzisztens hash tábla definíciója ehhez hozzárendel egy éppen aktív csomópontot Ezt a csomópontot meg kell találni! Ezt pedig egy speciális fedőhálózat segítségével csináljuk, amelyben egy alkalmas útvonalválasztó algoritmus a megfelelő csomóponthoz vezet 14

Elosztott hash táblák Rengeteg variáció létezik: sokfajta Konzisztens hash-elés Fedőhálózat Ennek konkrét felépítő és fenntartó algoritmusai Útvonalválasztás Ezek különböznek több szempontból Útvonalválasztás átlagos üzenetkomplexitása Fedőhálózat egy csomópontjának tárkomplexitása Robosztusság, megbízhatóság, egyszerűség, stb 15

Chord Az egyik első, és egyben legidézettebb elosztott hash tábla: első cikkre 8500+ idézet a google scholar szerint! Előnyei: Egyszerű Üzenet- és tárkomplexitás egyaránt O(log N), ahol N a hálózat mérete A konzisztens hash-elést egy rendezett gyűrűt formáló fedőhálózat implementálja 16

A Chord gyűrű Azonosító gyűrű 10 csomópont 5 kulcs (Az azonosító egy 160 bites szám, az SHA-1 hash függvényt használja) Adott hash-kódhoz a rákövetkező csomópontot rendeljük 17

Egy primitív visszakereső algoritmus A feladat tehát a rákövetkező pont megtalálása adott kulcshoz Pl. mehetünk körbe... Ez O(N) üzenet: túl sok // ask node n to find the successor of id n.find_successor(id) if (id (n, successor]) return successor; else // forward the query around the circle return successor.find_successor(id); 18

Egy hatékony visszakereső algoritmus 19

Egy hatékony visszakereső algoritmus // ask node n to find the successor of id n.find_successor(id) if (id (n, successor]) return successor; else n'=closest_preceeding_node(id) return n'.find_successor(id) // ask node n to find the predecessor of id n.closest_preceeding_node(id) for i = m downto 1 if (finger[i] (n,id)) return finger[i] return n' A leközelebbi megelőző fingerre ugrunk, amíg elérjük a célt Itt feltesszük, hogy távoli eljáráshívással működik, de lehet mobil ágens szerű is 20

Komplexitás Várhatóan O(log N) szomszéd kell minden csomóponton: A finger táblában definíció szerint log 2 M sor van, ahol M az azonosító tér mérete (pl 160 bites azonosítóknál a tábla max 160 sorból áll) ezen kívül O(1) szomszéd a gyűrűben Ez azt jelenti, hogy várhatóan O(log N) másik csomópontról tárolunk információt, hiszen az első log M/N finger várhatóan csak O(1) különböző csomópontra mutathat 21

Komplexitás O(log N) üzenettovábbítás minden visszakeresésnél nagy valószínűséggel (with high probability, w.h.p.): A távolság a céltól a gyűrű mentén minden lépésben legalább feleződik tehát log 2 N lépés után a távolság maximum M/N (ahol M a gyűrű kerülete), de egy M/N hosszú intervallumban már csak O(1) csomópont van várható értékben Max O(log N) csomópont van w.h.p. mivel a csomópontok azonosítója véletlen 22

Csomópontok belépése és hibák Egy új csomópontnak Meg kell találnia a megelőző, rákövetkező, és finger szomszédait Értesítenie kell azon csomópontokat, amelyek számára ő megelőző, rákövetkező, vagy finger szomszéd lehet Lézezik protokoll, ami ezt O(log N) időben megoldja, de ez elég komplikált Létezik egy nyugis, egyszerű protokoll, ami folyamatosan fut, és a hibajavításért is felelős egyúttal 23

Csatlakozás: egy nyugis megoldás Ha a gyűrű helyes, akkor a működés már megfelelő: a fingerek csak a sebességhez kellenek Stabilizáció Minden csomópont szabályos időközönként futtatja Minen csomópont szabályos időközönként meghívja a find_successor(n+2 i-1 ) függvényt is egy véletlen i-re Minden hívás költsége O(log N) csomópontonként n.join(n') predecessor = nil; sucessor = n'.find_successor(n); n.stabilize() x = sucessor.predecessor; if (x (n, successor) ) successor = x; successor.notify(n); 24

Csatlakozás: egy nyugis megoldás Csatlakozás: találd meg a rákövetkezőt, aztán stabilizálj Mivel a gyűrű gyorsan kiegészül, az útvonalválasztás működik Az útvonalválasztás O(log N) idejű marad, ha a fingerek megtalálása gyorsabban végbemegy, mint ahogy a hálózat mérete megduplázódik 25

Hibák kezelése A hibás (kieső) csomópontok kezelése Replikáció: egy rákövetkező helyett helyett r rákövetkező szomszédot tárolunk Robusztus a hibákra, mert ha a rákövetkező szomszéd kiesik, könnyen megtaláljuk az újat Altenratív útvonalak Ha egy finger nem válaszol, válasszuk az előző fingert, vagy a replikált rákövetkező szomszédot, ha már közel vagyunk Az adattárolás robosztussá tételéhez replikálhatjuk a kulcsokat is A tárolt adatok hasonló robosztusságra tesznek szert 26

Számítási komplexitás A Chord, és még sok más megoldás O(logN) tár- és úthossz komplexitással rendelkezik O(1) tárkomplexitás is elérhető O(logN) úthossz komplexitással (pl. Viceroy) vagy O(log 2 N) (Symphony) úthossz komplexitással A Kelips algoritmus O(N 1/2 ) tárkapacitású és O(1) útvonalhosszt ér el, de ehhez kell kulcsreplikáció. 27

Főbb pontok A fedőhálózatok a nagyméretű, megbízhatatlan, elosztott rendszerek egyik fő eszköze Az elosztott hashtáblák fő összetevői Konzisztens hash-elés Egy fedőhálózat, ami implementálja az útvonalválasztó algoritmust egy adott kulcs megtalálásához A Chord egy gyűrű hálózatot használ, shortcut élekkel, és O(log N) tár- és ótvonalhossz komplexitást ér el Az elméleti határ O(log N) útvonalhosszhoz O(1) tárkomplexitás 28

References Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, and Hari Balakrishnan. Chord: A scalable peerto-peer lookup service for internet applications. In Proceedings of the 2001 Conference on Applications, Technologies, Architectures, and Protocols for Computer Communications (SIGCOMM), pages 149 160, San Diego, CA, 2001. ACM, ACM Press. David Karger, Eric Lehman, Tom Leighton, Rina Panigrahy, Matthew Levine, and Daniel Lewin. Consistent hashing and random trees: distributed caching protocols for relieving hot spots on the World Wide Web. In Proceedings of the twenty-ninth annual ACM symposium on Theory of computing (STOC '97), pages 654 663, New York, NY, USA, 1997. ACM. Gurmeet Singh Manku, Mayank Bawa, and Prabhakar Raghavan. Symphony: Distributed hashing in a small world. In Proceedings of the 4th USENIX Symposium on Internet Technologies and Systems (USITS'03), 2003. Dahlia Malkhi, Moni Naor, and David Ratajczak. Viceroy: A scalable and dynamic emulation of the butterfly. In Proceedings of the 21st ACM Symposium on Principles of Distributed Computing (PODC'02), pages 183 192, New York, NY, USA, 2002. ACM. Indranil Gupta, Ken Birman, Prakash Linga, Al Demers, and Robbert Renesse. Kelips: Building an efficient and stable P2P DHT through increased memory and background overhead. In Peer-to-Peer Systems II (IPTPS'03), volume 2735 of Lecture Notes in Computer Science, pages 160 169. Springer Berlin / Heidelberg, 2003. Eng Keong Lua, Jon Crowcroft, Marcelo Pias, Ravi Sharma, and Steven Lim. A survey and comparison of peer-to-peer overlay network schemes. IEEE Communications Surveys and Tutorials, 7(2):72 93, 2005. 29