OW2 ProActive Parallel Suite: Building Flexible Enterprise CLOUDs Karol Bukowski, Jakub Liput 19 czerwca 2011 http://student.agh.edu.pl/~bukowski/mownit/proactive.pdf http://student.agh.edu.pl/~jliput/mownit/proactive.pdf Streszczenie Tematem przygotowywanego przez nas artykułu jest zastosowanie pakietu ProActive Parallel Suite do budowy korporacyjnych chmur obliczeniowych. Opisaliśmy główne założenia oraz technologie, którymi posługuje się pakiet. 1 Wstęp W dzisiejszych czasach powodzenie i poziom konkurencyjności firm zależy w dużej mierze od wydajności z jaką jest w stanie zarządzać swoimi zasobami. Jest to niezwykle skomplikowane zadanie, gdyż należy uwzględnić rozmaite technologie i systemy operacyjne z jakich korzystają. Nie mniej ważne jest sprawne rozdzielanie zadań w zależności od obciążenia systemu komputerowego danej firmy. Poważnym problemem jest dopasowanie i zsynchronizowanie zadań tak by jak najwydajniej operować na dostępnych zasobach. Z oczywistych względów jest to niemożliwe bez pomocy nowoczesnej technologii i oprogramowania. ProActive Parallel Suite jest narzędziem stworzonym specjalnie z myślą o rozwiązywaniu podobnych problemów. Dzięki rozwiązaniom oferowanym przez ProActive Parallel Suite obliczenia związane z finansami, inżynierią, zarządzaniem energią czy nawet rozrywką mogą obywać się szybciej. Istotnym faktem jest również to, że zwiększenie wydajności może się odbywać bez rozbudowy infrastruktury, wyłącznie z wykorzystaniem dostępnych środków. 2 Obszar dostępu do zasobów ProActive Parallel Suite kładzie nacisk na kilka obszarów. Pierwszym z nich jest Resource Provisioning czyli dostęp do posiadanych zasobów. Za ten 1
fragment PAPS odpowiada element ProActive Resourcing. Jest to opensource owe narzędzie do uruchamiania aplikacji służących do wirtualizacji zasobów sprzętowych oraz ich kontroli. Umożliwia ono zamianę zasobów obliczeniowych firmy w jednolitą chmurę obliczeniową. Wykorzystano tutaj technologię Node Source która pozwala wydajnie zarządzać rozdzielaniem zasobów w zależności od potrzeb biznesowych i aktualnego obciążenia systemu. Ponadto pozwala na korzystanie z zewnętrznych zasobów w obrębie tej samej firmy lub dowolnej firmy zewnętrznej. Dla zwiększenia elastyczności i przenośności rozwiązane to zostało zaimplementowane w języku Java, dzięki czemu można uruchomić je na komputerach z systemami Windows, MacOS oraz Uniksowych. Obsługiwane są także różne środowiska służące do wirtualizacji: Xen, KVM, QEMU, Microsoft Hyper-V oraz popularny VMware. Wraz z pakietem ProActive Parallel Suite dostarczany jest ProActive Resource Manager - oprogramowanie służące do łączenia zasobów w celu rozwiązywania problemów dużej skali. Zasoby te reprezentowane są przez wirtualne maszyny Javy. Rozwiązuje to problem przenośności gdyż JVM można uruchomić na niemal każdym rodzaju sprzętu i systemu operacyjnego. Konkretnymi zadaniami ProActive Resource Manager są obsługa i automatyczne uruchamianie węzłów (wirtualnych maszyn), monitorowanie listy zasobów oraz ich stanów a także dostarczanie węzłów obliczeniowych użytkownikom zgodnie z wyspecyfikowanymi przez nich wymaganiami. Resource Manager w ogólności jest aplikacją typu klient - serwer. Serwer wykonuje wszystkie opisane powyżej czynności łącznie ze zwalnianiem węzłów gdy użytkownik zakończy obliczenia. Za klienta uważa się osobę lub program który zgłasza chęć wykorzystywania zasobów do wykonywania obliczeń. Może się to odbywać automatycznie, na przykład poprzez ProActive Scheduler lub ręcznie, uruchamiając zadania na poszczególnych węzłach. Węzeł obliczeniowy jest swego rodzaju kontenerem dla wszystkich wykonywanych w nim aktywności. Służy jako punkt dostępowy do JVM która działa w każdym z węzłów. Węzły są w stanie rozpoznawać się wzajemnie jeżeli działa na nich ta sama wersja ProActive Parallel Suite. Węzły są często łączone w tzw Source Node. Oznacza to że wszystkie węzły należące do tego samego źródła węzłów będą uruchamiane w taki sam sposób w obrębie jednej architektury. 3 Szeregowanie zadań Kolejnym obszarem zarządzanym przez ProActive Parallel Suite jest zarządzanie kolejnością prac oraz obciążeniem systemu. Za to zadanie odpowiada ProActive Scheduling otwartoźródłowy, wieloplatformowy zarządca zasobów. Dzięki niemu zasoby są przydzielane tak by zmaksymalizować wydajność i oszczędzić czas bez jednoczesnego zwiększania kosztów związanych z rozbudową architektury systemu. Zarządcą zasobów PAS można sterować 2
zarówno za pomocą linii komend (CLI) jak i przez środowisko graficzne, które w dość intuicyjny sposób pozwala kontrolować pracę chmury oraz wysyłać zadania i zbierać wyniki obliczeń. Interfejs graficzny został zbudowany jako wtyczka Eclipse RCP. Przepływy pracy mogą być budowane z wykorzystaniem różnych metod, między innymi poprzez pliki XML. Zaletą tego iż system ten jest w stanie integrować się z większością popularnych języków programowania jest to, że może współpracować z niemal dowolną aplikacją, dzięki czemu można delegować część zadań do pracy poza chmurą lub w jej innej części. Usługa zarządcy procesów jest wynikiem współpracy między trzema aktywnymi obiektami: Zarządca procesów (Scheduler) Menedżer zdań (Job Manager) Menedżer zasobów (Resource Manager) Obiekt zarządcy procesów jest głównym obiektem i działa jako usługa (demon) bez interfejsu grafinczego, która jest połączona do zadania i obiektów zarządzania zasobami. Klasa zarządzania zadaniem zawiera zbiór wytycznych - polityk (zasady) działania, według których zadanie będzie obsługiwane. Użytkownik może korzystać z następujących polityk: Polityka czasowa - obsługująca najpierw najszybsze zadanie Polityka przestrzeni - obsługująca najpierw najmniejsze zadanie lub takie, które potrzebuje najmniejszej ilości zasobów Polityka FIFO - First In First Out (pierwszy na wejściu, pierwszy na wejściu) Polityka złożona (ang. composite policy) - połączenie zasad wymienionych wyżej Obiekt zarządzania zadaniem może także utrzymywać opisy wszystkich zadań i monitorować wdrażanie wszystkich prac. Komunikuje się on z obiektem zarządzania zasobami po to, żeby zaalokować lub zdealokować węzły i odebrać kolejkowane rozkazy oraz powiadomienia o stanie zadania żądane przez główny obiekt zarządzający. 3
Węzeł zarządcy zarządca m. zadań m. zasobów Zasoby Rysunek 1: Zarządca i jego główne obiekty Kiedy zadanie jest dostarczane, na początku jest parsowane, aby odczytać z niego informacje, a następnie przetwarzane dla menedżera zadań, który dodaje go do kolejki. Jak wcześniej wspomniano, menedżer zadań korzysta z ustalonej polityki zadania oraz dostępności wymaganych zasobów (przez menedżera zasobów), aby wybrać zadanie do obsłużenia i dostarczenia go do jednego z zarezerwowanych węzłów. Raz obsłużone, zadanie dostaje do dypozycji zarezerwowany przez zarządcę węzeł poprzez wywołanie metody activate() z ProActiveDescriptor, a następnie metody getvirtual- Node( VNName ). Menedżer zadań dostarcza także pośrednika na głównym węźle, aby śledzić ścieżkę wykonywanego zadania i ustawić właściwości systemowe maszyny wirtualnej. Ponadto cały czas sprawdza dostępność poprzez wysłanie sygnału ( pinguje ) do tego obiektu aktywnego, aby upewnić się, że zadanie jest ciągle aktywne. 4
2 1 Zarządca 3 M. zadań M. zasobów Rysunek 2: Propozycja zadania 1. Złożenie propozycji (plik XML) 2. Parsowanie pliku XML oraz tworzenie obiektu opisującego zadanie 3. Nowo utworzone zadanie zostaje dodane do kolejki 5
zarządca m. zadań m. zasobów 1 3 2 4 4 4 5 3 Zasoby Rysunek 3: Wdrożenie zadania 1. Sprawdzenie dostępności zasobów 2. Rezerwacja, jeśli są dostępne i zwrócenie pierwszego dostępnego węzła 3. Użycie zadania na głównym węźle 4. Uzyskanie zarezerwowanych węzłów 5. Zwolnienie zarezerwowanych węzłów, gdy główny węzeł przestał działać 3.1 Koncepcja przepływu zadań Dostarczenie zadania do zarządcy procesów ProActive oznacza przekazanie przepływu zadania, który jest zestawem zadań. Zadanie może być zdefiniowane jako część pracy, np. krok, który ma być wykonany w całej pracy do wykonania. Prace mogą być takze złożone z różnych zadań, np. różnych kroków do wykonania. Zadanie jest najmniejszą częścią pracy, minimalną jednostką możliwą do zarządzania. Zarządca procesów ma do dyspozycji węzły obliczeniowe do wykonywania prac i po prostu uruchamia zadania na każdym z węzłów. Kiedy zadanie się kończy, uruchamia on inne i tak dalej. 3.2 Oprogramowanie Scheduler ProActive jest prostym programem gotowym do użycia natychmiast po pobraniu ze strony projektu. W wersji najnowszej tj. 3.03 w wersji 6
64 bitowej klient zajmuje około 112MB. Ponadto dostępny jest dla systemów operacyjnych Linux, Windows i MacOS, więc najbardziej popularnych. Jest to jak wszystkie elementy związane z platformą ProActive aplikacja napisana w Javie przez co nie jest wymagana instalacja. Interfejs użytkownika jest prosty i intuicyjny, na samym początku pracy jesteśmy pytani o URL z którym chcemy się połączyć w celu zlecania zadań. Sam program wydaje się być jednak uboższy w opcje w porównaniu z klientem przy pomocy którego można zlecać zadania w sieci PLGrid UNICORE. Rysunek 4: Graficzny klient schedulera ProActive Niestety nie istniała możliwość przetestowania Schedulera gdyż PLGrid akceptuje tylko usługę UNICORE. Oprogramowanie ProActive Scheduler niewątpliwie jest przydatnym narzędziem. Umożliwia programiście skupienie się na głównym problemie jaki chce rozwiązać umożliwiając mu łatwy i szybki sposób zlecania zadań do wykonania w chmurze. Jest to dużo bardziej przyjazne od ręcznego pisania plików JDL i manualna obsługa węzłów obliczeniowych. Podobnie łatwe jest pobieranie wyników oraz ustawianie parametrów wykonywania programu. 7
4 ProActive PACA Grid Przykładem zastosowania ProActive Parallel Suite jest platforma ProActive PACA Grid. PACA Grid to chmura obliczeniowa stworzona wspólnie przez INRIA, uniwersytet w Nicei i laboratorium CNRS-13s. Chmura ta zawiera maszyny zarówno z systemem operacyjnym Linux jak i Windows. Dzięki PAPS do chmury mogą być w sposób dynamiczny dodawane nowe maszyny bez zmian w konfiguracji i przerw w pracy sieci. Zarządzanie siecią odbywa się poprzez interfejs graficzny. W chwili obecnej PACA Grid dysponuje ponad 1000 rdzeni CPU, 4 terabajtami pamięci RAM, 15 terabajtami pamięci i 480 procesorami do obliczeń zmiennoprzecinkowych w technologii CUDA o łącznej mocy obliczeniowej bliskiej 2 teraflopsom. 5 Programowanie ProActive jest dostępna w formie otwartoźródłowej biblioteki Javy nakierowanej głównie na uproszczenie programowania wielowątkowych, równoległych i rozproszonych aplikacji dla systemów gridowych, wielordzeniowych, klastrów i systemów typu data-center. Biblioteka pozwala na pisanie równoległych i wielowątkowych programów oraz oferuje rozproszoną i asynchroniczną komunikację, przenośność i framework do rozprzestrzeniania zadań. Posiadając małą ilość prymitywów, ProActive dostarcza interfejsu (API) pozwalającego na rozwijanie aplikacji zrównoleglonych, które mogą być wdrożone na systemach rozproszonych i gridach. ProActive nie wymaga wprowadzania żadnych modyfikacji do języka Javy czy do jej wirtualnej maszyny (JVM), dzięki czemu pozwala na wprowadzanie aplikacji używających API ProActive na dowolnym systemie operacyjnym, na który tylko istnieje wirtualna maszyna Javy. Podsumowując, zasady ProActive można streścić w punktach: Działania (zadania) są rozprowadzalne w postaci zdalnie dostępnych obiektów Oddziaływania między obiektami są realizowane przez asynchroniczne wywołania metod Wynikami interakcji jest wywoływanie obiektów z przyszłości (tzw. futures) Wywołujący metodę mogą czekać na wyniki używając mechanizmu zwanego czekanie-jeśli-potrzeba (ang. wait-by-necessity) 8
MASTER- WORKER MONTE CARLO WSPARCIE DLA MPI SINGLE PROGRAM MULTIPLE DATA Transfer plików PRZEPŁYW ZADAŃ PODZIAŁ PLIKÓW DATA SPACES GRID COMPONENT MODEL Usługi sieciowe RDZEŃ PRZENOŚNOŚNOŚĆ ASYNCHRONICZNOŚĆ ZDALNY DOSTĘP OBIEKTY AKTYWNE Bezpieczeństwo Tolerancja błędów Rysunek 5: Ogólna struktura ProActive 5.1 Obiekty aktywne Podstawową koncepcją ProActive są tzw obiekty aktywne Active Objects. Jest to jednostka której parametry i działania można konfigurować. Wszystkie programy pisane w ProActive polegają w dużej mierze na tych obiektach wykorzystując ich własności, na przykład możliwości asynchronicznego wołania metod. Ponadto, z wykorzystaniem aktywnych obiektów dość łatwo można zmienić program tak by mógł działać na wielu rdzeniach lub w chmurze. Zwykła klasa musi spełnić tylko bardzo podstawowe wymagania takie jak posiadanie konstruktora bezparametrowego oraz możliwość serializacji by zostać Active Objectem. Ciekawą własnością obiektów aktywnych jest też fakt że zwracają tzw Future Objects. Są to obiekty przygotowane niejako do zapełnienia danymi które ma zwrócić obiekt aktywny. Jednak wywołanie metody w takim obiekcie nie zablokuje programu. Stanie się to dopiero wtedy gdy podjęta zostanie próba czytania danych z pustego jeszcze Future Objectu. Konstruowanie oprogramowania w oparciu o obiekty aktywne jest wygodne oraz w łatwy sposób pozwala rozdzielać zadania w sieci. Obiekt aktywny z punktu widzenia programisty i samego programu może znajdować się na tej samej maszynie co inne lub zupełnie gdzieś indziej nie robi to różnicy.program traktuje takie obiekty tak samo jak inne. 6 Podsumowanie Idea sieci typu chmura obliczeniowa w niedługim czasie bardzo ewoluowała. Z narzędzia przeznaczonego do obliczeń fizycznych, skomplikowanych symulacji związanych z prognozowaniem pogody czy innych wymagających po- 9
tężnych nakładów mocy obliczeniowej, chmury obliczeniowe zmieniły się w uniwersalne struktury służące nawet niewielkim firmom do zwiększania skuteczności ich pracy. Pakiet ProActive Parallel Suite został stworzony właśnie w celu ułatwienia takim właśnie użytkownikom wykorzystanie ich możliwości. Z własnych obserwacji wynika, że pewne problemy są niemożliwe do rozwiązania wykorzystaniem pojedynczych maszyn. Brak pamięci operacyjnej lub niedobór mocy obliczeniowej uniemożliwiają rozwiązanie ich w akceptowalnym czasie. Sieci typu Grid rozwiązują ten problem, a ProActive Parallel Suite dostarcza narzędzi niezbędnych do zarządzania i wykorzystywania takich sieci. Uważamy, że chmury obliczeniowe są rozwiązaniem przyszłościowym i niedługo zaczną wypierać istniejące rozwiązania. Są wygodne, szybkie, dysponują znacznie większymi zasobami sprzętowymi. Literatura [1] Caromel Denis.: OW2 ProActive Parallel Suite: Building Flexible Enterprise CLOUDs, Ercim News 2010 nr 83, s.38-39 [2] Dokumentacja ProActive Parallel Suite dostępna na stronie http://proactive.inria.fr/ 10