Strona Główna / Blog

Czy Znasz te Dwa Sposoby na Streaming Danych w Chmurze Azure?

Damian Mazurek

Damian Mazurek

CTO w Chmurowisko. Jestem architektem pracującym z .NET, Node.JS i Microsoft Azure. Specjalizuję się w budowaniu globalnie rozproszonych aplikacji oraz rozwiazań IoT. W Chmurowisku odpowiadam za projekty związane z tworzeniem rozwiązań dla naszych klientów z wykorzystaniem rozwiązań PaaS oraz FaaS. Skontaktuj się z nim pisząc na ten adres.

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.Azure-data-streaming-architecutre-Chmurowisko

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:

HDInsights-data-streaming-architecutre-Chmurowisko

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:

Spark-architecture-Chmurowisko

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.

 

Dołącz do listy mailingowej!

Dołącz do naszego newslettera

Staramy się wysyłać tylko wartościowe informacje, np. co miesiąc dostaniesz spis najważniejszych nowości z chmur Azure, AWS i GCP, z krótkimi opisami i linkami.