pobierz plik referatu
Transkrypt
pobierz plik referatu
Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Rozdział 13 w w Integracja systemu rozproszonego przetwarzania strumieni danych z systemem agentów programowych 1 Wstęp da .b w Streszczenie. W rozdziale przedstawiono integrację systemu rozproszonego przetwarzania strumieni danych z systemem agentów programowych. Integracja umożliwia zasilanie strumieniami danych rozproszonej struktury agentów programowych, pozwalając na rezygnację z periodycznego ładowania hurtowni danych przez agentów. Strumień danych propagowany jest w oparciu o specjalne moduły, zapewniające wysokie bezpieczeństwo strumienia danych, nawet w przypadku awarii połączenia lub jednostek pobierających strumień danych. pl s. Ciągle oczekuje się od coraz bardziej złożonych systemów hurtowni danych wysokiej efektywności przetwarzania, odporności na awarie, coraz dokładniejszych analiz. Jeszcze nie tak dawno, wszelkie analizy i raporty realizowane były w oparciu o dane ładowane periodycznie i zazwyczaj operacje ładowania były przeprowadzane w czasie nocnym. Wraz z rosnącymi wymaganiami użytkowników, poziom aktualności danych oferowany przez tak zasilane systemy, przestał być zadawalający. Obecnie wymagane są raporty o wysokim stopniu aktualności, generowane przez systemy zasilane strumieniami danych. Wraz z napływem informacji w formie strumienia danych, są one przetwarzane i od razu ładowane do systemu hurtowni danych. Dzięki temu system zawiera bieżące dane i pozwala na uzyskiwanie raportów o bardzo wysokim poziomie aktualności. Razem z lawinowo rosnącą liczbą danych przetwarzanych przez systemy informatyczne i rosnącym wymaganiem, co do czasu realizacji zadań, coraz częściej wykorzystywany jest system przetwarzania rozproszonego. W ogólnym pojęciu, system taki złożony jest z wielu jednostek (węzłów przetwarzających), zazwyczaj o różnej lokalizacji, które przez podział, przesył i równoczesne przetwarzanie części składowych zadania, wykonują je odpowiednio szybciej. Idea rozproszonego przetwarzania nie jest novum, ale dzięki wzrastającym prędkościom transmisji danych na duże odległości i wzrostowi opłacalności transferu zadań na szybsze komputery, jest coraz częściej wykorzystywana w praktycznych zastosowaniach. Marcin Gorawski, Piotr Wolany Politechnika Śląska, Instytut Informatyki, ul. Akademicka 16, 44-100 Gliwice, Polska email: [email protected], [email protected] (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 M. Gorawski, P. Wolany w Aby system przetwarzania rozproszonego zwracał wartościowe, aktualne wyniki zapytań, dane wszystkich węzłów przetwarzających składających się na ten system muszą być aktualne. Tematem niniejszego rozdziału jest „Integracja systemu rozproszonego przetwarzania strumieni danych [1], [2] z systemem agentów programowych [3]”. Pierwszy system jest źródłem danych strumieniowych, natomiast system drugi jest systemem rozproszonego przetwarzania. W wyniku integracji uzyskano możliwość zasilania strumieniami danych jednostek systemu rozproszonego przetwarzania oraz strumieniowej propagacji danych wewnątrz tego systemu. w 2 Aspekty teoretyczne w Podstawowe kwestie teoretyczne związane są z dwoma elementami: (a) transportowany jest strumień danych, (b) strumień danych propagowany jest do systemu o znacznym rozproszeniu geograficznym jednostek. 2.1 Strumień danych da .b Strumień danych generowany jest przez system rozproszonego przetwarzania strumieni danych. Z punktu widzenia realizowanej integracji, system ten postrzegany jest jako generator strumieni danych o następujących właściwościach: − nieskończona długość generowanych strumieni danych, − nieprzerwana generacja strumieni danych, − jednorazowa generacja krotek strumieni danych. Wszystkie wymienione właściwości są znaczące i bezpośrednio wpływają na implementację. Pierwsze dwie właściwości wyznaczają wymóg ciągłej gotowości odbiorcy strumienia danych do jego pobierania. Jeżeli jednostka pobierająca strumień danych nie będzie w stanie na bieżąco pobierać danych, np. w wyniku jej wysokiego obciążenia, wówczas bezpowrotna utrata fragmentów strumienia danych jest nieunikniona. Nie ma możliwości, aby źródło danych wstrzymało generowanie strumienia danych. Z trzeciej właściwości wynika, że każda utrata krotki jest utratą bezpowrotną. Źródło danych nie oferuje możliwości powtórnej generacji krotek. Zatem wymagane jest odpowiednie buforowanie jako element niezbędny dla bezpiecznej propagacji strumienia danych. pl s. 2.2 Propagacja strumienia danych do systemu agentów programowych Strumień danych propagowany jest do systemu agentów programowych, który, najogólniej mówiąc, jest systemem rozproszonym. Na system składa się duża liczba węzłów przetwarzających o znacznym rozproszeniu geograficznym. W ogólnym przypadku, każdy węzeł systemu jest autonomiczny, z własną hurtownią danych i możliwością wykonywania skierowanych do niej zadań. Niezbędna jest ciągła aktualizacja hurtowni danych tych węzłów. Równoczesne zasilanie tym samym strumieniem danych wielu węzłów systemu rozproszonego cechuje: − duża liczba propagowanych strumieni danych (duża liczba hurtowni danych do ciągłej aktualizacji), 148 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Integracja systemu rozproszonego przetwarzania strumieni danych z systemem agentów programowych w − rozproszenie geograficzne jednostek pobierających strumień danych: − różna, zmienna szybkość połączeń pomiędzy źródłem a jednostkami zasilanego systemu, − możliwość utraty połączenia z częścią węzłów. Powyższe cechy również wyznaczają buforowanie, jako podstawowy mechanizm bezpiecznej propagacji strumienia danych. Niezbędne jest utrzymanie ciągłości propagowanego strumienia danych, co przy możliwości utraty połączenia sieciowego i wielu, równocześnie pobierających strumień danych odbiorców, wymusza konieczność obsługi przez system buforujący, równoczesnych żądań do różnych fragmentów buforowanego strumienia danych. w 3 Podstawowe komponenty w 3.1 Serwer strumienia danych da .b Podstawowym komponentem stworzonym w ramach realizowanej integracji jest serwer strumieni danych. Został zaprojektowany do efektywnego buforowania, przechowywania i równoczesnego, ale niezależnego wysyłania kilku strumieni danych. Niezależność równocześnie wysyłanych strumieni danych obejmuje następujące dwa elementy. 1) Niezależność prędkości wysyłanych strumieni danych. Strumień danych wysyłany jest do modułów odbiorczych zgodnie z ich możliwościami odbiorczymi (prędkością pobierania strumienia danych) tj. moduły wolno pobierające strumień danych, nie będą spowalniały wysyłania strumienia danych do modułów szybszych. 2) Wysyłane strumienie danych mogą być przesunięte względem siebie w czasie. Dotyczy to zarówno drobnego przesunięcia, wynikłego ze zmian prędkości wysyłania danych przez sieć, ale także znacznego przesunięcia wysyłanych strumieni danych, które może być następstwem wznowienia pobierania strumienia danych po awarii połączenia. Ogólny schemat serwera przedstawiono na rys. 1. Serwer strumieni danych składa się kilku modułów, które realizują poszczególne funkcje serwera. Moduły zaznaczone linią przerywaną tworzone są dynamicznie – np. na żądanie modułu podłączonego jako odbiorca strumienia danych. Moduły takie są także automatycznie usuwane (np. w przypadku zerwania połączenia sieciowego z modułem odbierającym). Na rys. 1 można zauważyć powtarzające się moduły o nazwie „kanał strumienia danych”. Pod tym pojęciem rozumiemy grupę elementów obsługujących jeden wejściowy strumień danych. Założeniem kanałów jest by pracowały one niezależnie – znacznie upraszcza to etap projektowania połączeń pomiędzy modułami, zwłaszcza w środowiskach rozproszonych. Kanał serwera strumieni danych obsługuje dwa podstawowe żądania: (a) żądanie strumienia bieżącego, (b) żądanie strumienia historycznego. Strumień bieżący jest strumieniem, który pojawia się na wejściu danego kanału serwera strumieni danych. Strumień historyczny jest strumieniem, który został uprzednio umieszczony w module buforującym danego kanału. Odbiorca strumienia danych wysyła żądanie strumienia historycznego w określonych przypadkach, na przykład po wznowieniu zerwanego uprzednio połączenia sieciowego. W takim wypadku odbiorca wskazuje znacznik czasowy ostatnio otrzymanej krotki, a serwer strumieni danych rozpoczyna wysyłanie odpowiedniej części strumienia historycznego. Taka obsługa pozwala na zapewnienie ciągłości strumienia danych wysyłanego do odbiorcy strumienia danych. pl s. 149 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 M. Gorawski, P. Wolany Serwer strumieni danych Moduł buforujący Kanał strumienia danych Strumień danych Kanał wyjściowy w Transmiter Kanał wyjściowy Transmiter w Kanał strumienia danych Strumień danych Moduł buforujący w da .b Rys. 1. Ogólny schemat serwera strumieni danych. Elementy przedstawione linią przerywaną tworzone są dynamicznie. Strzałki symbolizują połączenia komunikacyjne pomiędzy modułami. Linie kropkowane symbolizują przepływ krotek. Błyskawica oznacza interfejs komunikacyjny RMI 3.2 Moduł buforujący Moduł buforujący jest kluczowym modułem serwera strumieni danych. Jego duże znaczenie wynika z faktu, że to on ma bezpośredni wpływ na wydajność obsługi żądań strumieni danych, zarówno bieżącego, jak i historycznego. Znaczenie tego modułu jest duże także dlatego, że buforuje wszystkie krotki strumienia danych, który z założenia jest nieskończenie długi. Moduł buforujący występuje w dwóch podstawowych wersjach: (a) trwale buforującej i (b) tymczasowo buforującej (rys. 2). Strumień danych Zarejestrowani odbiorcy strumienia bieżącego Bufor strumienia danych Proces wyszukiwania i kopiowania Zarejestrowani odbiorcy strumienia historycznego pl s. Moduł tymczasowo buforujący Kanał wyjściowy Kanał wyjściowy Bufor Kanał wyjściowy Bufor Kanał wyjściowy Rys. 2. Ogólny schemat modułu tymczasowo buforującego 150 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Integracja systemu rozproszonego przetwarzania strumieni danych z systemem agentów programowych w Buforowanie tymczasowe utrzymuje bufor w pamięci RAM. W rezultacie buforowanie to jest niezwykle wydajne, jednak rozmiar buforowania jest ograniczony. Buforowanie trwałe, które utrzymuje bufor w oparciu o pliki dyskowe, ma odmienne właściwości – buforowanie nie jest tak wydajne, ale rozmiar buforowanego strumienia danych ograniczony jest tylko dostępną przestrzenią dyskową. Podstawowe funkcje modułu są następujące: − trwałe lub tymczasowe buforowanie strumienia danych, − równoczesna obsługa żądań strumieni danych (bieżących lub historycznych), − zamiana typu żądań. Ostatnia funkcjonalność – zmiana typu żądania – pozwala zapewnić niezależność obsługi żądań strumieni danych. Funkcja ta oferuje zamianę: − żądania aktualnego strumienia danych na żądanie historycznego strumienia danych. Sytuacja taka występuje, gdy odbiorca nie pobiera wysyłanego strumienia danych lub doszło do przepełnienia jego buforów nadawczych, w konsekwencji zbyt wolnego pobierania strumienia danych. Wówczas żądanie odbiorcy strumienia danych zamieniane jest na żądanie historycznego strumienia danych, w nadziei, że po pewnym czasie odbiorca wznowi poprawny, odpowiednio szybki odbiór strumienia danych. Będzie wówczas obsługiwany w ramach obsługi żądań historycznych strumieni danych, zostanie do niego wysłany strumień ciągły, a obsługa wysyłania strumienia bieżącego do pozostałych, sprawnych odbiorców nie zostanie naruszona (np. spowolniona) z powodu chwilowych kłopotów takiego odbiorcy; − żądania historycznego strumienia danych na żądanie aktualnego strumienia danych. Taka sytuacja występuje, gdy odbiorca obsługiwany był w ramach obsługi żądania historycznego strumienia danych (na przykład w konsekwencji awarii połączenia lub wstrzymania pobierania strumienia danych), pobrał już cały historyczny strumień danych i jest gotowy do rozpoczęcia pobierania bieżącego strumienia danych. Taka obsługa pozwala na utrzymanie ciągłości wysyłanego do odbiorców strumienia danych, bez konieczności dodatkowej, intensywnej komunikacji pomiędzy odbiorcą, a serwerem strumienia danych. Znaczenie tej funkcji jest duże, zwłaszcza w kontekście odbiorców strumieni danych, którymi docelowo są agenci programowi. Jednostki te docelowo będą w stanie ciągłej realizacji zadań i dużego obciążenia. Z tego względu, nie będą w stanie na bieżąco realizować aktualizacji swojej hurtowni danych, co zazwyczaj będzie skutkowało wstrzymaniem pobierania strumienia danych. da .b w w pl s. 3.3 Moduł ETLTask Dane pobrane ze strumienia danych muszą zostać załadowane do hurtowni danych agenta. Zadaniem tym zajmuje się moduł ETLTask (rys. 3). Generuje on zadania aktualizacji hurtowni danych, które następnie wykonywane są przez agenta. Tym samym moduł ten, w przeciwieństwie do wcześniej przedstawionych, nie jest uniwersalny i ma zastosowanie tylko w systemie agentów programowych. 151 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 M. Gorawski, P. Wolany E T L T a sk B u fo r 1 Z a d a n ia ak tu a liza c ji S tru m ień d an yc h ZA ZA ZA ZA w B u fo r 2 w Rys. 3. Ogólny schemat modułu (ETLTask). Moduł paczkuje krotki strumienia danych i tworzy zadania aktualizacji hurtowni danych (ZA). Ciągłość pobierania strumienia danych w czasie generowania zadania aktualizacji, zapewniają dwa (bufory) strumienia danych da .b w Aby proces aktualizacji hurtowni danych agenta był optymalny, realizowane jest paczkowanie pobranych krotek, które oparte jest zarówno na limicie wypełnienia paczki, jak i na limicie czasowym. Pozwala to na swobodne dostosowanie zarówno rozmiaru aktualizujących danych, jak i wymaganego poziomu aktualności danych hurtowni. Celem paczkowania jest przeciwdziałanie wadom zasilania strumieniami danych – częste wykonywanie niedużych aktualizacji zwiększa ogólne obciążenie danej jednostki. Paczkowanie oparte o takie warunki realizacji aktualizacji, pozwala dobrze zoptymalizować ten proces. W przypadkach aktualizowania hurtowni danych opartej na paczkach o dużych rozmiarach, niezbędne jest zapewnienie możliwości ciągłego pobierania napływającego strumienia danych w chwili, gdy dostęp do bufora jest ograniczony ze względu na tworzenie zadania aktualizującego hurtownię danych. Wymóg ten jest realizowany za pomocą dodatkowego bufora, który cyklicznie zamieniany jest z już wypełnionym buforem. Pozwala to uniknąć niepotrzebnego wstrzymywania pobierania strumienia danych i uruchamiania na serwerze strumieni danych obsługi żądania strumienia historycznego. Moduł ETLTask ma szerokie możliwości konfiguracji. Możliwe jest dobranie parametrów zadań aktualizacji, docelowej struktury aktualizacji (hurtownia danych, drzewa STCAT) [4], podziału danych w podejściu DWS [3], ale na hurtownie podłączone z danym agentem, a nawet na propagację zadań przy wykorzystaniu wewnętrznych mechanizmów systemu agentów programowych. pl s. 3.4 Podział strumienia danych System agentów umożliwia pracę w oparciu o rozproszone hurtownie danych, zgodnie z podejściem podziału hurtowni danych (DWS). Technika ta polega na podziale danych i ładowaniu do hurtowni poszczególnych ich części. Wówczas tylko razem zgrupowane hurtownie, reprezentują cały kompletny zestaw danych. Podział danych w podejściu DWS można efektywnie przeprowadzić już na poziomie strumienia danych wykorzystując do tego celu moduł DSDivider (rys. 4). Moduł ten realizuje podział strumienia danych według wartości atrybutu krotki. Do każdego odbiorcy przyporządkowany jest warunek wartości atrybutu, którego spełnienie powoduje wysłanie danej krotki do danego odbiorcy. Podział danych oparty na spełnieniu określonego warunku jest niezbędny, ponieważ strumień danych zawiera krotki aktualizujące, które muszą trafić do tego samego odbiorcy, który otrzymał krotkę pierwotną dla danej krotki aktualizującej. 152 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Integracja systemu rozproszonego przetwarzania strumieni danych z systemem agentów programowych 3.5 Przykład połączeń modułów w Moduły budowane w środowisku JDK 5.0 [5] dają szerokie możliwości konfiguracji docelowej propagacji strumienia danych. W kontekście docelowej, rozproszonej struktury systemu agentów programowych oraz pracy w podejściu podziału danych na poszczególnych agentów, projektant ma praktycznie szerokie możliwości konfiguracyjne. Rys. 4 prezentuje przykładową konfigurację połączeń modułów. Moduł DSSplitter realizuje replikację strumienia danych. Jeden strumień służy do zasilania lokalnej hurtowni danych danego agenta za pomocą modułu ETLTask. Drugi strumień przesyłany jest bez modyfikacji do kanału serwera danych, z którego jest on następnie pobierany przez innego agenta. Trzeci strumień dzielony jest według atrybutu krotki na 3 strumienie, które kierowane są do odpowiednich kanałów serwera strumieni danych. DSDividerEx w w Serwer SD F(id) A A B D BD C C da .b DS Splitter ETLTask HD Agent Agenci Rys. 4. Przykład połączeń modułów w systemie agentów programowych pl s. 4 Podsumowanie Integracja systemów opisana w niniejszym rozdziale pozwala na zasilanie strumieniami danych systemów rozproszonych. Strumienie danych przesyłane są za pomocą specjalnych modułów, które oferują wysokie bezpieczeństwo, dużą wydajność oraz szerokie możliwości konfiguracji propagacji strumienia danych. Bezpieczeństwo strumienia danych zapewnione jest nawet w przypadku zerwania połączenia sieciowego lub wstrzymania pobierania przez odbiorcę strumienia danych. W zależności od wymagań i przewidywanego czasu awarii, projektant ma do wyboru dwa rodzaje buforowania, które oferują różną wydajność i różny czas utrzymania ciągłości strumienia danych. Integracja modułów z agentami programowymi pozwala na wykorzystanie do propagacji strumienia danych już istniejącej struktury systemu. Z punktu widzenia systemu agentów programowych, moduły tworzą niezależną warstwę zasilającą węzły strumieniem danych. 153 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 M. Gorawski, P. Wolany Literatura 1. 2. w M. Gorawski, P. Marks: Fault-Tolerant Distributed Stream Processing System 2nd Int. Workshop on High Availability of Distributed Systems (HADIS’06), 17th International Conference on Database and Expert Systems Applications, DEXA 2006, September 4 – 8, IEEE Computer Society, 2006, pp. 395–399 (2006). M. Gorawski, P. Marks: Distributed Stream Processing Analysis in High Availability Context. 2nd International Conference on Availability, Reliability and Security, ARES 2007, The International Dependability Conference – Bridging Theory and Practice, April 10–13. 2007, Vienna University of Technology, Austria. IEEE Computer Society. M. Gorawski, S. Bańkowski: System agentów programowych WKŁ, In a joint publication Kozielski S et al.: Databases. Structures, Algorithms, Methods (Bazy danych. Struktury, algorytmy, metody) Selected Technology and Application (Wybrane technologie i zastosowania) Conf. BDAS’06, ISBN 978-83-206-1611-5, pp. 139–147 (2006). Marcin Gorawski, Michał Gorawski, Sławomir Bańkowski: Selection of Indexing Structures in Grid Data Warehouses 2nd Workshop on Large Scale Computations on Grids (LaSCoG ’06) XXII Autumn Meeting of Polish Information Processing Society, International Multiconference on Computer Science and Information Technology, November 6 – 10 2006, Wisła, Poland ISSN 1896-7094 pp. 267–275, (2006). Java 2 Standard Edition, Documentation, 2006 (JDK 5.0). 3. 5. da .b w w 4. pl s. 154 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007