요약
스터디 진행 방식 공유
- 발표
- 발표자 : 김학건
- airflow chapter 1,2장 설명
설명
1. 스터디 진행 방식 공유
스터디 목표
- 데이터 파이프라인 고도화 하고 싶음
- airflow로 scala 실행하고 있음
- airflow 처음이라서 알고 싶음
- 사용만하고 있는데 더 깊이 알고 싶음
- 어노테이션(taskflow API)로 기존 dag 변경하고 싶음
진행 방식 공유
→ 'apache airflow 기반의 데이터 파이프라인' 책을 기반으로 발표
https://github.com/K9Ns/data-pipelines-with-apache-airflow
+ 책 외 자유 주제 (ex)
- 강의
카카오 airflow 활용하여 아름다운 데이터 파이프라인 구성하기
https://mk-v1.kakaocdn.net/dn/if-kakao/conf2019/conf_video_2019/1_102_04_m1.mp4
블로그
Airflow2를 이용한 데이터 파이프라인 구성기, 뤼이드에서 airflow 2.0의 taskflow api 전환기
2. 발표
1장
발표자: 김학건
airflow 설명
- airbnb에서 만든 워크플로우 관리 api
- webserver, scheduler, worker 등으로 구성]
- 파이프라인 시각화에 강점
- 파이썬 코드
- backfill (과거 데이터 실행)
- 증분 (분,시간,일) 등의 데이터에 강함
- 다양한 오퍼레이터가 있음(python, K8s, docker, spark, postgres 등)
- 최근에 핫함
Dummy Operator
- start, end에 위치시켜 job의 실행, 종료 여부를 명시적으로 확인할 수 있음
- test용으로 더미를 만뜰 때 사용
scheduler거치지 않음 → 로그 없음, k8s 돌릴때 컨테이너실행안됨
$ dummy_dag.py from airflow.operators.dummy import DummyOperator from airflow.operators.bash import BashOperator task_a = BashOperator('task_a', bash_command='echo "task_a"') task_b = BashOperator('task_a', bash_command='echo "task_b"') task_c = BashOperator('task_a', bash_command='echo "task_c"') task_d = BashOperator('task_a', bash_command='echo "task_d"') dummy = DummyOperator('dummy') task_a >> dummy << task_b dummy >> task_c dummy >> task_d #task_a >> task_c #task_a >> task_d #task_b >> task_c #task_b >> task_c
2장
PythonOperator
- python 실행
- Worker가 환경에서 실행
- k8s에서는 base_img를 이용해 실행
BashOperator
- shell script
참고
airflow 설치 (docker-compose)
공식 문서
설치
- ec2 t2.large (8g ram)
- docker/ docker-compose install + docker-compose up
# docker install 4 sudo yum -y upgrade 5 sudo yum -y install docker 7 sudo service docker start 9 sudo usermod -aG docker ec2-user 22 exit # docker-compose install 26 sudo curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 27 sudo chmod +x /usr/local/bin/docker-compose # 그대로 따라하면 에러남, docker-compose 버전 업그레이드 56 sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 58 sudo chmod +x /usr/local/bin/docker-compose mkdir -p ./dags ./logs ./plugins echo -e "AIRFLOW_UID=$(id -u)" > .env
$ docker-compose up airflow-init $ docker-compose up $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1e7f270f175f apache/airflow:2.2.5 "/usr/bin/dumb-init …" About a minute ago Up About a minute (healthy) 0.0.0.0:5555->5555/tcp, :::5555->5555/tcp, 8080/tcp airflow_flower_1 ff9c776de148 apache/airflow:2.2.5 "/usr/bin/dumb-init …" About a minute ago Up About a minute (healthy) 8080/tcp airflow_airflow-scheduler_1 2b4959b24a43 apache/airflow:2.2.5 "/usr/bin/dumb-init …" About a minute ago Up About a minute (healthy) 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp airflow_airflow-webserver_1 666366536b98 apache/airflow:2.2.5 "/usr/bin/dumb-init …" About a minute ago Up About a minute (healthy) 8080/tcp airflow_airflow-triggerer_1 063591d1275d apache/airflow:2.2.5 "/usr/bin/dumb-init …" About a minute ago Up About a minute (healthy) 8080/tcp airflow_airflow-worker_1 3eda287e2e66 postgres:13 "docker-entrypoint.s…" 9 minutes ago Up 9 minutes (healthy) 5432/tcp airflow_postgres_1 394d6c88ec76 redis:latest "docker-entrypoint.s…" 9 minutes ago Up 9 minutes (healthy) 6379/tcp airflow_redis_1
- 확인