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

Podobne dokumenty