데이터 엔지니어 : 단계별 데이터 엔지니어링 프로젝트
기술을 향상시키고 무거운 기술 프로젝트에 참여할 계획이라면 이 기사는 당신을 위한 것입니다. 좋은 지식이 여기에 배포됩니다.

이 기사에서는 워크플로 관리 도구 인 apache airflow 를 사용하여 데이터 스택을 구축하는 방법, Dash plottly 로 대시보드를 만드는 방법, Statsd 로 메트릭을 수집하는 방법, Prometheus 및 Grafana 를 사용하여 성능을 시각화하는 방법에 대해 설명 합니다.
위에서 지정한 모든 할당은 docker compose 를 사용하여 함께 연결되도록 진행됩니다 . 여러분 중 몇몇은 그것에 대해 작업할 기회가 없었으므로 그것에 대한 간략한 정의를 살펴보겠습니다.

동시에 많은 컨테이너로 작업하고 있다고 상상해보십시오. 각 컨테이너에는 고유한 작업이 있습니다. 각 컨테이너를 개별적으로 처리할 건가요? 당연하지! . Docker Compose 는 이러한 문제를 극복하고 여러 컨테이너를 한 번에 쉽게 처리할 수 있도록 도와주는 도구입니다.
왜 내가 docker Compose 에 대한 기사를 시작했는지 궁금하실 것입니다. 하지만 괜찮습니다. 그 이유를 설명하겠습니다. 더 깊이 파고들기 전에 모든 IT 프로젝트의 기초에 대해 생각하는 것이 필수적이라는 것을 여러분이 이해하기를 바랍니다. Docker Compose를 사용하면 프로젝트에 필요한 모든 서비스를 시작할 수 있습니다.
docker 작성 파일( docker-compose-LocalExecutor.yml )에서 살펴보겠습니다.
모든 docker-compose 파일에는 이해해야 하는 속성이 있습니다.
- version : 도커 작성 버전
- image : 도커 허브에서 가져올 도커 이미지
- depends_on: 여기에서 현재 서비스에 연결된 서비스를 언급해야 합니다. 예를 들어 apache airflow는 Dags의 메타데이터를 저장하기 위해 Postgres 및 Mysql이 필요합니다.
- 환경: 여기에서 서비스의 환경 변수를 정의합니다. 예를 들어 POSTGRES_USER=airflow는 서비스를 시작할 때 사용됩니다.
- command : 서비스가 시작될 때마다 실행해야 하는 첫 번째 bash 명령
- Volumes: 파일 시스템에 마운트될 컨테이너 내부의 위치(예: 파이프라인에서 변환된 데이터는 영구 저장소 위치에 저장됨)
- 포트: 컨테이너가 다른 서비스와 통신하는 데 사용하는 미디어입니다. 예를 들어 데이터는 udp 프로토콜을 사용하여 포트 8125를 통해 기류에서 Statsd 로 수집됩니다(아래 스크린샷 확인).
- 데이터베이스 서비스를 시작합니다.
- 데이터 스크래핑 및 Apache airflow 를 사용하여 자동화합니다 .
- Dash plotly 를 사용하는 대시보드 .
- Statsd, Prometheus, Grafana의 3가지 도구를 사용하여 모니터링합니다 .
- 데이터 소스:https://www.fahrrad.de/
- 브랜드 이름
- 카테고리
- 모델명
- 가격
- 자전거의 그림
- PythonOperator : 웹 스크래핑 스크립트용
- BashOperator : Linux 관리 작업 정의용
- EmailOperator : 파이프라인 완료 시 이메일 전송


3.시작 통계:

4.Prometheus 및 Grafana 시작:


우리가 볼 수 있듯이 이러한 모든 정의는 동일한 파일에 작성되며 프로젝트가 목표로 하는 것을 달성하기 위해 간단한 명령으로 함께 시작됩니다.
프로젝트는 크게 3단계로 나뉩니다.

우리는 다음을 추출할 것입니다:
스크래핑 스크립트는 가장 강력한 도구 인 apache airflow 를 사용하여 자동화 되지만 이전에 사용한 적이 없는 경우 도구에 대한 간략한 개요를 제공합니다.
Apache airflow 는 모든 데이터 엔지니어가 빅 데이터 과학자 프로젝트의 작업(예: 데이터 수집 스크립트 자동화)을 설계하고 오케스트레이션하는 데 도움을 줄 수 있는 많은 운영자가 있는 작업 흐름 관리 도구입니다. 이 프로젝트에 사용된 연산자는 다음과 같습니다.
Dag는 일련의 작업이며 각 작업은 하나의 연산자를 사용하여 정의됩니다.
작업은 명확하고 질서 있는 위치에 있어야 합니다(t1 >> t2 : 작업 1이 작업 2 이전에 실행되어야 함)

소스(스크래핑 방법을 사용하는 웹 사이트)에서 데이터를 수집한 후 이제 여기에서 통찰력을 얻을 때입니다. 이것이 우리가 Dash plotly 를 사용하여 대화형 대시보드를 구축한 이유 입니다.
Dash plotly : Flask, Plotly 위에 작성된 대화형 웹 애플리케이션을 작성하는 프레임워크입니다. Node.js와 반응. js .

작업이 실행되는 동안 모니터링해야 하는 메트릭을 생성하고 이러한 메트릭은 udp 프로토콜을 사용하여 포트 8125를 통해 공기 흐름에서 Statsd로 푸시됩니다(docker 작성 파일에서 확인할 수 있음) ), 메트릭 데이터는 statsd만 사용하는 경우 조직화된 인터페이스에 표시할 수 없으므로 Prometheus 및 Grafana에 의존하여 원하는 것을 달성할 것입니다.



전체 프로세스는 다음과 같이 수행됩니다.

프로젝트 비디오 :
결론 :
이 기사에서는 전체 데이터 스택을 구축했습니다. Python 스크립트를 사용하여 데이터를 수집하는 것부터 시작하여 대시보드를 구축하여 유용한 정보를 추출하고 데이터 파이프라인을 모니터링하고 다양한 작업의 성능을 확인했습니다. 제 기사를 즐겁게 읽으셨기를 바라며 질문이 있으시면 언제든지 해주시기 바랍니다. 다음 기사에 대한 귀하의 의견을 기다리겠습니다.
GIT 저장소:
https://github.com/chiheb08/data_enginnering_project