Inżynierowie danych: Projekt inżynierii danych krok po kroku

Nov 28 2022
jeśli planujesz udoskonalić swoje umiejętności i zaangażować się w jakieś ciężkie techniczne projekty to mam cię , ten artykuł jest dla ciebie , następne też , jak już wspomniałem , to co najlepsze dla ciebie zaznaczę , zawsze , dobra wiedza jest tutaj rozpowszechniana. W tym artykule omówimy, jak zbudować stos danych za pomocą narzędzia do zarządzania przepływem pracy Apache Airflow, tworzyć pulpity nawigacyjne za pomocą Dash plottly, zbierać dane za pomocą Statsd i wizualizować wydajność za pomocą Prometheus i Grafana.

jeśli planujesz udoskonalić swoje umiejętności i zaangażować się w jakieś ciężkie techniczne projekty to mam cię , ten artykuł jest dla ciebie , następne też , jak już wspomniałem , to co najlepsze dla ciebie zaznaczę , zawsze , dobra wiedza jest tutaj rozpowszechniana.

Rysunek 1: architektura projektu

W tym artykule omówimy, jak zbudować stos danych za pomocą narzędzia do zarządzania przepływem pracy Apache Airflow , tworzyć pulpity nawigacyjne za pomocą Dash plottly , zbierać dane za pomocą Statsd i wizualizować wydajność za pomocą Prometheus i Grafana .

Wszystkie zadania określone powyżej są w trakcie łączenia ze sobą przy użyciu narzędzia dokowania . kilku z was nie miało okazji z nim pracować, więc przyjmijmy jego krótką definicję.

Rysunek 2: Tworzenie Dockera

Wyobraź sobie, że pracujesz z wieloma kontenerami jednocześnie, każdy z nich ma swoje specyficzne zadanie, czy zamierzasz obsługiwać każdy z nich osobno? OCZYWIŚCIE ŻE NIE ! . Docker Compose to narzędzie, które pomaga przezwyciężyć ten problem i łatwo obsługiwać wiele kontenerów jednocześnie.

Widzę, że zastanawiasz się, dlaczego zacząłem artykuł mówiący o komponowaniu dokerów , ale jest ok, wyjaśnię dlaczego. Chcę, żebyście zrozumieli, że zanim zaczniecie kopać głębiej, trzeba pomyśleć o podstawach każdego projektu IT. Docker Compose pozwoli nam uruchomić wszystkie usługi potrzebne do naszego projektu.

Rzućmy okiem na nasz plik tworzenia dokera ( docker-compose-LocalExecutor.yml ):

