Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 4 » Prüfungsprotokoll Middleware / Cloud Computing im WS 2011/12   (Übersicht)

Prüfungsprotokoll Middleware / Cloud Computing im WS 2011/12

Hier sind 4 Protkolle gelistet, die alle an einem Tag mehr oder weniger hintereinander waren. Prüfer war Tobias Distler, Beisitzer war Jürgen Kleinöder. Vor der Prüfung sollte man eines von 3 Papern auswählen (Eucalyptus, Dynamo, Chubby). Zu den Übungen oder zu dem WAS Paper wurde nichts gefragt.

Protokoll 1, Paper: Dynamo

  • Standard Einstiegsfrage, nichts genaues zu Virtualisierung.
  • Eucalyptus wollte er viel wissen (wie werden instanzen verteilt mit first-fit strategie → es wird der erste mit genug ressourcen genommen)
  • Tobias hat einfach der Reihe nach durchgefragt
  • bei Map/Reduce: wo wird der mapper platziert (genau auf die maschine, wo auch der chunk liegt wegen optimaler datenzulieferung)
  • zu dymano: key-value store, wie ist das mit den nodes, ist das gut mit den virtual nodes? vorzugsliste wozu (preferences list)? → damit das nächste replikat nicht auf dem selben rechner liegt
  • sonst noch paar map/reduce fragen
  • wie isses bei amazon, was kann man noch angeben? → ne instanz soll nicht im selben rack liegen und zonen kann man angeben
  • euca war ihm scheinbar sehr wichtig.
  • unterschied zwischen soap und rest (soap: komplette anfrage, rest: benutzt http als anwendungsprotokoll). er wollte wissen dass http das anwendungsprotokoll ist, bei soap alles xml-basiert

Protokoll 2, Paper: Dynamo

  • standard einstiegsfrage, basistechnologien: web-services & virtualisierung
  • web-services: wsdl, was macht es, wie aufgebaut? (typen, schnitstellen, bindings, services)
  • wie kann man das aufrufen? → soap: envelope, header, body, weiterleitung etc.
  • was ist REST, 5 merkmale
  • IaaS-Bild
  • zur virtualisierung wollte er nix wissen
  • Eucalyptus im vergleich mit dem IaaS-Bild: was passiert wenn ein benutzer ne neue VM haben will: → man wendet sich an den CLC, preferenzen bzgl. des clusters angeben → anfrage wird ans cluster gestellt, der cluster sucht sich nach first-fit ne node, holt das image aus walrus…
  • vor/nachteile von first-fit: der benutzer ist auf einer maschine und der cloud-anbieter muss nicht mehr maschinen laufen lassen. der benutzer muss sich aber auf der maschine seine ressourcen mit anderen teilen. problem bei spitzenauslastung auf einer maschine (weihnachtsgeschäft, 5 shops auf einer maschine)
  • was gabs bei euca noch? → virtual network overlay bei euca kurz angeschnitten, aber sonst nix dazu
  • wichtiger punkt: wenn eine VM drin ist und gestartet wird, wird sie im netzwerk noch bekannt gegeben und dem user z.b. eine URI gegeben.
  • map/reduce algorithmus skizzieren, wie geht der datenstrom? → am anfang alles im GoogleFS, worker auf dem gleichen Rechner platzieren. bei map isses besser als bei reduce, denn bei map haste ne große datei. beim reduce ist das problem, dass die daten nicht mehr nur auf einem rechner liegen, sondern wahrscheinlich auf allen mappern, daher keine datenlokalität für das anlegen der reducer
  • zu dynamo: was ist es, wieso hat man’s gemacht? ring aufgemalt, wie läuft’s mitm replizieren ab, was passiert wenn rechner ausfällt (hinted hand-off)
  • was ist es, warum: hochverfügbarer, skalierbarer, always writeable datenspeicher für kleine daten, im vergleich zu bisherigen lösungen (datenbanken) wollte man was viel einfacheres haben.
  • ring aufgemalt, nodes reingemalt. jetzt hat man verschieden starke rechner, wie löst man das? → virtual nodes. was passiert wenn ein key reinkommt? genaue aufteilung im ring wenn ein neuer node reinkam war nicht gefragt. hinted-handoff ist wichtig
  • quorum und strategie wollte er nicht wissen.
  • eventual consistency bei dynamo!
  • wie läuft’s beim GET ab? → inkonsistenzen werden alle übergeben

