Czy Znasz te Dwa Sposoby na Streaming Danych w Chmurze Azure?
Ostatnio zauważyliśmy, że wielu naszych klientów boryka się z tym samym problemem, jakim jest kwestia transmisji danych w systemach rozproszonych obsługujących setki tysięcy źródeł danych (niezależnie czy są to informacje od urządzeń w systemach IoT, czy dane użytkowników). Istnieje kilka sposobów na skuteczne i bezpieczne wdrożenie systemu do streamingu danych. Zależnie od projektu, dobieramy rozwiązanie wykorzystujące architekturę Lambda, mikrousługi, czy usługi PaaS-owe lub Serverless w Azure.
Streaming danych w oparciu o usługi Azure Platform-as-a-Service
Dzisiaj opowiem o dwóch podejściach związanych z realizacją tego zagadnienia z wykorzystaniem usług PaaS w Azure.
Pierwszy ze sposobów koncentruje się na wykorzystaniu takich usług jak Event Hubs, Stream Analytics, Azure Functions lub Web Jobs i Data Lake Store. Drugi, bardzo interesujący sposób wykorzystuje platformę Azure HDInsight i jej produkty.
Zacznijmy od pierwszego rozwiązania.
Event Hubs, Stream Analytics i usługi Data Lake
Na nasze pierwsze rozwiązanie składa się kilka komponentów.
Przyjrzyjmy się po kolei każdemu z nich:
1. Event Hubs – swobodne pobieranie i przetwarzanie strumieni danych
Pierwszym elementem naszej architektury jest Event Hubs, wysoce skalowalna platforma do pobierania zdarzeń i strumieniowego przesyłania danych, która umożliwia odbieranie i przetwarzanie milionów zdarzeń na sekundę.
Event Hubs pozwala nam przetwarzać i przechowywa ć zdarzenia, dane lub dane telemetryczne generowane przez rozproszone oprogramowanie i urządzenia.
Główne zalety Event Hubs to:
- Łatwa skalowalność.
- Dobra integracja z innymi usługami typu Platform-as-a-Service.
- Ustawialna retencja przechowywania danych w hubie.
- Grupy konsumenckie pozwalające na separację stanu danych odczytanych pomiędzy subskrybentami.
Pełen opis produktu dostępny jest na stronie Microsoft: https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-what-is-event-hubs.
2. Stream Analytics – analiza danych w czasie rzeczywistym
Stream Analytics to narzędzie służące do przetwarzania strumieniowego. Pozwala ono na transfer milionów żądań w czasie poniżej sekundy. Jest to możliwe między innymi dlatego, że Stream Analytics wykorzystuje język skryptowy oparty o SQL, co umożliwia nam walidację, segregację i agregację danych już na etapie ich przesyłania.
Dodatkowo możliwość stworzenia kilku zapytań z różnymi warunkami i wyjściami dla jednego wejścia pozwala nam na sterowanie przepływem danych. Wykorzystując tę funkcję, możemy np. podzielić przepływ danych na warstwach przetwarzania czasu rzeczywistego (speed) i wsadowego (batch) już na poziomie Stream Analytics.
Z kolei dzięki wysokiemu SLA i dużej niezawodności Stream Analytics, możemy oprzeć na nim kluczowe czynności związane z przetwarzaniem i gromadzeniem danych do bazy dokumentowej lub SQL.
Stream Analytics oferuje kilka zalet:
- Przeprowadzanie operacji w czasie rzeczywistym na przychodzących danych.
- Zdolność przetwarzania milionów zdarzeń w czasie poniżej sekundy.
- Możliwość korelacji wielu źródeł danych.
- Używanie języka bazującego na SQL do pracy na danych.
- Integracja z funkcjami Azure Machine Learning.
- Wysoka skalowalność rozwiązania.
- Wysokie SLA i niezawodność.
Jeśli chcecie dowiedzieć się więcej na temat Stream Analytics, odsyłamy do strony Microsoft: https://docs.microsoft.com/en-us/azure/stream-analytics/.
3. Data Lake Store – repozytorium danych w hiperskali
Kolejnym elementem naszej architektury Azure umożliwiającej bezpieczny streaming danych jest Data Lake Store. Jest to usługa pozwalająca na przechowywanie ogromnych ilości danych (liczonych w petabajtach) w celach przeprowadzania na nich analiz Big Data. Bazuje ona na systemie plików HDFS i jest w pełni kompatybilna z platformami Hadoop oraz Spark.
A jakie są główne zalety Data Lake Store? Przede wszystkim:
- Możliwość przechowywania dużych plików.
- Teoretycznie nieograniczone miejsce.
- System plików HDFS.
- Prosta integracja z platformami Spark i Hadoop
- Kontrola dostępu na bazie Azure AD.
Szerszy opis dostępny jest na stronie producenta: https://docs.microsoft.com/en-us/azure/data-lake-store/.
4. Data Lake Analytics – błyskawiczne przetwarzanie olbrzymich ilości danych
O ile Data Lake Store służy do przechowywania ogromnych zasobów danych, to Data Lake Analytics umożliwia nam ich przetwarzanie. Dzięki niej możemy uruchamiać zadania obliczeniowe (joby) w celu uproszczenia obliczeń Big Data.
Co ciekawe, Data Lake Analytics pozwala na dynamiczne skalowanie zadań bez konieczności stawiania pod spodem infrastruktury. Dodatkowo jest to usługa stworzona z myślą o developerach .Net, łącząca cechy SQL, Big Data i .Net dzięki wykorzystaniu języka U-SQL.
Podsumowując, Data Lake Analytics umożliwia nam:
- Dynamiczne skalowanie mocy obliczeniowej, co pozwala na zmniejszenie kosztów pracy usługi i zwiększenie jej wydajności.
- Współpracę z wieloma źródłami danych: Azure SQL, Azure SQL Data Warehouse, Azure Storage, Azure Data Lake Store.
- Dobrą integrację z Visual Studio, umożliwiającą proste debugowanie i development.
- Ponadto płacimy tylko za czas, kiedy zadania są uruchomione.
- Dodatkowo usługa korzysta z języka U-SQL bazującego na .Net i SQL.
Więcej informacji o usłudze znajdziecie na: https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-overview.
5. Time Series Insights – zarządzanie analizą, przechowywaniem i wizualizacją danych szeregów czasowych
Time Series Insights to usługa stworzona do przechowywania oraz wizualizacji danych gromadzonych w serii czasu. Idealnym przykładem jej zastosowania są systemy klasy IoT. Dobrze sprawdzi się również jako warstwa obsługująca w architekturze Lambda dla systemów przesyłających duże ilości danych.
Time Series Insights posiada wbudowane API pozwalające na dostęp do danych za pomocą REST API lub WebSocket, co umożliwia odbieranie danych w czasie rzeczywistym poprzez podłączone aplikacje.
Głównymi zaletami Time Series Insights są:
- Natywna integracja z Event Hubs pozwalająca na bezpośrednie pobieranie danych.
- Wbudowana wizualizacja umożliwiająca podgląd danych i budowanie zaawansowanych wizualizacji.
- Rest API i WebSocket API pozwalające na integrację aplikacji zewnętrznych.
- Kontrola dostępu na bazie Azure Active Directory.
- Zoptymalizowana baza pod dane występujące w dziedzinie czasu, zapewniająca wysoką wydajność ich przeszukiwania i odczytów.
Więcej szczegółów dostępnych jest na stronie usługi: https://docs.microsoft.com/en-us/azure/time-series-insights/time-series-insights-overview.
Event Hubs, Stream Analytics i usługi Data Lake – wady i zalety
Poznaliśmy możliwości poszczególnych komponentów naszego pierwszego rozwiązania. A jakie są ich zalety, kiedy połączymy je w jeden system? Sprawdźmy.
- Mniejsze koszty developmentu i zwiększona niezawodność rozwiązania dzięki bardzo dobrej integracji pomiędzy poszczególnymi elementami.
- Szybki rozwój oprogramowania. Niezbędne funkcje systemu jesteśmy w stanie stworzyć w 3-4 dni.
- Wysokie bezpieczeństwo. Rozwiązanie wykorzystuje autoryzację za pomocą Azure AD oraz zabezpieczenia na poziomie usług. Pozwalają one w prosty sposób zbudować bezpieczny system bez dodatkowych nakładów pracy.
- Możliwość łatwego rozszerzenia systemu z wykorzystaniem innych komponentów platformy Azure.
- Wysoka wydajność oraz możliwość łatwego skalowania.
Brzmi dobrze, a jednak każde rozwiązanie ma swoje wady. Przyjrzyjmy się kilku punktom, które należy mieć na uwadze, decydując się na wdrożenie streamingu danych w oparciu o powyższe usługi Azure PaaS:
- Mała elastyczność – rozwiązanie wymaga stworzenia systemu w określony, predefiniowany sposób.
- Koszty skalują się wraz z obciążeniem. Przez to w pewnym momencie nasze rozwiązanie może okazać się nieopłacalne.
- Wymagane konkretne umiejętności programistyczne. Jest to rozwiązanie przeznaczone głównie dla programistów .Net i T-SQL.
Jeśli jakaś z powyższych wad rozwiązania wyklucza jego zastosowanie w Waszym projekcie, być może nasza druga propozycja bardziej przypadnie Wam do gustu.
Przejdźmy do platformy HDInsight.
Platforma HDInsight – Kafka i Spark
Drugim sposobem realizacji naszego tematu jest wykorzystanie produktów platformy HDInsight i oferowanych przez nie możliwości.
Oto uproszczony schemat naszego rozwiązania w tym wydaniu:
Ponownie przeanalizujmy każdy z komponentów.
1. Apache Kafka – obsługa danych czasu rzeczywistego
Apache Kafka to platforma do streamingu danych pozwalająca na gromadzenie danych w poszczególnych kategoriach tematycznych rozłożonych pomiędzy kilka partycji. Kafka posiada wbudowaną funkcję replikacji danych oraz umożliwia subskrypcję danych poprzez konsumentów.
Dzięki wykorzystaniu dysków zarządzalnych, na których są ułożone partycje, system ten w usłudze HdInsight pozwala osiągnąć olbrzymie prędkości transmisji, które są ograniczone praktycznie tylko przepustowością sieci w Azure.
Kafka oferuje wiele zalet:
- Możliwość osiągnięcia olbrzymich prędkości transmisji. Kafka została stworzona z myślą o transmisji rzędu 10^9 komunikatów na sekundę.
- Grupowanie danych według kategorii tematycznych.
- Zwiększona wydajność dzięki zastosowaniu dysków zarządzalnych.
- Replikacja danych na poziomie węzłów w jednym klastrze.
- Replikacja danych pomiędzy klastrami z wykorzystaniem technologii
- Popularność i niezawodność. Kafka jest otwartym oprogramowaniem stosowanym z powodzeniem przez olbrzymie przedsiębiorstwa (np. LinkedIn, Google, itd.). Sprawdzono je w scenariuszach z potężnymi wartościami transmisji danych (na przykład 10^14 komunikatów na sekundę wykorzystania w LinkedIn).
- Bezpieczeństwo. Kafka działa w VNET, bez publicznych punktów końcowych.
Jeżeli chcecie dowiedzieć się więcej, zajrzyjcie na stronę Microsoftu: https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-apache-storm-with-kafka.
2. Apache Spark – otwarte oprogramowanie dla obliczeń rozproszonych
Apache Spark jest otwartą platformą pozwalającą na równoległe przetwarzanie danych i wspierającą operacje bazy danych w pamięci (in-memory). Wykorzystuje się ją do operacji Big Data.
Spark korzysta z mechanizmu MapReduce i posiada kilka ważnych elementów umożliwiających tworzenie zapytań, streaming danych, definiowanie mechanizmów uczenia maszynowego oraz wykonywanie operacji na wykresach:
Tak jak Kafka, Spark ma sporo zalet:
- Wykorzystuje mechanizm MapReduce i strukturę plików HDFS.
- Posiada moduły do uczenia maszynowego.
- Posiada wgrany pakiet Anaconda.
- Łatwo integruje się ze Scalą, Javą i Pythonem.
- Wbudowane notebooki pozwalają na tworzenie kodu z poziomu usługi.
- Jest wykorzystywany do Big Data przez największe korporacje na świecie.
- Umożliwia integrację z Azure Data Lake.
- Posiada bogatą dokumentację z wieloma przykładami użycia.
- Rozbudowane API pozwala na wykorzystanie w pełni możliwości silnika Spark.
Szczegółowy opis platformy Spark dostępny jest tutaj: https://docs.microsoft.com/en-us/azure/hdinsight/spark/apache-spark-overview.
3. Spark Streaming – przetwarzanie strumienia danych na platformie Spark
Ostatnim elementem rozwiązania jest Spark Streaming, framework pozwalający na wykorzystanie możliwości platformy Spark w streamingu danych. Uruchamiany na platformie Spark pozwala na wielokrotne korzystanie z zasobów, bibliotek i kodu już tam istniejącego.
Zobaczmy, jakie są zalety tego produktu:
- Istnieje w ramach platformy Spark.
- Współdzieli zasoby potrzebne do streamingu.
- Wspiera operacje wsadowego przetwarzania danych.
- Posiada wiele SDK i możliwości integracji z usługami Azure (Data Lake, Cosmos Db).
- Dobrze integruje się ze Scalą, Javą i Pythonem.
- Posiada wbudowane notebooki pozwalające na tworzenie kodu z poziomu usługi.
Platforma HDInsight – wady i zalety
Biorąc pod lupę nasze drugie rozwiązanie, wyodrębniliśmy następujące wady i zalety, który należy wziąć pod uwagę przed decyzją o jego wdrożeniu.
Zalety rozwiązania opartego o usługi HDInsight:
- Sprawdzone narzędzia używane przez najlepszych w branży.
- Najszybciej rozwijające się platformy do Big Data.
- Możliwość osiągnięcia olbrzymiej prędkości transmisji danych, bezpośrednio skalowalna na liczbę węzłów pod spodem.
- Zaawansowane możliwości analizy i uczenia maszynowego.
Wady:
- Wyższe koszty niż w przypadku innych rozwiązań (pod spodem stawiamy maszyny wirtualne), szczególnie w początkowych fazach projektu.
- Wymagane konkretne umiejętności programistyczne. To rozwiązanie jest przeznaczone dla programistów Javy, Scali lub Pythona.
- Trudna konfiguracja w stosunku do pierwszego rozwiązania.
Transmisja danych z Azure PaaS – co wybrać?
Jak wspomniałem na początku artykułu, istnieje wiele sposobów na wdrożenie wydajnego i bezpiecznego systemu do streamingu olbrzymich ilości danych w systemach rozproszonych. Dzisiaj zaprezentowaliśmy dwa z nich.
Który jest lepszy? Wszystko zależy od specyfiki firmy, projektu i danych, jakie są przetwarzane. I jedno i drugie rozwiązanie oferuje sporo zalet, ale wiąże się też z pewnymi ograniczeniami.
Już 21 czerwca dowiesz się, jak możesz wykorzystać AI w Twojej firmie. Damian Mazurek i Piotr Kalinowski wprowadzą Cię w świat sztucznej inteligencji i LLM.
Przed nami nowy rozdział! Chmurowisko dokonało połączenia z polskim Software Mind – firmą, która od 20 lat tworzy rozwiązania przyczyniające się do sukcesu organizacji z całego świata…
Grupa Dynamic Precision podjęła decyzję o unowocześnieniu swojej infrastruktury. Razem z Oracle Polska prowadzimy migrację aplikacji firmy do chmury OCI.
Już 21 czerwca dowiesz się, jak możesz wykorzystać AI w Twojej firmie. Damian Mazurek i Piotr Kalinowski wprowadzą Cię w świat sztucznej inteligencji i LLM.
Zapisz się do naszego newslettera i
bądź z chmurami na bieżąco!
z chmur Azure, AWS i GCP, z krótkimi opisami i linkami.