Error rendering WebPanel: No renderer found for resource type: velocity Template contents: <meta name="ajs-keyboardshortcut-hash" content="$keyboardShortcutManager.shortcutsHash">
메타 데이터의 끝으로 건너뛰기
메타 데이터의 시작으로 이동


요약

  1. 스터디 진행 방식 공유

  2. 발표
    1. 발표자 : 김학건
    2. airflow chapter 1,2장 설명

설명


1. 스터디 진행 방식 공유


스터디 목표

  • 데이터 파이프라인 고도화 하고 싶음
  • airflow로 scala 실행하고 있음
  • airflow 처음이라서 알고 싶음
  • 사용만하고 있는데 더 깊이 알고 싶음
  • 어노테이션(taskflow API)로 기존  dag 변경하고 싶음

진행 방식 공유



→ 'apache airflow 기반의 데이터 파이프라인' 책을 기반으로 발표

https://github.com/K9Ns/data-pipelines-with-apache-airflow


+ 책 외 자유 주제 (ex)

  • 강의

2. 발표

airflow 설명

  1. airbnb에서 만든 워크플로우 관리 api
  2. webserver, scheduler, worker 등으로 구성]
  3. 파이프라인 시각화에 강점
  4. 파이썬 코드
  5. backfill (과거 데이터 실행)
  6. 증분 (분,시간,일) 등의 데이터에 강함
  7. 다양한 오퍼레이터가 있음(python, K8s, docker, spark, postgres 등)
  8. 최근에 핫함

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
  • 확인

 




  • 레이블 없음