Data Lake w chmurze AWS, czyli pewny sposób na efektywną analizę danych firmowych – Case Study

Data Lake rozwiązuje kilka ważnych problemów związanych z przechowywaniem i przetwarzaniem dużych ilości danych. Najważniejsze z nich to: łatwiejszy dostęp i efektywniejsza analiza danych (w tym za pomocą sztucznej inteligencji i uczenia maszynowego), skalowalne środowisko, integracja danych z różnych źródeł oraz przetwarzanie w czasie rzeczywistym. Co ważne, Data Lake pomaga również zmniejszyć firmowe koszty związane z danymi, wykorzystując tańsze i bardziej elastyczne rozwiązania do ich przechowywania oraz przetwarzania. W poniższym Case Study pokażemy sposób budowy rozwiązania Data Lake w chmurze AWS, dla klienta posiadającego duże ilości nieuporządkowanych danych.

Case Study: Data Lake w chmurze AWS, czyli sposób na efektywną analizę danych firmowych

Czym jest środowisko Data Lake i dlaczego warto z niego korzystać?

Środowisko Data Lake to zestaw usług do przetwarzania oraz składowania dużych ilości zróżnicowanych danych z różnych źródeł. W Data Lake można przetwarzać dane ustrukturyzowane (np. dane tabelaryczne relacyjnych baz danych, pliki w formacie CSV), częściowo ustrukturyzowane (np. pliki JSON, XML) oraz nieustrukturyzowane (pliki audio, video, zdjęcia). Ogromną zaletą jest to, że tzw. jeziora danych mogą przetwarzać dowolne wielkości danych – począwszy od małych wolumenów, a skończywszy na petabajtach danych.  

Data Lake daje również możliwość wyboru częstotliwości przetwarzania danych. Zaczynając od klasycznych przetwarzań batchowych w częstotliwości raz dziennie, aż do przetwarzań strumieniowych, których dane wynikowe pojawiają w czasie bliskim rzeczywistego od momentu wygenerowania danych wejściowych.

Wniosek: umiejętne wykorzystanie Data Lake w firmie pozwala podejmować lepsze decyzje biznesowe – oparte o rzeczywiste dane, a nie wyobrażenia.

Case Study. Sytuacja wyjściowa klienta

Poniżej przedstawimy działania, które wykonaliśmy dla jednego z naszych klientów. Firma zgłosiła się do nas z problemem nieefektywnego przetwarzania i wykorzystywania danych ustrukturyzowanych, pozyskiwanych z kilku baz danych (w tym z popularnych baz relacyjnych, kilku aplikacji biznesowych i social mediów). Nieuporządkowane dane zaburzały rzeczywisty obraz klientów, produktów i procesów biznesowych firmy, a koszty repozytorium stale rosły.  

Klient chciał odzyskać kontrolę nad danymi i móc wykorzystywać je do analizy rynku oraz klientów. Zakładał, że w przyszłości będzie potrzebował otworzyć się również na kolejne źródła pozyskiwania danych, dlatego potrzebował skalowalnego rozwiązania, nad którego kosztami będzie mógł zapanować. Wybór chmury AWS wydawał się najlepszą opcją.

Budowa Data Lake w chmurze AWS

Do budowy naszego chmurowego rozwiązania wykorzystaliśmy usługi typu serverless, aby w przyszłości klient nie ponosił dodatkowych kosztów związanych z ich obsługą i utrzymaniem. Dzięki temu jego firma płaci wyłącznie za wykorzystany czas działania usług, a w razie potrzeby te skalują się automatycznie. Nie ma potrzeby przejmowania się wielkością przetwarzanych danych ani liczbą użytkowników, którzy chcą jednocześnie skorzystać ze zbiorów utworzonego środowiska. 

Wszelkie dane w ramach zbudowanego rozwiązania przechowywane są w usłudze S3. Pozwala to na separacje usług compute od storage, dzięki czemu można niezależnie przetwarzać dane, a po wykonaniu przetwarzań te są cały czas dostępne. 

Dane z systemów źródłowych, które przetwarzamy w zbudowanym rozwiązaniu chmurowym, są zapisane w formie plików w bucketach w usłudze S3. Mogą być przetransportowane za pomocą licznych narzędzi ETL, np. Informatica Power Center lub za pomocą usług AWS, takich jak AWS Glue czy DMS (Data Migration Service). Nie chcemy jednak skupiać się na mechanizmach ETL przy opisywaniu rozwiązania, a na przetwarzaniu danych wewnątrz chmury AWS w ramach środowiska Data Lake.

Poniższy rysunek pokazuje ogólną architekturę rozwiązania:

Infografika pokazująca schemat ogólnej archtektóry Data Lake w chmurze AWS

Porządkowanie i oczyszczanie danych

Sytuacja klienta przedstawiała się w taki sposób: dane wejściowe były nieuporządkowane, niezoptymalizowane do zoptymalizowanych przetwarzań oraz wymagały modyfikacji samej zawartości danych. 

Do tego celu wykorzystaliśmy usługę AWS Glue, która przetworzyła dane wejściowe – wykonała niezbędne transformaty, operacje oczyszczania danych, a także anonimizacji oraz eliminacji nieistotnych danych. Wynik zapisane zostały w formacie posiadającym trzy cechy istotne z punktu widzenia dalszego przetwarzania danych w środowisku chmurowym Data Lake:

