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.

 

Już wkrótce otwieramy nowe kursy

Zostań specjalistą chmury publicznej

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.