każdy plik do tworzenia dokera ma atrybuty, które musimy zrozumieć:

  • wersja: wersja tworzenia dokera
  • image : obraz dokera, który ma zostać pobrany z centrum dokowania
  • zależy od: tutaj musimy wspomnieć, które usługi są połączone z bieżącą usługą, na przykład Apache Airflow potrzebuje Postgres i Mysql do przechowywania metadanych danych
  • environment: tutaj definiujemy zmienne środowiskowe usługi, na przykład POSTGRES_USER=przepływ powietrza będzie używany podczas uruchamiania usługi.
  • polecenie : pierwsze polecenie bash, którego potrzebujesz do uruchomienia przy każdym uruchomieniu usługi
  • woluminy: lokalizacja wewnątrz twojego kontenera, która zostanie zamontowana w twoim systemie plików, na przykład przekształcone dane z potoków będą przechowywane w trwałym miejscu przechowywania
  • ports : to media, z których Twoje kontenery będą używane do komunikacji z innymi usługami, na przykład dane będą pobierane do Statsd z przepływu powietrza przez port 8125 przy użyciu protokołu udp (patrz zrzut ekranu poniżej).
  • Uruchom usługi bazy danych:
  • Rysunek 3: usługa mysql
    Rysunek 4: serwer sieciowy przepływu powietrza

    3. Uruchom statystyki:

    Rysunek 5: Usługa Statsd

    4. Uruchom Prometeusza i Grafanę:

    Rysunek 6: Usługa Prometheus
    Rysunek 7: Usługa Grafana

    Jak więc widzimy, wszystkie te definicje są zapisane w tym samym pliku i zostaną uruchomione razem z prostym poleceniem, aby osiągnąć cel projektu.

    Projekt podzielony jest na 3 główne etapy:

    1. skrobanie danych i automatyzację za pomocą przepływu powietrza Apache .
    2. kokpity przy użyciu Dash plotly .
    3. monitoruj go za pomocą 3 narzędzi: Statsd, Prometheus, Grafana.
    • źródło danych :https://www.fahrrad.de/
    Rysunek 8: Zrzut ekranu ze strony internetowej Fahrrad.de

    będziemy wydobywać:

    • nazwa marki
    • Kategoria
    • nazwa modelu
    • Cena
    • zdjęcie roweru

    Skrypty zgarniające zostaną zautomatyzowane przy użyciu najpotężniejszego narzędzia Apache Airflow, ale jeśli nigdy wcześniej go nie używałeś, przedstawię krótki przegląd tego narzędzia.

    Apache airflow to narzędzie do zarządzania przepływem pracy, które ma wielu operatorów, którzy mogą pomóc każdemu inżynierowi danych w projektowaniu i organizowaniu zadań związanych z projektami naukowców zajmujących się dużymi danymi, na przykład automatyzacją skryptów gromadzenia danych. operatory użyte w tym projekcie to:

    • PythonOperator : dla skryptu do skrobania sieci
    • BashOperator: do definiowania zadań administracyjnych systemu Linux
    • EmailOperator: Aby wysyłać wiadomości e-mail po zakończeniu potoku

    Dag to sekwencja zadań, a każde zadanie jest definiowane za pomocą jednego operatora

    zadanie musi mieć określone i uporządkowane miejsce (t1 >> t2 : zadanie pierwsze powinno być wykonane przed zadaniem 2 )

    Rysunek 9: zrzut ekranu z potoku

    Po zebraniu danych ze źródła (strony internetowej metodą scrapingu), przyszedł czas na uzyskanie wglądu, dlatego zbudowaliśmy interaktywny dashboard z wykorzystaniem Dash plotly .

    Dash plotly : jest to framework do pisania interaktywnych aplikacji internetowych, napisanych na Flask, Plotly. js i Reaguj. j.

    Rysunek 10: pulpit nawigacyjny do wizualizacji danych

    W tej chwili zróbmy trochę fantazyjnego personelu, podczas gdy zadanie jest uruchomione, wygeneruje metryki, które powinny być monitorowane, te metryki zostaną wypchnięte z przepływu powietrza przez port 8125 do Statsd za pomocą protokołu udp (możesz sprawdzić w pliku tworzenia dokera ), dane metryk nie mogą być wyświetlane w zorganizowanym interfejsie, jeśli używamy tylko statsd , więc będziemy polegać na Prometheusie i Grafanie, aby osiągnąć to, czego szukamy.

    Rysunek 11: Metryki w Statsd
    Rysunek 12: metryki wyświetlane w Prometheus
    Rysunek 13: Pulpit nawigacyjny Grafana

    cały proces odbywa się w ten sposób:

    Rysunek 14: Monitorowanie przepływu powietrza

    Wideo z projektu:

    Wniosek :

    W tym artykule zbudowaliśmy cały stos danych: zaczynając od zbierania danych za pomocą skryptu Pythona, przechodząc do budowania pulpitu nawigacyjnego w celu wydobycia z niego przydatnych informacji, a także monitorowania potoku danych i sprawdzania wydajności różnych zadań. Mam nadzieję, że podobał Ci się mój artykuł i możesz zadawać mi pytania. Czekam na Twoje pomysły dotyczące następnego artykułu.

    Repozytorium GIT:

    https://github.com/chiheb08/data_enginnering_project