Protokoll 3, Paper: Eucalyptus

  • nichts zu SOAP, aber die 5 punkte zu REST.
  • Es ging los mit der einführungsfrage, drei infrastrukturtypen (IaaS, PaaS, SaaS) auflisten
  • warum machen wir CC, aus sicht des anbieters? → volle auslastung des eigenen rechenzentrums
  • virtualisierung im zusammenhang mit dem cloud-bild. virtualisierung erklärt mit dem hypervisor, wie schaut’s aus mit der sicherheit (exploits existieren). wenn benutzer auf gleicher maschine sind etc.
  • Eucalyptus, dafür kein dynamo
  • paravirtualisierung?
  • bei EC2 sind windows-maschinen HW-basiert virtualisiert, weil man bei windows den kernel nicht in ring 1 verschieben kann. andere maschinen sind paravirtuell, weil das dort geht
  • euca: images werden aus dem storage geladen; sind verschlüsselt, daher ist das rüberladen nicht so trivial. wie sieht das mit der netzwerktopologie aus (3 varianten: direkt die virtuelle auf die physikalische mappen, MAC/IP-Tupel, und VLANs pro Benutzer)
  • zwischenfrage vom jürgen: wie kommen die einzelnen maschinen an die netzwerkschicht: split-device driver von VM über Hypervisor zur dom0-VM und dann zur netzwerkschnitstelle
  • wemma S3 nehmen, an was hält sich das? → buckets??? er wollte raus auf SOAP und RESTful (hier die 5 Punkte genannt)
  • zookeeper, chubby (wann nehm ich das eine wann das andere?)
  • chubby langlebige UND kurzlebige locks! die ganzen optimierungen wollte er nicht hören (proxys etc.)
  • Performance für lesende zugriffe bei zookeeper viel besser, weil man über jeden beliebigen lesen kann. dafür ist es beim chubby konsistenter, nur eben master als flaschenhals.
  • kann man erkennen dass man was altes gelesen hat? → ich selber als instanz kann es nicht erkennen, kann aber über timestamps und versionsnummern mit anderen instanzen vergleichen. kurz erklärt wie man einen master bestimmt (locks, sequenzielle, flüchtige knoten)
  • zookeeper: besser wenn man keine optimierungsmethoden hat für’s lesen, dafür isses unkonsistent. bei der benutzung der sync()-methode (für strikte konsistenz, auch reihenfolge der lesenden anfragen wird mit vom master bestimmt) isses wieder wie chubby, wobei dann chubby besser is
  • euca: bei first-fit wollte er wissen, wie man das macht wenn man im rechenzentrum is. ich dachte EC2 macht auch first-fit, aber das macht nur euca. man schaut sich die rechner an, sieht dass die ersten rechner hochbelegt sind, andere rechner eher leer. first-fit ist gut, weil wir die anderen maschinen abschalten kann (strom sparen). wenn eine kiste wegraucht, sind gleich viel mehr VMs weg!

Protokoll 4, Paper: Eucalyptus

  • Zur Atmosphäre: Tobias musste wohl spontan einspringen und war sichtlich unbegeistert noch jemanden über das gleiche Zeug zu prüfen. Kann ich auch voll verstehen, ich war schon nummer 6. oder so -.- Naja, kann keiner was dafür, ich hab versucht ihn mit Geschichten ausm Praxisalltag aufzuheitern^^

Herr Kleinöder hat zwei Mal sehr gute Fragen dazwischengehängt.

  • Tobias: Also, was ist die erste Frage die ich dir stellen will? → Was ist Cloud-Computing und warum hat man’s erfunden.

Hab erzählt einem Praxisbeispiel eines Web-Services, der im Moment noch klein ist, jedoch später womöglich viel größer wird (mehr Daten, mehr Anfragen, mehr zu rechnen). Dann hab ich das Problem vom 29. Februar 2012 bei Windows Azure erzählt und bin dann bissl in Richtung SLA gegangen, warum es denn doch noch risikoreich ist, seinen Service in einer Cloud zu hosten.

  • Was bietet einem die Cloud (anspielung auch, welche Cloud-Services es gibt, IaaS, PaaS, SaaS)? → Rechenleistung, Datenspeicherung, Sicherheit durch Redundanz, einfache Erweiterbarkeit im Bedarfsfall
  • Dann sollte ich eine typische Cloud skizzieren, gleich im Hinblick auf den Aufbau bei Eucalyptus. Warum haben wir denn mehrere Cluster? → Natural Disaster Recovery

