TIL

Airflow ์šด์˜์— ์ฃผ์˜์‚ฌํ•ญ๊ณผ Airflow ๋Œ€์•ˆ ์„œ๋น„์Šค ์•Œ์•„๋ณด๊ธฐ - TIL230622

sunhokimDev 2023. 6. 22. 20:14

๐Ÿ“š 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 ํ˜•ํƒœ๋กœ ์œ ์ง€๋˜์–ด ์žˆ๋‹ค.

 

logs ํด๋”์— ๊ฐ์ข… DAG RUN log์™€ scheduler ๋กœ๊ทธ๊ฐ€ ๋‚จ์•„์žˆ๋Š” ๋ชจ์Šต

 

 


 

Airflow ๋Œ€์•ˆ

 

์•„๋ž˜์˜ ์„ธ ์„œ๋น„์Šค๋Š” ๋ชจ๋‘ ์˜คํ”ˆ ์†Œ์Šค์ด๋‹ค.

  • Prefect : Airflow์™€ ํก์‚ฌํ•˜๊ณ  ๊ฒฝ๋Ÿ‰ํ™”๋œ ๋ฒ„์ „์œผ๋กœ, ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ
  • Dagster : ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํˆด
  • Airbyte : ์ฝ”๋”ฉ์ด ์ตœ์†Œํ™”๋œ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ™œ์šฉ๊ฐ€๋Šฅํ•œ ํˆด