2023.05.22/23 (Mon / Tue) 학습 정리
#Airflow #Docker #Dag
1. Airflow
Workflow를 구축하고 실행 가능한 배치 스케쥴링(파이프라인) 플랫폼
반복된 작업을 자동화하기 위해 사용하며 Workflow는 DAG(Direted Acyclic Graph)를 통해 구조화됨
- 구조
- Scheduler / executor : task를 모니터링하고 실행 순서와 상태관리
- Worker : task를 실행하는 공간
- Webserver : User Interface를 제공
- Dag Directory : 실행할 task들을 파이프라인 형태로 저장
- Metadata Database : 실행할 task에 관한 정보를 저장

How to Run Airflow Locally With Docker
A step by step guide for running Airflow with Docker on your local machine
towardsdatascience.com
2. Dag 작성

📌 Dag 작성 예제
from airflow import DAG
from datetime import datetime, timedelta
from airflow.operators.bash import BashOperator
from airflow.operators.empty import EmptyOperator
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2023, 5, 1),
'retries': 0,
}
test_dag = DAG(
'test-sub',
default_args=default_args,
schedule_interval=timedelta(days=1)
)
# Define the BashOperator task
bash_task = BashOperator(
task_id='bash_task_multiple_execute',
bash_command="""
echo "Start";
echo "completed"
""",
dag=test_dag
)
# Define the BashOperator task
bash_task_2 = BashOperator(
task_id='bash_2',
bash_command="echo '2'",
dag=test_dag
)
start_task = EmptyOperator(task_id='start',dag=test_dag)
end_task = EmptyOperator(task_id='end',dag=test_dag)
start_task >> [bash_task, bash_task_2]
[bash_task, bash_task_2] >> end_task
3. Docker 명령어
- airflow 구성 컨테이너 시작/확인/종료
# 시작 -d 옵션을 통해 벡그라운드 가능
docker-compose up -d
# 구동 컨테이너들의 상태 확인
docker ps
# 로그 확인 ( | grep 활용이 가능 )
docker-compose logs -t -f
# 종료
docker-compose down
- 각각의 컨테이너의 접속
docker exec -it [컨테이너 ID] bash
- 기타
# 상태 및 성능 확인
docker container stats
# container 로그 확인
docker logs -f [container_name]
# container 파일 복사
docker cp [fine_name] [container_name]:/opt/airflow/tmp
docker run -it --name [새 이미지 명] [복사할 이미지] #복사
docker rm [삭제할 이미지] #삭제
docker rmi [삭제할 id]
docker images #이미지 목록
docker ps #가동 중인 컨테이너 목록
docker ps -a #전체 컨테이너 목록
'📊 Data > Engineering' 카테고리의 다른 글
| [Airflow] Airflow Standalone 설치 및 테스트 (0) | 2023.05.26 |
|---|---|
| [Airflow/AWS] Airflow - Trigger Rule (0) | 2023.05.25 |
| [AWS] Airflow를 활용하여 AWS S3로 파일 전송하기 (0) | 2023.05.24 |
| [LINUX] 기본 리눅스 명령어 실습2 (0) | 2023.05.19 |
| [LINUX] 기본 리눅스 명령어 실습 (0) | 2023.05.18 |