데이터 엔지니어링이란?
- 엔지니어링은 데이터와 관련된 모든 작업을 적용하고 안정적이고 반복 가능하며 유지 관리가 가능한 프로세스로 만드는 일이다.
워크 플로우?
- 데이터 엔지니어링 작업을 수행하기 위한 일련의 단계
- 파일을 다운로드 받고, 데이터 복사하고, 필터링하고 데이터베이스에 쓰는 작업 등
- 사용자 요구에 따라 다르게 다양한 수준의 복잡성을 갖는다.
- 판매 데이터 다운로드
- 데이터 전처리
- ML 파이프라인 실행
- 결과 웹서버에 업로드
- CEO에게 보고
Airflow
- 워크 플로우를 프로그램하기 위한 플랫폼Airflow만 엔지니어링 워크플로우를 사용하기 위한 도구는 아니다.
- Luigi, SISS, Bash scripting으로도 가능하다.
- 워크플로우 생성, 스케줄링 및 모니터링을 포함한다.
- Airflow는 다양한 언어를 사용할 수 있지만 실제 워크 플로우 코드는 Python으로 작성된다.
- Airflow는 워크 플로우를 DAG(Directed Acyclic Graphs)로 구현하고 있다.
- Airflow는 코드, 커맨드, 웹 인터페이스를 통해 액세스 가능하다.
DAG 다시 보기
- Airflow는 워크플로우를 구성하는 작업을 DAG로 나타낸다.
- 작업들 간 종속성으로 구성된다.
- 다양한 세부정보를 포함하고 있다.
etl_dag = DAG( dag_id = 'etl_pipeline', default_args={"start_date":"2020-01-08"} )
Airflow에서 workflow 실행
airflow run <dag_id> <task_id> <start_date>
위 명령으로 간단하게 실행이 가능하다.
만약, DAG이름이 example-etl이고 작업이름이 download-file, 2020-01-10이 시작날이라면 다음 명령을 사용한다.
airflow run example-etl download-file 2020-01-10
airflow내 지정된 작업이 실행된다.
Airflow DAGs
DAG에 대해 좀 더 자세히 보자.
- Directed라는 것은 요소들 간 종속성이 있다는 것을 의미한다.
- Acyclic은 루프가 발생하지 않아 구성 요소 실행이 한 번만 된다.
- Graph는 구성요소간 집합이다.
- DAG는 다른 곳에서도 자주 사용되는 용어
- Airflow에서 DAG를 기본적으로 파이썬으로 구현했지만 Bash 스크립트, 기타 실행 파일, spark 잡업 등을 포함하고 있다.
- Airflow DAG에는 명시적 또는 암시적으로 정의된 종속성이 포함된다.
DAG 정의하기
from airflow.models import DAG from datetime import datetime default_arguments = { 'owner':'jdoe', 'email': 'jdoe@datacamp.com', 'start_date': datetime(2020, 1, 20) } etl_dag = DAG('etl_workflow', default_args=default_arguments)
커맨드 명령을 통해서 DAG를 다루고 싶다면 airflow -h
를 사용해서 하위 명령에 대한 설명을 참고하면 된다.
airflow list_dags
: 인식된 모든 DAG를 볼 수 있다.
커맨드 라인과 파이썬의 차이
커맨드 라인을 사용하면...
- 일반적으로 Airflow 프로세스들을 시작할 때 사용한다.
- 수동으로 DAG 또는 작업들을 실행시킬 수 있다.
- Airflow로부터 정보를 얻을 수 있다.
파이썬을 사용하면...
- DAG를 만들고 편집할 수 있다.
Airflow web interface
Airflow는 web UI를 제공한다.
graph view, tree view, code(읽기전용) 등 다양하게 DAG에 대한 컨텐츠를 확인할 수 있다.
Uploaded by Notion2Tistory v1.1.0