Airflow ์ด์์ ์ฃผ์์ฌํญ๊ณผ Airflow ๋์ ์๋น์ค ์์๋ณด๊ธฐ - TIL230622
๐ KDT WEEK 12 DAY 4 TIL
- Airflow ์ด์
- Airflow ๋์
๐ฅ ํ๋ก๋์ ์ฌ์ฉ์ ์ํ Airflow ํ๊ฒฝ ์ค์
1. airflow.cfg
- core ์น์ ์ dags_folder๊ฐ ๋ค์ด์๋ ๋๋ ํ ๋ฆฌ ์ค์
- dag_dir_list_interval์ ์ค์ ๋ dag ํด๋ ์ค์บ ์ฃผ๊ธฐ ์ค์ (์ด๋จ์)
- ๋ชจ๋ DAG๋ฅผ ํ๋ฒ์ฉ ์คํํด๋ณด๊ธฐ ๋๋ฌธ์, ์ด๊ฒ ๊ณค๋ํ DAG๋ค์ airflowignore ํ์ฉ
2. DB์ ์ ๋ณด๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐฑ์ ํ๋๊ฒ ์ข๋ค.
- Airflow์ ๊ธฐ๋ณธ DB๋ Sqlite์ด์ง๋ง Postgres๋ MySQL๋ก ๋ฐ๊พธ๋ ๊ฒฝ์ฐ,
- airflow.cfg์ core ์น์ ์ sql_alchemy_conn ์ค์ ๋ณ๊ฒฝ๊ณผ Executor ๋ณ๊ฒฝํ์
3. Authentication๊ณผ ๋ณด์
- ๊ธฐ๋ณธ์ผ๋ก ์ฃผ์ด์ง๋ ์ด๋๋ฏผ ๊ณ์ ์ ๋ณด์์ ๋งค์ฐ ์ทจ์ฝํ๋ค. > ๋ณ๊ฒฝํ์
- Authentication์ ๊ฒฝ์ฐ Airflow 2.0์์๋ ๊ธฐ๋ณธ์ผ๋ก ์ฃผ์ด์ง๋ค.
- ๋๋๋ก์ด๋ฉด Airflow๋ฅผ VPN ๋ค์ ์ค์นํ๋ ๊ฒ์ด ์์ ํ๋ค.
4. logํ์ผ ๊ด๋ฆฌ
- airflow.cfg์ core ์น์ ์ log ํ์ผ ๋๋ ํ ๋ฆฌ ์ค์ ๊ฐ๋ฅ
- log๋ DAG์ ์๊ฐ ๋์ด๋จ์ ๋ฐ๋ผ ํ์ฉํ ๊ณต๊ฐ์ด ์๊ฐ๋ณด๋ค ๊ธ๋ฐฉ ์ฐฌ๋ค, > ๋ค ์ฐจ๋ฉด Airflow ๋์ X
- ์ฃผ๊ธฐ์ ์ผ๋ก Log ํด๋๋ฅผ Clean Up ํ์ ( ์ญ์ or ๋ค๋ฅธ DB์ ์ ๋ก๋ ๋ฑ)
5. ์ฃผ๊ธฐ์ ์ผ๋ก Airflow Metadata Database ๋ฐฑ์ ํ๊ธฐ
- Variables์ Connection ์ ๋ณด๋ฅผ ์ปค๋งจ๋ ๋ผ์ธ์ด๋ API๋ฅผ ํตํด ๋ฐฑ์
ํ๊ธฐ
- ex) airflow variables export variables.json
6. Airflow์ Health API๋ฅผ ๋ชจ๋ํฐ๋ง ํด๊ณผ ์ฐ๋ํ์ฌ ์ง์์ ์ธ health-check monitoring
Airflow ๋ก๊ทธ ํ์ผ ์ญ์ ํ๊ธฐ
Airflow๋ ๋ ๊ตฐ๋ฐ์ ๋ณ๋์ ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํ๋ค.
[logging]
base_log_folder = /var/lib/airflow/logs
[scheduler]
child_process_log_directory = /var/lib/airflow/logs/scheduler
Log ํด๋์ ํ์ฉ๋์ด ์ด๊ณผํ๋ฉด, Airflow๊ฐ ๋์์ ๋ฉ์ถ๋ฏ๋ก ์ด๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ญ์ ํ๊ฑฐ๋ S3์ ๊ฐ์ ์ ์ฅ์์ ๋ฐฑ์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค. (DAG ํ์ฉํ๋ฉด ์ข์)
docker compose๋ก ์คํ๋ ๊ฒฝ์ฐ logs ํด๋๊ฐ host volume ํํ๋ก ์ ์ง๋์ด ์๋ค.
Airflow ๋์
์๋์ ์ธ ์๋น์ค๋ ๋ชจ๋ ์คํ ์์ค์ด๋ค.
- Prefect : Airflow์ ํก์ฌํ๊ณ ๊ฒฝ๋ํ๋ ๋ฒ์ ์ผ๋ก, ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ๋์ ์ผ๋ก ์์ฑํ ์ ์์
- Dagster : ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋์์ ๊ด๋ฆฌํ ์ ์๋ ํด
- Airbyte : ์ฝ๋ฉ์ด ์ต์ํ๋ ๊ฐ๋จํ๊ฒ ํ์ฉ๊ฐ๋ฅํ ํด