DB: sqlite:////srv/install/airflow/airflow.db Performing upgrade to the metadata database sqlite:////srv/install/airflow/airflow.db [2024-04-29T02:20:10.674+0900] {migration.py:216} INFO - Context impl SQLiteImpl. [2024-04-29T02:20:10.710+0900] {migration.py:219} INFO - Will assume non-transactional DDL. [2024-04-29T02:20:10.713+0900] {migration.py:216} INFO - Context impl SQLiteImpl. [2024-04-29T02:20:10.714+0900] {migration.py:219} INFO - Will assume non-transactional DDL. INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running stamp_revision -> 1949afb29106 Database migrating done!
... Password: Repeat for confirmation: [2024-04-29T02:31:53.165+0900] {override.py:1516} INFO - Added user whatwant User "whatwant" created with role "Admin"
⑦ run
- 이제 웹 UI를 확인해보자.
❯airflow webserver --port 8080
- 웹브라우저를 실행해서, 다음 주소로 접속하면 된다.
. http://localhost:8080
- 앞에서 생성한 계정과 패스워드를 이용해서 Sign in 하면 된다.
- 뭔가 화면은 나왔는데, 위에 뭔가 알람이 많이 보인다.
⑧ notice
- 어?! 그런데 뭔가 경고같은 메시지가 보인다.
- 가장 위에 있는 메시지를 보면 실행중인 "scheduler"가 안보인단다. 해결해보자.
⑨ scheduler
- 새로운 터미널을 추가로 띄워서 scheduler를 실행하면 된다.
- 터미널을 새로 띄우면 Python 가상환경도 추가 설정해야 한다.
❯ cd airflow
# 앞에서 진행했던 airflow 디렉토리로 이동
❯ source .venv/bin/activate
❯ airflow scheduler
- 웹브라우저를 reload(F5) 하면 갑자기 못보던 샘플 DAGs 가 보인다.
- 상단에 보이는 알람 메시지가 3개에서 2개로 줄어들었다.
- 나머지 2개는 production 환경에서 SQLite나 SeuentialExecutor를 사용하지 말라는 메시지다. 일단 무시!
- Sample을 하나 선택해서 살펴보면 뭔가 멋지다! ^^
▷ Install #2 - Docker + Compose
- docker를 이용한 airflow 설치를 해보자.
- 그냥 docker image를 이용한 실행말고, 여러 모듈들을 같이 구성하기 위해 docker compose를 사용하겠다.
- YAML 파일 내용을 살펴보면 알겠지만, 많은 서비스가 별도의 docker로 구성되어 있다.
. airflow-scheduler
. airflow-webserver
. airflow-worker
. airflow-triggerer
. airflow-init
. postgres
. redis
- 그래서 메모리가 충분히 필요한데, 최소 4GB / 권장 8GB 이다.
③ mkdir
- 여러 종류의 파일들을 저장할 디렉토리들을 만들어 놓자.
. ./dags - you can put your DAG files here. . ./logs - contains logs from task execution and scheduler. . ./config - you can add custom log parser or add airflow_local_settings.py to configure cluster policy. . ./plugins - you can put your custom plugins here.
❯ mkdir -p ./dags ./logs ./plugins ./config
❯ ls -al
합계 36 drwxrwxr-x 6 chani22 chani22 4096 5월 1 10:53 . drwxr-xr-x 5 chani22 chani22 4096 5월 1 10:44 .. drwxrwxr-x 2 chani22 chani22 4096 5월 1 10:53 config drwxrwxr-x 2 chani22 chani22 4096 5월 1 10:53 dags -rw-rw-r-- 1 chani22 chani22 11197 4월 8 20:42 docker-compose.yaml drwxrwxr-x 2 chani22 chani22 4096 5월 1 10:53 logs drwxrwxr-x 2 chani22 chani22 4096 5월 1 10:53 plugins
합계 40 drwxrwxr-x 6 chani22 chani22 4096 5월 1 11:00 . drwxr-xr-x 5 chani22 chani22 4096 5월 1 10:44 .. -rw-rw-r-- 1 chani22 chani22 17 5월 1 10:55 .env drwxrwxr-x 2 chani22 chani22 4096 5월 1 10:53 config drwxrwxr-x 2 chani22 root 4096 5월 1 10:53 dags -rw-rw-r-- 1 chani22 chani22 11197 5월 1 11:00 docker-compose.yaml drwxrwxr-x 2 chani22 root 4096 5월 1 10:53 logs drwxrwxr-x 2 chani22 root 4096 5월 1 10:53 plugins
❯ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1dfae6410fa0 postgres:13 "docker-entrypoint.s…" 4 minutes ago Up 4 minutes (healthy) 5432/tcp airflow-docker-postgres-1 466bc0539812 redis:latest "docker-entrypoint.s…" 4 minutes ago Up 4 minutes (healthy) 6379/tcp airflow-docker-redis-1
⑦ Run Airflow
- 이제 Airflow를 실행하자.
❯ docker compose up
...
- 뭔가 잔뜩 메시지가 흘러나온다.
- 웹브라우저를 열어서 접속해보자.
. http://localhost:8090/
. 접속 정보: airflow / airflow
- 어!? 뭔가 되게 깔끔한 화면이 나온다.
- Container 정보를 살펴보자.
우와~~~~ 뭔가 엄청 길었다.
추가적으로 살펴볼 것이 많이 남아있지만 일단 "설치 후 실행"이라는 것에 주안점을 두었다.