Wie genau läuft das ab, wenn der Benutzer eine neue VM registrieren will? → CLC prüft Anforderungen (Zonen-Wunsch) und benachrichtigt einen CC, der widerrum bei seinen NC nach Ressourcen anfragt. Typische Ressourcen sind dabei RAM, CPU-Kerne, Lokaler Speicher (das VM Image muss auch noch draufpassen).

  • Die VM wurde übrigens über first-fit ausgesucht. Welche Vor-/Nachteile hat das für wen? → Vorteil für den Cloud-Betreiber, da er einzelne Nodes gut auslasten kann und andere komplett vom Strom nehmen kann um Geld zu sparen. Nachteile haben die Benutzer, die alle auf einer Maschine sitzen. Sollten hier z.B. mehrere Web-Shops sein, kommt es ggf. zu Problemen im Weihnachtsgeschäft. Andererseits gibt es auch Sicherheitsrisiken, wenn alle auf einer Maschine untergebracht sind: Root-Kits, die im Hypervisor sitzen. Welche Anforderung an eine Cloud-Lösung würde hier verletzt? → Isolation
  • Aha, jetzt weiß also unser User dass er ne VM bekommt. Wie lief denn der Start dieser VM ab? → Es wurde aus Walrus erstmal ein Image geholt. Dort lag es allerdings verschlüsselt.
  • Hmm OK, was hätte ich denn noch bei der Platzierung der neuen VM berücksichtigen können, wenn mein User möchte, dass er weitere Instanzen von VMs sehr schnell starten kann? → Eine Maschine wählen, wo das Image bereits vorhanden ist.
  • Map/Reduce: Erzählen warum Google das gemacht hat, was so damit verarbeitet wird. Bitte generell skizzieren. → Sehr einfaches Bild gemacht, schon zu viel über “Dateien im GoogleFS” gelabert. Hatte im Bild zwischen Mappern und Reducern “eine Datei” hingemalt, stimmt aber so natürlich nicht. Denn das sind die Ergebnisse der Mapper, die noch lokal bei den Mappern liegen.
  • Habe nebenbei Optimierungsmöglichkeiten erzählt, wurde aber gebremst und später nochmal genauer gefragt: Datenlokalität: Habe erzählt wo man die Mapper hinsetzt (bei den Daten natürlich, denn der Master weiß vom GoogleFS, auf welchem Server die Daten liegen. Bei den Reducern ist das schwieriger, da sie direkt auf die Daten bei den einzelnen Mappern verwiesen werden.
  • Dann kam die Frage, welche Ausfallszenarien es gibt. → Es könnte der Master-Server abschmieren. Daher gibt es eine periodische Zustandssicherung des Masters (Tasks, welche davon fertiggestellt, Ressourcenpointer etc.). Beim Ausfall wird dieser ersetzt, doch fängt bei einem alten Stand ein (Mapper liefern ja nur 1x Fertigmeldung, wenn die an den ausgefallenen Master geht, bekommt’s keiner mit und der Ersatz-Master wird den Task neu starten, weil er von einem Ausfall ausgeht.
  • Was passiert wenn ein Mapper ausfällt? → Dessen Task muss neu gestartet werden. Man legt auch redundant Mapper an, damit diese sehr langsame Tasks ausführen, damit die Gesamtzeit (bis alle Mapper fertig sind) kleiner ausfällt. Aber was ist wenn ein Reducer ausfällt, ist das genauso schlimm oder auch ok? Das ist nicht so schlimm, denn den Reducer kann ich neu starten. Wenn aber ein Mapper ausfällt, von dem ein Reducer die Daten nimmt, muss ich den ganzen Vorgang ja neu starten.
  • Dynamo: Was ist das? → Amazon hat’s für ihre Warenkörbe erfunden. Hochverfügbar und Skalierbar sollte es sein, dabei versteht sich auch dass Replikation wichtig ist, um Knotenausfälle abzufangen.
  • Hab den Ring hingemalt und Server die drauf zugreifen. Was sind virtuelle Knoten und warum? Beim Upgrade des Rechenzentrum erzählt es neue Maschinen, die 3x schneller sind. Daher können wir diesen neuen Maschinen mehr virtuelle Knoten zuteilen.
  • Dummerweise hatte ich nur drei Server gemalt. Wer hält welche Daten? (Hier hatte ich wild Pfeile gemalt, auch nicht vorteilhaft bzgl. “wer hält diesen Key, wenn er neu dazukommt?”. Als ich dann das Szenario des Serverausfalls beschreiben wollte (wer Übernimmt die Daten beim Hinted Hand-Off), hatte ich keinen vierten Server, der sich drum kümmern muss (falls wir 3-Fach redundant sein wollen, müssen die Key/Value-Paare auch auf drei komplett verschiedenen Maschinen liegen.

Ich hab Hinted Hand-Off beschrieben, weil mir der Begriff erstmal nich eingefallen is hab ich kurz gestottert, dann kam’s mir aber wieder^^ Tobi war sehr scharf auf diese Begriffsnennung hatte ich das Gefühl.

  • Dann kam ich auf Eventual Consistency zu sprechen und musste daraufhin erklären, wer bei einem Schreibzugriff die Daten erhält und wie sie auf Knoten verteilt werden. Wenn ich 3x replizieren möchte, repliziert der angesprochene Knoten die Daten auf zwei weitere, wartet jedoch nicht auf das ACK von beiden (bei Amazon’s Dynamo reicht ein ACK).
  • Frage von JK: Lösen die Server dann beim Lesen die Inkonsistenzen nicht selber auf? → Doch, die einfachen schon, aber wenn A etwas schreibt, und später B und C gleichzeitg Änderungen drauf aufführen, weiß man nicht, welche Version die richtige ist. Habe dabei beschrieben, dass zum Key/Value-Paar noch ein Context-Objekt existiert, dass die Vektoruhren führt. Der Client muss sich danach entscheiden, was er mit den Key/Value-Paaren macht, denn er bekommt bei Konflikten ja mehrere Einträge mit verschiedenen Vektoruhren zurück. Anwendungsfall Amazon: Dann bleibt das Produkt eben im Warenkorb, wenn wir nicht sicher sind, ob es gelöscht wurde oder nicht.
  • Keine Fragen zum WAS-Paper, keine Fragen zu den Übungsaufgaben (auch wenn ich bei Map/Reduce selber mal drauf angespielt hatte)