실습파일 다운 및 세팅

  1. 실습파일을 다운로드
    weare@DESKTOP-BE1I4GE:~$ git clone https://github.com/learndataeng/learn-airflow.git
    Cloning into 'learn-airflow'...
    remote: Enumerating objects: 219, done.
    remote: Counting objects: 100% (95/95), done.
    remote: Compressing objects: 100% (93/93), done.
    remote: Total 219 (delta 31), reused 2 (delta 0), pack-reused 124
    Receiving objects: 100% (219/219), 71.07 KiB | 6.46 MiB/s, done.
    Resolving deltas: 100% (106/106), done.

  2. 다운 받은 파일로 이동
    weare@DESKTOP-BE1I4GE:~$ cd learn-airflow

  3. docker-compose.yaml 파일 다운
    weare@DESKTOP-BE1I4GE:~/learn-airflow$ curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.5.1/docker-compose.yaml'
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100 10493  100 10493    0     0  31703      0 --:--:-- --:--:-- --:--:-- 31796

  4. 필요한 폴더 만듦
    weare@DESKTOP-BE1I4GE:~/learn-airflow$ mkdir -p ./dags ./logs ./plugins

  5. .env 파일을 생성하고, 그 내용으로 AIRFLOW_UID와 AIRFLOW_GID 변수를 설정
    weare@DESKTOP-BE1I4GE:~/learn-airflow$  echo -e "AIRFLOW_UID=$(id -u)\nAIRFLOW_GID=0" > .env
  6. docker-compose.yaml 파일 수정
    5가지를 수정해야하고, 수정내용은 아래와 같다.

    1) environment 에 Airflow에서 사용하는 데이터 디렉토리를 /opt/airflow/data로 설정
     AIRFLOW_VAR_DATA_DIR: /opt/airflow/data


    2) 처음 설치 모듈들 추가 
    _PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:- yfinance pandas numpy oauth2client gspread}

    3) 볼륨 설정. 호스트의 ${AIRFLOW_PROJ_DIR:-.}/data 경로를 컨테이너 내부의 /opt/airflow/data 경로로 마운트
    - ${AIRFLOW_PROJ_DIR:-.}/data:/opt/airflow/data

    4) mkdir~ :  /sources/data 폴더 추가

    5) chown~: AIRFLOW_UID에 지정된 사용자 ID를 소유자로 설정하고, 0은 그룹을 root 그룹으로 설정.
    data 폴더에 대해 명령어를 수행

  7. 컨테이너 실행, 맨뒤에 -d 넣으면 서버 실행돼서 우분투 하나더 실행 안해도 됨
    weare@DESKTOP-BE1I4GE:~/learn-airflow$ docker-compose up -d

  8. docker 데스크탑으로 확인하면 잘 실행됨
  9. http://localhost:8080/ 페이지 가서 variable에 가보면 저장한 변수가 표면적으로 나와있지 않음(보안상 이점)
  10. variable 저장된 data_dir이 저장된 위치 확인.
    weare@DESKTOP-BE1I4GE:~/learn-airflow$ docker ps
    CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS                      PORTS                    NAMES
    73c2ebf8ecec   apache/airflow:2.5.1   "/usr/bin/dumb-init …"   10 minutes ago   Up 10 minutes (healthy)     8080/tcp                 learn-airflow_airflow-triggerer_1
    90cb7b11d245   apache/airflow:2.5.1   "/usr/bin/dumb-init …"   10 minutes ago   Up 10 minutes (unhealthy)   8080/tcp                 learn-airflow_airflow-scheduler_1
    a5bacafc0519   apache/airflow:2.5.1   "/usr/bin/dumb-init …"   10 minutes ago   Up 10 minutes (healthy)     8080/tcp                 learn-airflow_airflow-worker_1
    065f9ee9e619   apache/airflow:2.5.1   "/usr/bin/dumb-init …"   10 minutes ago   Up 10 minutes (healthy)     0.0.0.0:8080->8080/tcp   learn-airflow_airflow-webserver_1
    cd5a97a54a1c   redis:latest           "docker-entrypoint.s…"   29 minutes ago   Up 12 minutes (healthy)     6379/tcp                 learn-airflow_redis_1
    73ed8fe8f6d1   postgres:13            "docker-entrypoint.s…"   29 minutes ago   Up 12 minutes (healthy)     5432/tcp                 learn-airflow_postgres_1

  11. 웹에서는 안보이지만 variable이 존재함을 확인
    weare@DESKTOP-BE1I4GE:~/learn-airflow$ docker exec -it 90cb7b11d245 airflow variables get DATA_DIR
    /home/airflow/.local/lib/python3.7/site-packages/airflow/models/base.py:49 MovedIn20Warning: [31mDeprecated API features detected! These feature(s) are not compatible with SQLAlchemy 2.0. [32mTo prevent incompatible upgrades prior to updating applications, ensure requirements files are pinned to "sqlalchemy<2.0". [36mSet environment variable SQLALCHEMY_WARN_20=1 to show all deprecation warnings.  Set environment variable SQLALCHEMY_SILENCE_UBER_WARNING=1 to silence this message.[0m (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)
    /opt/airflow/data

 

+ Recent posts