Orkestrering af distribuerede systemer over store datamængder Jesper Marrup Kongens Lyngby 2013 IMM-M.Sc.-2013-???
Technical University of Denmark Informatics and Mathematical Modelling Building 321, DK-2800 Kongens Lyngby, Denmark Phone +45 45253351, Fax +45 45882673 reception@imm.dtu.dk www.imm.dtu.dk IMM-M.Sc.-2013-???
The goal of the thesis is to... Summary (English)
ii
Målet for denne afhandling er at... Summary (Danish)
iv
Preface This thesis was prepared at the department of Informatics and Mathematical Modelling at the Technical University of Denmark in fullment of the requirements for acquiring an M.Sc. in Informatics. The thesis deals with... The thesis consists of... Lyngby, 15-05-2013 Jesper Marrup
vi
I would like to thank my... Acknowledgements
viii
Contents Summary (English) Summary (Danish) Preface Acknowledgements i iii v vii 1 Introduction 1 2 KLAIM 3 2.1 Tuple spaces paradigmet....................... 4 2.2 Andre KLAIM implementationer................... 4 2.3 Forskellige subsets af KLAIM..................... 5 A Stu 9 References 11
x CONTENTS
Chapter 1 Introduction Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin metus nunc, viverra ac, gravida posuere, lobortis id, felis. Duis magna tortor, interdum porta, dignissim et, sollicitudin vitae, neque. Quisque placerat leo sit amet est. Donec sagittis metus in purus. Duis vehicula arcu in nisi. Suspendisse laoreet. Vivamus suscipit dui ullamcorper turpis. Fusce in neque. Duis malesuada dolor eu orci. Sed ornare, sem in consequat accumsan, tellus ligula ultrices purus, at feugiat lectus risus vel libero. Etiam lobortis. Proin adipiscing dolor in elit. Nam velit felis, adipiscing in, volutpat nec, fermentum a, massa. Praesent felis tortor, cursus nec, convallis ac, ornare vel, augue. Donec lacus neque, volutpat nec, ullamcorper quis, porta id, erat. Nulla molestie magna ut nulla. Sed pulvinar. Ut tincidunt laoreet odio. In nibh. Morbi ornare laoreet diam. Ut accumsan, mi eget scelerisque sollicitudin, urna nisi rutrum velit, et iaculis orci velit id lorem. Maecenas urna velit, egestas eget, scelerisque sed, dapibus eget, risus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent tincidunt, nisl quis sollicitudin congue, justo erat tempor pede, sit amet eleifend diam massa vel diam. Nullam ornare volutpat urna. Morbi condimentum. Etiam scelerisque purus sit amet nulla. Vivamus luctus metus sit amet enim. Proin tincidunt enim non eros. Donec aliquet adipiscing risus. Suspendisse justo libero, consectetur sed, dictum id, viverra vel, pede. Aenean pretium nulla eget est. In sed nunc. Sed semper dui eu eros.
2 Introduction Integer mi. Vestibulum nec ipsum. Duis a mi vitae lacus elementum tempor. Vestibulum blandit sollicitudin erat. Quisque nec libero vitae turpis luctus cursus. In at diam. Morbi et massa. Mauris a erat. Cras blandit. Nullam nisi. Praesent gravida blandit arcu. Vivamus ornare, quam at pharetra placerat, libero augue laoreet purus, vel fringilla felis lacus consequat velit. Pellentesque malesuada. Ut velit tellus, ullamcorper in, scelerisque et, consectetur et, ipsum. Nulla elit. Proin tempor. Vivamus dapibus nisl lacinia tellus mollis venenatis. Aliquam porttitor ligula ac dolor. Aenean placerat mi eget odio. Etiam malesuada. Nam id neque. Vestibulum et nisi. Vestibulum sem enim, porttitor a, mollis quis, molestie eget, leo. Pellentesque vitae sapien in magna mollis fermentum. In eu tortor. In hac habitasse platea dictumst. Vivamus magna lacus, malesuada et, egestas eget, rhoncus et, massa. Nullam pellentesque massa. Proin non lorem eget lorem mollis volutpat. Integer pulvinar. Nulla facilisi. Cras quam. Integer tristique eros in nulla. Vestibulum massa neque, venenatis at, consequat sed, volutpat in, sem. Duis faucibus lorem vitae purus. Phasellus justo nunc, iaculis non, varius vel, pharetra a, neque. Nulla bibendum scelerisque lorem. Pellentesque viverra. Proin eu arcu. Mauris vitae massa. Phasellus dictum enim tempus lectus. Quisque interdum.
Chapter 2 KLAIM KLAIM anvendes til at modulere mobile agenter i et distribueret miljø. Valget for KLAIM's primitiver er stærkt påvirket af process algebra og Linda(reference). De mobile komponenter interagerer gennem multiple distribuerede tuplespaces. Kommunikationsmodellen med disse tuplespaces er asynkron og KLAIM har udvidet og bygget oven på modellen fra LINDA, hvilket betyder at basis operationerne i KLAIM er de samme som de originale fra LINDA. Man har udvidet kommunikationsmodellen i KLAIM - bla. ved at tilføje oplysninger om placeringen af noderne og ligeledes hvor processerne og tuplerne er allokeret. Et tuplespace er en kollektion af tupler, som kan blive tilgået samtidigt. En tuple kan blive læst, fjernet eller en ny tuples kan tilføjes til et tuple space. En tuple er anonym og består af en sekvens af informationselementer. Udtrækningen af en tuple fra et tuplespace sker vha. pattern-matching - hvilket uddybes i afsnit-blabla senere. Eksplisitte lokaliteter gør det muligt for programmøren at distribuere og hente data, og processer, til og fra noderne i et net. Ydermere er der mulighed for at strukturere tuple spaces som multiple lokaliserede områder. Desuden så er lokaliteter(localities) rst-class citizen 1, de kan blive oprettet dynamisk og kom- 1 Der ndes ikke dansk oversættelse, men rst-class citizen er en enhed der kan konstrueres under run-time og vidergives som en parameter, returneres fra en subrutine eller bliver overdraget til en variabel
4 KLAIM munikeret over netværket og håndteres via. avanceret scoping 2 regler. Som tidligere nævnt er inter-process kommunikationen asynkron, da forbruger og producenten af en tuple behøver ikke behøver at synkronisere. Oprindeligt anvendte man Linda modellen til parallel programmering på en enkelt maskine. Senere blev fortaleren, for at forbedre modulariteten, skalerbarheden og ydeevnen, nemlig multiple, distribuerede tuple spaces. 2.1 Tuple spaces paradigmet Populariteten af tuple spaces paradigmet har medført en række forskellige runtime systmer. Både industrielt og universielt, bla. kan der for industrien nævnes: SUN JavaSpaces IBM T Spaces og universielt bliver følgende run-time systemer anvendt: PageSpace WCL Lime TuCSon 2.2 Andre KLAIM implementationer Det er værd at nævne implementeringen KLAVA, hvilket er et Java bibliotek der indeholder KLAIM konstruktioner som Java klasser. X-Klaim er et programmeringssprog baseret på KLAIM og anvendes til at programmere distribuerede applikationer med objekt orienteret mobil kode. Det tillader udveksling af data og processor, samt programmering af mobile agenter til at udtrække informationer over et net. xklaim compileren producerer Java code ved at man inputter 2 Et scope er den kontekst inden for et computer program, hvor et variable navn eller en anden identier er gældende og kan blive anvendt
2.3 Forskellige subsets af KLAIM 5 et X-Klaim program til compileren, som så outputter et Java program som anvender Klava bilioteket. Ydermere består X-Klaim frameworket af en Java implementation af X-Klaim primitiverne - hvilket er bestående af en Java package. 2.3 Forskellige subsets af KLAIM Der ndes mange forskellige varianter af KLAIM, så for at give et overblik over KLAIMs mange muligheder vil de kort blive gennemgået. En mere avanceret gennemgang vi ske af netop det subset af KLAIM som jeg har tænkt mig at anvende. De forskellige implementeringer er: cklaim - Core KLAIM uklaim - Micro KLAIM KLAIM OPENKLAIM HOTKLAIM - Higher-Order Typed KLAIM O'KLAIM - object oriented KLAIM X-KLAIM - Extended KLAIM cklaim: kan ses som en variant af pi-calculus med process distribuering, process mobilitet og asynkron kommunikationsnavne gennem delte lokaliserede lagrer. cklaim er den simpleste version af KLAIM og den indeholder re forskellige basis operationer, kaldet actions: output, input, migration og creation. Operationen input(t) evaluerer tuplen T og søger efter en matchende tuple T' i tuple spacet. Når T' er fundet vil den blive fjernet fra TS. De tilhørende værdier af T' bliver tildelt til variablerne i T og operationen slutter. Output(t) operationen tilføjer tuple t til TS. Operationen Eval(t) tilføjer tuple t til TS, dog virker den ikke ligesom output(t) fordi når eval(t) tilføjer tuple t, så vil den samtidigt starte en process til at evaluere tuple t. Det er derfor ikke muligt at matche t før evalueringen er færdig. Den sidste operation gør det muligt at at lave en ny netværk node. Det ses at den sidste action ikke er indekseret med en adresse fordi den altid handler lokalt. Alle andre actions indikerer eksplicit lokationen hvor de skal udføres. Syntaksen for cklaim kan ses i table 2.1.
6 KLAIM N ::= NETS ::P single node l::<t> located datum N1 N2 net composition P ::= Process nil null process a.p action prexing P1 P2 parallel composition A process invocation a ::= Actions out(l')@l output in(t)@l action prexing eval(p)@l migration newloc(u) creation T ::= Templates l name!u formal Figure 2.1: cklaim syntax
2.3 Forskellige subsets af KLAIM 7 N ::= NETS T ::= F F,T Temp l::p single node F ::= f!x!u Temp Felter l::<et> lok. tuple t ::= f f, t Tuples N1 N2 net samm. f ::= e l u Tuple felter et ::= ef ef, et Eval. tuple a ::= Actions ef ::= V l Eval. tuplefelt out(t)@ l output e ::= V x... Udtryk in(t)@l input read(t)@l read eval(p)@l migration newloc(u) creation Figure 2.2: uklaim syntax µklaim: er en udbygning af cklaim, hvor man tilføjer tuples, patternmatching og en mulighed for at læse en tuple uden at fjerne den fra TS. En væsentlig forskel er som sagt at vi nu anvender tuples som er de overførbare objekter. Det kommer til udtryk ved man i de forskellige actions nu kan se at argumentet er et tuple - f.eks. er out(l')@l blevet til out(t)@l. Som tidligere nævnt består en tuple af sekvenser af aktuelle felter, hvor et felte kan indeholde et udtryk, lokaliteter eller lokalitets variabler. Der hvor en tuple er lagret kaldes et tuple space(ts). Der er ikke nogen præcis syntax for et udtryk(expression) e og vi antager at det mindst indeholder basis værdier af V eller variablen x. Templates er sekvenser af aktuelle og formelle felter og de anvendes som pattern til at vælge tuples i et TS. Man skriver et formelt felt som!x eller!u og de anvendes til at binde variabler til værdier. I uklaim kan processorne også læse tuples uden at fjerne dem fra tuple spacet vha. handlingen read(t)@l. I tuplespacet eksisterer der kun evaluerede tuples og templates skal evalueres før de kan udtrække tuples fra tuple-spacet. En template evalueres ved at man udregner værdien i den givne template og der sker ingen ændring for lokaliteter og formelle felter. Templates med variabler i aktuelle felter kan ikke blive evalueret. Eksempel Skriv et eksempel ind her.. Implementerede variant af KLAIM. - eksempel for linda communikation:
8 KLAIM Tuple (10, "hej",!x) - formal elds - actual elds Pattern matching: - formal elds matcher ethvert felt af den samme type. - aktuels matcher hvis de er identiske: ("foo", 10+5, true) mathcer (!s, 15,!b) En klaim node indholder re forskellige ting: - Navn (fysisk lokation) - Proccesser - Et Tuple space - Environment Et klaim net er samsat at ere klaim noder. En klaim process består af: P:== Nill a.p P1 P2 X A<P,l,e> a= out in read eval newloc t= f f,t f = e p l!x!x!u Transition labels, Structural congruence, Lokale regler, Globale regler, Tuple evaluering Matching reglerne,., - Udvidelse af Klaim til Open Klaim. Kan anvendes så tuples bliver enkrypteret.forøgelse af sikkerheden - Udvidelse af Pattern Matching algoritmen - Beskriv de forskellige former af Klaim. Hvad de vil gøre.
2.3 Forskellige subsets af KLAIM 9 - Hvorfor jeg valgte netop den udgave af Klaim som jeg anvender....
10 KLAIM
Appendix A Stu
12 Stu
Bibliography