실습파일 다운 및 세팅
- 실습파일을 다운로드
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. - 다운 받은 파일로 이동
weare@DESKTOP-BE1I4GE:~$ cd learn-airflow - 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 - 필요한 폴더 만듦
weare@DESKTOP-BE1I4GE:~/learn-airflow$ mkdir -p ./dags ./logs ./plugins - .env 파일을 생성하고, 그 내용으로 AIRFLOW_UID와 AIRFLOW_GID 변수를 설정
weare@DESKTOP-BE1I4GE:~/learn-airflow$ echo -e "AIRFLOW_UID=$(id -u)\nAIRFLOW_GID=0" > .env - 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 폴더에 대해 명령어를 수행 - 컨테이너 실행, 맨뒤에 -d 넣으면 서버 실행돼서 우분투 하나더 실행 안해도 됨
weare@DESKTOP-BE1I4GE:~/learn-airflow$ docker-compose up -d - docker 데스크탑으로 확인하면 잘 실행됨
- http://localhost:8080/ 페이지 가서 variable에 가보면 저장한 변수가 표면적으로 나와있지 않음(보안상 이점)
- 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 - 웹에서는 안보이지만 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
'airflow(에어플로우)' 카테고리의 다른 글
[airflowdbt 실습] 각종 summary 테이블 제작 실습 (0) | 2024.01.05 |
---|---|
[airflow 실습] redshift_summary.py 분석 (0) | 2024.01.05 |
airflow 실행 환경 관리 (0) | 2024.01.04 |
Airflow에서 _mysql is not defined 에러 (0) | 2024.01.03 |
airflow에서 backfill 실행 (0) | 2024.01.03 |