Perzisztens adatkezelés megvalósítása a SZTAKI saját klaszterén 2. DemoGRID beszámoló 2002-06-10 PERZISZTENS ADATKEZELÉS MEGVALÓSÍTÁSA A SZTAKI SAJÁT KLASZTERÉN... 1 BEVEZETÉS... 2 GRIDFTP LÉNYEGE... 2 AZ ADAT ERŐFORRÁS... 2 Adatátviteli kapacitás növelése... 3 Adatmennyiség csökkentése... 3 Adatok párhuzamos feldolgozása... 3 GRIDFTP ADTA LEHETŐSÉGEK... 4 MÓDSZERÜNK LÉNYEGE... 4 TÁMOGATÁS A GRIDFTP-BEN... 5 ALTERNATÍV LEHETŐSÉGEK...5 A MÓDSZER LÉPÉSEI... 6 MÓDSZERÜNK RÉSZLETEZÉSE... 6 A PÁRHUZAMOS FELDOLGOZÁS KITERJESZTÉSÉNEK LEHETŐSÉGEI A JELENLEGI KERETEKEN BELÜL... 6 A PÁRHUZAMOS FELDOLGOZÁS KITERJESZTÉSÉRE JAVASOLT MEGOLDÁS GYAKORLATI MEGVALÓSÍTÁSA... 7 A PÁRHUZAMOS FELDOLGOZÁS ÁLTALÁNOSÍTÁSA A GRIDFTP PROTOKOLL KIEGÉSZÍTÉSÉRE... 9 dg-rep-2-7-persistent.doc 2002-06-10 1/10
Bevezetés Ez a dokumentum a GRID szintű perzisztens adatok kezelésének kidolgozására irányuló tevékenységünk második fázisában végzett munkákat foglalja össze. Az első fázisban megvizsgáltuk, hogy a Globus rendszer milyen lehetőségeket biztosít a perzisztens adatok kezelésére, illetve, hogy milyen megoldási lehetőségek jöhetnek szóba. Ennek keretében elsősorban a GRID erőforrások közül az adatra (illetve adat-átvitelre) koncentráltunk és így a GridFTP-t, a GRID adatátviteli protokollját elemeztük. Ebben a beszámolóban a perzisztens adatkezelésnek a SZTAKI lokális rendszerében való megvalósításával foglalkozunk. Az előző munkaszakaszban elvégzett tanulmányok alapján egy konkrét eszközkészletet választottunk ki és megfelelő adaptációval elosztott perzisztens adatkezelést valósítottunk meg. Ennek során egy általános, a GRID filozófiához illeszkedő módszert dolgoztunk ki. Kipróbálása a következő fázisban történik, amikor a többi konzorciumi taggal együtt a perzisztens adatkezelő rendszert alkalmazzunk és teszteljük a közös GRID környezetben. GridFTP lényege A GridFTP az FTP-n alapuló nagysebességű, biztonságos és megbízható adatátviteli protokoll, amely a GRID-en belüli adatelérés infrastruktúráját valósítja meg. Az infrastruktúra szerep azt jelenti, hogy minden magasabb szintű protokoll erre az alapra épít. A GRID filozófiája az, hogy a feladatok végrehajtása kötegelt módon történik, tehát a felhasználó elkészíti a feldolgozó programját, ezt a feldolgozó programot eljuttatja arra a számítógépre, ahol a feldolgozás fog történni, a feldolgozandó adatokat szintén eljuttatja a feldolgozó számítógépre, majd a program lefutása után az eredményeket visszajuttatja a kiindulási helyre. Ez általában azt jelenti, hogy igen jelentős mennyiségű adatot kell mozgatni a GRID-en belül. Az adatok mozgatása az FTP protokoll segítségével történik. Mivel nagy mennyiségű adatokról van szó, ezért az alap FTP protokoll kiegészítésére volt szükség. A kiegészített protokoll a GridFTP protokoll. Az alábbiakban összefoglaljuk a GridFTP protokoll kiegészítésének megközelítéseit. Az adat erőforrás Az adat a GRID-en belül az egyik legfontosabb erőforrás, amely kifinomult kezelést igényel és sokoldalú követelményeket támaszt. Általánosan megfogalmazható igény a szükséges adat gyors elérése, illetve átvitele. További igény még az adatátvitel megbízhatósága és biztonságossága. Az adatátvitel gyorsításának az egyik módja a hálózati átviteli eszközök gyorsítása, de az adott átviteli eszközök mellett mindig van lehetőség egyéb technikák bevetésére az átvitel dg-rep-2-7-persistent.doc 2002-06-10 2/10
további gyorsítására. A projekt keretében mi ezekkel a kiegészítő gyorsítási lehetőségekkel foglalkoztunk. A gyors adatátvitel elérésének alapvetően három útja lehetséges: az adatátviteli kapacitás bővítése, az adatmennyiség csökkentése, az adatok párhuzamos feldolgozása. Az alábbiakban külön-külön összefoglaljuk ezeknek a megközelítéseknek a lehetőségeit. Adatátviteli kapacitás növelése Az adatátviteli kapacitás növelésére a következő lehetőségek vannak: párhuzamos adatátvitel, több adat csatorna egyidejű felhasználásával, amit a GridFTP-ben a SPAS, SPOR, RETR-OPTS, MODE-Extended Block Mode támogat, többszálú (striped) adatátvitel, több adat csatorna egyidejű felhasználásával, amit a GridFTP-ben a SPAS, SPOR, RETR-OPTS, MODE-Extended Block Mode támogat, a TCP puffer méret automatikus és kézi állíthatósága, amit a GridFTP-ben a SBUF, ABUF támogat, integrált teljesítmény fokozó eszközök: adat csatorna újra felhasználás, parancs pipelining, amit a GridFTP-ben a PIPE támogat. Adatmennyiség csökkentése Az adatátvitelt úgy is gyorsíthatjuk, hogy csak a szükséges adatokat visszük át. Erre a következő lehetőségek vannak: harmadik fél által vezérelhető adatátvitel, részleges adatátvitel (ESTO, ERET), hatékony adatátviteli hiba javítás (SREAM módban is). Adatok párhuzamos feldolgozása Az adatátvitel úgy is gyorsítható, ha már csak részben feldolgozott adatokat viszünk át a hálózaton és ehhez először az adatszolgáltató csomópontban egy feldolgozó programot futtatunk le. Erre a következő lehetőség van: az adatok feldolgozásának biztosítása a szerver oldalon (ERET, ESTO), dg-rep-2-7-persistent.doc 2002-06-10 3/10
GridFTP adta lehetőségek A GridFTP elsősorban az adatátviteli kapacitás növelésére törekszik, aminek elsődleges szerepe van a gyorsaság növelésében, ugyanakkor az átviendő adatok mennyiségének csökkenthetőségére is fogalmaz meg elveket, ami az adatok szerver oldali feldolgozásával érhető el. Módszerünk lényege A GRID szintű perzisztens adatok kezelésére kidolgozott módszerünk a szerver oldali elő feldolgozásra épül, mint ahogy azt az 1. ábra mutatja. 5 DB Access Application Processing node Structured data file FTP 4 Get 3 GRID 1 Select 2 Structured data file DB Access Structured data file Extract data Data store node 1. ábra Szerver oldali elő feldolgozás dg-rep-2-7-persistent.doc 2002-06-10 4/10
Ebben a megközelítésben az adatátvitel első lépése egy elő feldolgozó program meghívása az adatszolgáltató szerveren (1). Az elő feldolgozó program a nagyméretű és általában strukturált adatokat tartalmazó adatállományból kigyűjti és a szerveren egy kisebb méretű adatállományba menti azokat az adatokat, amiket később át akarunk vinni (2). Ezek után a feldolgozó oldal kezdeményezheti a kigyűjtött adatok átvitelét (3), ami FTP segítségével történik (4). Az átvitt és a feldolgozó oldalon tárolt adatokon a feldolgozó program elvégezheti a kívánt feldolgozást (5). Az eredmények visszahelyezése az eredeti adatállományba fordított sorrendben történik. A feldolgozó oldal kezdeményezi az eredmények átvitelét, ami FTP segítségével történik. Az átvitt eredmények az adatszolgáltató oldalon egy kisebb méretű adatállományt jelentenek. A feldolgozó oldal kezdeményezi ennek a kisebb méretű adatállománynak a feldolgozását és a nagyobb méretű teljes adat állományba helyezését egy utó feldolgozó program elindításával az adat szolgáltató csomóponton. Mindkét irányú adatátvitelnél az ideiglenesen keletkezett adatállományok utólagos eltávolításáról gondoskodni kell. Támogatás a GridFTP-ben A módszer megvalósítását jelenleg a GridFTP-ben az ERET és ESTO utasítások segítik. Ezek az utasítások adnak lehetőséget a szerver oldali, párhuzamos feldolgozásra. Az adatok párhuzamos feldolgozása egyúttal az átviendő adatok mennyiségét is csökkentheti. Az utasítások jelenlegi formájukban csak nagyon kezdetleges feldolgozást tesznek lehetővé; a részleges file írást és a részleges file olvasást. Alternatív lehetőségek Mivel a GridFTP jelenlegi változatával nem lehet közvetlenül megvalósítani a szerver oldali elő feldolgozást, ezért más megoldást kerestünk. Ehhez azt használtuk fel, hogy a GridFTP alapját képező FTP protokoll szerver-specifikus FTP parancsokat is engedélyez a SITE utasítás segítségével, és a szerverek egy része, köztük a GRID-ben használt wuftpd is, szerver oldali parancsok kiadását is lehetővé teszi az EXEC nevű SITE parancs segítségével. Ez a megoldás a meglévő ERET és ESTO GridFTP bővítésnél egy általánosabb megoldást nyújt a meglévő keretek mellett. Két parancsot igényel, amelyből az első rövid idejű, gyors parancs - a szerver oldalon elvégzendő feldolgozást (futtatandó parancsot) adja meg, a második az átviendő adat mennyiségétől függő ideig tartó - parancs pedig a feldolgozott adatok átvitelét hajtja végre. A két parancs sorrendje fordított is lehet, attól függően, hogy adat írásról vagy olvasásról van szó. Kedvező tapasztalatok esetén ezeket a műveleteket egyetlen új GridFTP paranccsá lehetne egyesíteni. dg-rep-2-7-persistent.doc 2002-06-10 5/10
A módszer lépései A módszer a következő lépésekből áll: adatfeldolgozó program specifikálása, elkészítése, adatfeldolgozó program elhelyezése a szerveren, adat olvasáskor az adat kinyerés végrehajtatása a szerveren SITE EXEC utasítással, kinyert adatok olvasása RETR utasítással, adat írás esetén először el kell küldeni a tárolandó adatokat a STOR utasítással, végre kell hajtatni a feldolgozást (tárolást) a szerver oldalon futtatott SITE EXEC utasítással. Módszerünk részletezése A párhuzamos feldolgozás kiterjesztésének lehetőségei a jelenlegi kereteken belül A GridFTP protokollt először a Globus Toolkit V2.0 részeként valósították meg, amely 2201. novemberétől 2002. áprilisáig beta állapotban volt elérhető, majd 2002. áprilisától jelent meg a végleges verziója. Ennek része a GridFTP Server (GT2GridFTP), amely a nyílt forráskódú wuftpd FTP szerver többek között GridFTP protokollal bővített változata. A fenti szerver gyakorlatilag megvalósítja a draft GridFTP protocol című dokumentumban ajánlott FTP kiterjesztéseket. A szerver működésének (forráskódjának), illetve az FTP protokoll, valamint a GridFTP protokollban leírt kiterjesztések tanulmányozása után a szerver oldali adatfeldolgozás (a párhuzamos adatfeldolgozás) lehetőségeit illetően a következőket lehetett megállapítani. 1. A GridFTP protokollban definiált és a GridFTP szerverben megvalósított ESTO és ERET utasítás csak korlátozott szerver oldali feldolgozást tesz lehetővé. Az ESTO utasítás egy adott file-darab tárolására, az ERET utasítás pedig egy adott file-darab elővételére alkalmas, tehát alkalmazásuk esetén nem szükséges a teljes file átvitele. Amennyiben az adat struktúrája ilyen egyszerű módon írható le, akkor a fenti két utasítás jól használható. Meg kell jegyezni, hogy a GridFTP protokoll leírás lehetővé teszi a fenti két utasítás további lehetőségekkel való kiterjesztését is. 2. Az eredeti FTP protokoll lehetőséget ad a protokollban nem szereplő, úgynevezett szerver specifikus utasítások végrehajtására is a SITE nevű FTP utasítás segítségével. Ezek az utasítások általában akkor használhatók eredményesen, ha a kliensen futó program ismeri dg-rep-2-7-persistent.doc 2002-06-10 6/10
a szerver operációs rendszerét, ami akkor természetes, ha a kliens is azonos (hasonló) operációs rendszer alatt fut. Az egyik ilyen lehetséges utasítás az EXEC utasítás, a Unix exec megfelelője, amelynek segítségével a szerver gépen (a szerveren megtalálható) program futtatása kezdeményezhető. Ez a tulajdonság, amelyet a GridFTP szerver is megvalósít, elvileg tetszőleges szerver oldali feldolgozást tesz lehetővé. A fentiekben vázolt lehetőségek alapján kiindulásként célszerű a SITE EXEC FTP utasítást alkalmazni a párhuzamos adatfeldolgozás további kiterjesztésére. Ezt a következőkkel lehet indokolni. 1. Az ESTO és az ERET utasítás jelenlegi formájában csak igen korlátozott szerver oldali feldolgozást tesz lehetővé. Ezzel szemben egy adott feladat elvégzésére kifejlesztett program pontosan a kívánt, azaz a program specifikációjában rögzített feladatot látja el. 2. A SITE EXEC utasítás használatának előnye az is, hogy a meglévő szerver változatlan formában használható, nem kell azt módosítani. A kívánt feldolgozási feladat a megfelelő program megírásával és a szerveren való elhelyezésével megvalósítható. Az kétségtelen, hogy a programok megírása többlet erőfeszítést igényel, de egy bizonyos idő elteltével a feldolgozó programok olyan könyvtára jöhet létre, amelyből az aktuális feladatnak megfelelően válogatni lehet. 3. Az a megkötés, hogy szerver specifikus (az adott szerverre jellemző) utasításról van szó, nem komoly korlátozás. Egyrészt a Grid egyelőre gyakorlatilag csak Unix, illetve Linux operációs rendszereken van megvalósítva, tehát a szerver és a kliens operációs rendszerek nem eltérőek. Másrészt az adott feldolgozást végző program elindítása is egy szabályokkal jól leírható utasítás, amelyet mint ilyet, szervertől (és operációs rendszertől) függetlennek lehet tekinteni. 4. Amennyiben a fenti megoldás, azaz a szerveren való adatfeldogozó program futtatás jól használható, akkor ezt egy újabb GridFTP parancsként lehet általánosítani. Hasonló dolog történt akkor, amikor a GridFTP protokoll a különböző TCP puffer méret állító szerver specifikus (SITE) parancsok (RBUFSIZE, RETRBUFSIZE, RBUFSZ, SBUFSZ, BUFSIZE) általánosításaként definiálta a Set Buffer Size (SBUF) parancsot. A párhuzamos feldolgozás kiterjesztésére javasolt megoldás gyakorlati megvalósítása A gyakorlati megvalósításhoz ismerni kell az alkalmazott GridFTP server SITE EXEC parancsának sajátosságait. (Ezen sajátosságok miatt lehet később célszerű egy általánosított megoldást kidolgozni.) A wuftpd szerveren alapuló GT2GridFTP sajátosságai a következők. dg-rep-2-7-persistent.doc 2002-06-10 7/10
1. A szerver csak előre definiált könyvtár(ak)ban levő programok futtatását engedélyezi. Az EXEC parancsban kapott programnévből törli az elérési útra vonatkozó (PATH) információt és a programot az általa előre definiált könyvtár(ak)ban keresi. Ezért a feldolgozó programot mindenképpen ezen könyvtárak valamelyikében kell elhelyezni. 2. A szerver csak a futtatott program standard outputra írt üzeneteit küldi vissza mint válasz adatot a programot futtató kliensnek. Ezért az adat feldolgozás eredménye általában nem küldhető közvetlenül vissza az adatot előzetes feldolgozással olvasó kliens programnak. 3. Mivel az EXEC utasításnak csak parancs-sori paraméterek adhatók át, a feldolgozás után (illetve során) tárolandó adatok biztosan nem küldhetők el az EXEC utasítással együtt. Ezeket előbb egy korábban végrehajtott tárolási utasítással kell a szerverre eljuttani. A fentiek alapján összefoglalhatók a SITE EXEC utasítás párhuzamos (szerver oldali) adatfeldolgozásra való tényleges használatának lépései. Az adatcserét és feldolgozást egyelőre több lépésben lehet és célszerű elvégezni. Az egyik lépés a tényleges adatátvitel, amelynek során a feldolgozott adatok olvasása, vagy a feldolgozandó adatok írása történik. A másik, de nem minden esetben második lépés pedig a szükséges adatfeldolgozást végző program futtatása. (A feldolgozás szempontjából mellékes, de az adat-átvitel lezajlása után nem szabad elfeledkezni az átmenetileg keletkezett file törléséről.) A konkrét teendők tehát a következők. 1. A megfogalmazódott igények alapján specifikálni kell a szerver oldali adatfeldolgozást végző programot. 2. A programot az elkészítés után a szerver megfelelő könytárában el kell helyezni, amely ettől kezdve az adott szerveren használható lesz. 3. Adat olvasáskor először a szükséges feldolgozást (adat kinyerést) kell végrehajtatni a szerveren a SITE EXEC utasítás segítségével. Az eredményt nyilván a szerveren kell tárolni, ahonnan a következő lépésben felhasználó azt kiolvashatja. 4. A feldolgozott (kinyert) adatot RETR utasítással lehet kiolvasni. A feldolgozott adatokat tartalmazó file nevének a felhasználó számára ismertnek kell lennie. Ezen átmeneti file névnek egyedinek kell lenni, ami felhasználó általi név megadásnál nincs biztosítva. Ezért célszerű, ha az eredményt tároló file nevét a feldolgozó program állapítja meg, amelyet feldolgozás után visszaküld kliensnek. 5. Adat tárolás esetén először a feldolgozandó (tárolandó) adatokat kell elküldeni egy STOR utasítással a szervernek. Itt is lényeges az átmeneti tároló file neve, amelyet a feldolgozó programnak majd ismernie kell. Ez nem lehet előre definiált név, mert akkor a feldolgozó programot nem lehet több felhasználónak egyidejűleg meghívni (lásd 4. pont). Az átmeneti tároló file nevét a létrehozásakor kell egyedileg megállapítani, amelyet aztán a feldolgozó programnak paraméterként át kell adni. 6. A tényleges adat tárolás (szerver oldali feldolgozás) végrehajtásához a SITE EXEC segítségével le kell futtatni a megfelelő feldolgozó programot. Az átmeneti file nevét paraméterként kell megadni. dg-rep-2-7-persistent.doc 2002-06-10 8/10
7. Végül gondoskodni kell az átmenetileg keletkezett file törléséről. Ennek a nevét mindkét félnek tudnia kell, de a törlést az adatátvitel tényleges lezajlása után a felhasználónak (kliensnek) kell végrehajtania. A fentiekből látszik, hogy tulajdonképpen három lépésben hajtható végre a szerver oldali feldolgozással egybekötött adatátvitel, ami az átviteli idő növekedést sejteti. Figyelembe kell azonban venni, hogy három lépésből azonban csak egyben történik viszonylag hosszabb időt igénybe vehető tényleges adatátvitel. Ugyanakkor az átviendő adatok mennyisége is jelentősen kevesebb lehet annál, mintha a teljes adatmennyiséget kellene továbbítani. Ebből két következtetés vonható le. Egyrészt szerver oldali (párhuzamos) adatfelfolgozásnak akkor van értelme, ha az jelentősen csökkenti a ténylegesen átviendő adatok mennyiségét. Másrészt megfontolandó a fenti lépések netán egy lépésre csökkentése, azaz fenti eljárást egy lépésben végrehajtó új GridFTP utasítás, vagy opció bevezetése. A párhuzamos feldolgozás általánosítása a GridFTP protokoll kiegészítésére A párhuzamos adatfeldolgozásra a fentiekben javasolt megoldás egyik előnye az, hogy a szerver oldali feldolgozást a meglévő keretek mellett lehet bővíteni. Segítségével nagy terjedelmű adatból (adatba) kis mennyiségű adat mozgatása hatékonyan megoldható. A következők miatt azonban érdemes megfontolni GridFTP parancsként való általánosítását. 1. A SITE EXEC utasítás, amelynek segítségével a szerver oldali feldolgozás elvégezhető volt, nem minden FTP szerveren elérhető funkció. A jelenlegi Globus (GT2GridFTP) GridFTP szerveren ugyan létezik, de egy másik szerveren esetleg nem lesz alkalmazható, mert nem a GridFTP protokoll része. (Természetesen ez akkor is előfordulhat, ha a GridFTP protokoll része lesz, mert a különböző szerverek különböző részét valósít(hat)ják meg egy protokollnak, amint ez az FTP-nél is tapasztalható.) 2. A leírt algoritmus több lépésből áll, amely esetleg lelassíthatja az adatátviteli folyamatot. Bár az adatátvitel csak az egyik lépés része, de a feladat biztonságos végrehajtásához mindhárom lépés hibátlan teljesülése szükséges, amely három külön (Grid)FTP utasítást igényel. 3. Amennyiben a feladatra egy új utasítást sikerül definiálni, akkor az átmeneti tároló file kezelésével kapcsolatos is problémák megoldódnak, hiszen annak kezelése a szerver oldalon automatikusan elvégezhető. (A szerver automatikusan létrehozza a szükséges átmeneti file-t, annak nevét átadja a feldolgozó programnak, majd az utasítás sikeres befejezése után automatikusan törli azt.) Példaképpen a szerver oldali feldolgozást eddig segítő ERET és ESTO utasítás egy lehetséges bővítése a következő lehetne. Mindkét utasítás két alapvető részből áll. Az egyik (az első) az átviteli módot adja meg, a másik (a második) pedig annak a file-nak a nevét, amelyet a szerver oldalon fel kell dolgozni. Az eddig definiált egyetlen átviteli mód mellett be lehet vezetni az adatfeldolgozást végző program (nevének) megadását. 1. Az ERET utasítás egyetlen opciója a P betűvel jelölt partial (részleges) adatátvitel, amelynél egy file-beli kezdőcímet címet (offset) és egy adathosszt (size) kell megadni. Az X betűvel jelölt bővítés az execute nevet viselhetné, amelynél a (szerveren található) dg-rep-2-7-persistent.doc 2002-06-10 9/10
feldolgozó program nevét kell megadni. Tehát az ERET definíciója a bővítéssel együtt a következő. ERET <SP> <retrieve-mode> <SP> <filename> retrieve-mode ::= P <SP> <offset> <SP> <size> X <SP> <exec-filename> offset ::= 64 bit integer size ::= 64 bit integer 2. Az ESTO utasítás egyetlen opciója az A betűvel jelölt adjusted (részleges) adatátvitel, amelynél a file-beli kezdőcímet címet (offset) kell megadni. Az X betűvel jelölt bővítés az execute nevet viselhetné, amelynél a (szerveren található) feldolgozó program nevét kell megadni. Tehát az ESTO definíciója a bővítéssel együtt a következő. ESTO <SP> <store-mode> <filename> store-mode ::= A <SP> <offset> X <SP> <exec-filename> offset ::= 64 bit integer A fenti bővítések egyelőre nem teszik lehetővé, hogy a feldolgozó programnak további paramétereket lehessen megadni, ami a feldolgozó programok használhatóságát jelentősen csökkentheti. Ennek kiküszöbölésére újabb bővítésként a feldolgozandó file neve (filename) után parancs-sori paraméterek megadása következhet. dg-rep-2-7-persistent.doc 2002-06-10 10/10