1. Dane zapisane w odpowiednim formacie

Środowisko big data bardzo dobrze operuje na trzech formatach plików: Parquet, Avro i Orc. Są to binarne formaty, zorientowane kolumnowo lub wierszowo, pozwalające w różnym stopniu na zmianę struktury plików oraz stopnia kompresji.  

Podczas projektowania środowiska Data Lake należy podjąć decyzje o wyborze typu pliku. Nasze oparliśmy o typ Parquet, gdyż jest to plik zorganizowany kolumnowo i bardzo dobrze współpracuje z silnikiem przetwarzania danych Spark, który jest wykorzystywany przez AWS Glue. Plik binarny zorganizowany kolumno oznacza, że każda kolumna ma swoją osobną strukturę, a odczyt wartości z konkretnej kolumny nie wymaga przeczytania całych wierszy czy bloków pliku. Dodatkowo sam plik nie wymaga indeksowania. Istotne jest jednak, aby dane zapisywane do dalszego przetwarzania były podzielone na mniejsze pliki, dzięki temu będzie można zrównoleglić przetwarzania.

2. Dane skompresowane

Dane na S3 można z powodzeniem zapisać w wersji skompresowanej, np. Gzip dla plików płaskich CSV. Pliki środowiska big data posiadają dedykowane algorytmy kompresji i wybór leży po stronie projektanta. Warto jedynie pamiętać, że skuteczniejsze algorytmy kompresji mogą zużywać więcej mocy przetwarzania do wykonania kompresji oraz dekompresji. Akurat w naszym przypadku użyty został algorytm “snappy”.

3. Dane partycjonowane według klucza

Wykorzystaliśmy strukturę katalogów i podkatalogów usługi S3, aby w docelowym rozwiązaniu chmurowym uzyskać formę partycjonowania danych.  

Po wykonaniu przetwarzań w AWS Glue otrzymaliśmy pożądane struktury danych w S3. Dane te należało następnie skatalogować, aby móc je udostępnić w wygodny dla użytkowników sposób. W tym celu wykorzystaliśmy usługę AWS Glue Catalog. Stworzyliśmy Glue Crawler, który skanuje pliki na S3 i buduje metadane (nazwy tabel, kolumn, typy danych, listę partycji), zapisując te informacje w Glue Catalogu. Dzięki tym usługom nie jest wymagana praktycznie żadna ręczna ingerencja operatora do wykonania opisu danych, która normalnie byłaby bardzo czasochłonna. Jeżeli w trakcie działania naszego środowiska Data Lake dojdzie nowa tabela, automatycznie zmienia się istniejąca struktura tabeli. Wystarczy uruchomić utworzony Crawler, aby odświeżyć strukturę w Glue Catalogu.

Dane gotowe do udostępnienia użytkownikom

W tym momencie nasze dane były już gotowe do udostępnienia użytkownikom. Jako usługę dostępową wybraliśmy AWS Athena. Jest to usługa, która potrafi czytać dane bezpośrednio z plików S3 z wykorzystaniem informacji zawartych w AWS Glue Catalog. W Athena natywnym językiem do pracy nad danymi jest język SQL. Usługa ta jest typu serverless, a więc po raz kolejny nasz klient ponosi wyłącznie koszt wykonanych zapytań, liczonych jako liczba przeskanowanych bajtów danych w plikach.

Aby dodatkowo obniżyć koszt środowiska, skorzystaliśmy z właściwości organizacji plików na S3, czyli:

  • W zapytaniach SQL używamy tylko potrzebne kolumny (jak wspominaliśmy wyżej, pliki Parquet są zorientowane kolumnowo); 
  • Skompresowane dane pozwalają na zmniejszenie liczby przeczytanych bajtów przez usługę Athena, co wiąże się z niższym kosztem; 
  • Dane partycjonowane pozwalają na ograniczenie skanowania liczby plików, dlatego w zapytaniach SQL ustawiliśmy warunki “where” wszędzie tam, gdzie to tylko możliwe.

Gotowe Data Lake i efekty projektu

Stworzone w ten sposób rozwiązanie chmurowe spełnia wymogi bezpieczeństwa przetwarzania danych. Obiekty w usłudze S3 są szyfrowane kluczem KMS, a komunikacja usług AWS Glue i Athena odbywa się za pomocą szyfrowanego kanału SSL. Nad dostępem do danych przez Athenę (autoryzacja) czuwa usługa AWS Lake Formation.   

Tak zorganizowane środowisko pozwala na bezpieczne i wydajne udostępnianie danych użytkownikom, bez przestojów w dostępie rozwiązania. Jest to również sposób, na efektywne i tanie przetwarzanie dużych wolumenów danych w chmurze.

Co zyskał klient?

  • Skalowalne środowisko, w którym płaci wyłącznie za wykorzystane zasoby; 
  • Poprawę bezpieczeństwa rozwiązania oraz jego pełną dostępność dla użytkowników; 
  • Większą świadomość w zakresie źródeł miesięcznych wydatków; 
  • Zmniejszenie kosztów przechowywania i przetwarzania danych; 
  • Oszczędność na poziomie ponad 30% po trzech miesiącach od naszych działań. 

Sprawdź też