Airflow๋?
Apache Airflow๋ ๋ฐฐ์น ์งํฅ ์ํฌํ๋ก์ฐ๋ฅผ ๊ฐ๋ฐ, ์ค์ผ์ค๋ง ๋ฐ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํ ์คํ ์์ค ํ๋ซํผ์ผ๋ก python์ ์ด์ฉํด ๊ตฌ์ถ ๊ฐ๋ฅํ๋ฉฐ ์น ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ํฌํ๋ก์ฐ ์ํ ๋ชจ๋ํฐ๋ง์ด ๊ฐ๋ฅํ๋ค๋ ์ ์ด ํน์ง์ด๋ค.
์ถ์ฒ : https://airflow.apache.org/docs/apache-airflow/stable/index.html
Workflow๋?
- Workflow๋ ํน์ ์ด๋ฒคํธ ํน์ ์ค์ผ์ค์ ์ํด ํธ๋ฆฌ๊ฑฐ๋๋ ํ์คํฌ์ ์ํ์ค๋ฅผ ์๋ฏธํ๋ค.
- ETL๊ณผ ๊ฐ์ ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
์ผ๋ฐ์ ์ธ Workflow
- ์ ํ์ ์ธ Workflow๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ฐ์ดํฐ์์ง
- ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
- ๋ชจ๋ํฐ๋ง
- ๋ฆฌํฌํธ ์์ฑ
- ๋ฆฌํฌํธ ๋ฐ์ก
์ถ์ฒ : https://www.youtube.com/watch?v=AHMm1wfGuHE
Cron์ด ์๋๋ฐ ์ด๊ฒ ํ์ํ ๊น?
์ ํต์ ์ธ ETL ์ ๊ทผ ๋ฐฉ์์ผ๋ก๋ Cron Script๋ฅผ ์ด์ฉํ์ฌ ํน์ ๋ฐฐ์น์์ ์ ์ํํ ์ ์๋ค. ํ์ง๋ง ์ด ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ์ด์๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ๋ง์ฝ ๋ฐฐ์น์์ ์ด ์คํจํ๋ฉด ์ฌ์๋๋ฅผ ํด์ผํ๋๋ฐ ์ผ๋ง๋ ๋ง์ด, ์์ฃผ ํด์ผํ๋๊ฐ?
- ๊ฐ ํ์คํฌ์ ์ฑ๊ณต, ์คํจ ๋ฐ ์ผ๋ง๋ ์ค๋ ๊ฑธ๋ฆฌ๋์ง ๋ชจ๋ํฐ๋ง ํ ํ์์ฑ์ด ์๋ค.
- upstream ๋ฐ์ดํฐ๊ฐ ์์ค ๋ ๊ฒฝ์ฐ downstream ํ์คํฌ๋ฅผ ์ํํ๋ฉด ์๋๋ค.
- A ์์ ์ด ๋๋๋ฉด B ์์ ์ ์์ํด์ผํ๋๋ฐ ์ ํด์ง ์ค์ผ์ค๋ณด๋ค ๋๋ ์ด๋๋ฉด ์ด๋ป๊ฒ ๊ด๋ฆฌํ๋๊ฐ?
- ๋ค์ํ ํฌ๋ก ์์ ๋ค์ ๊ด๋ฆฌํ๋ ์ค์ ์ง์คํ ๊ด๋ฆฌ ์ค์ผ์ค๋ฌ์ ๋ถ์ฌ
- ์๋ก์ด ๋ณํ๋ค์ ์ง์์ ์ผ๋ก ์ด๋ป๊ฒ ํจ์จ์ ์ผ๋ก ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ๋๊ฐ?
- ๋ฒ๊ทธ ๋ฐ๊ฒฌ๊ณผ ๊ฐ์ ํน์ ์ด์๋ก ์ธํด Historicalํ ๋ฐ์ดํฐ๋ฅผ ๋ฐฑํํด์ผํ๋ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ํด์ผํ๋๊ฐ?
์ด๋ฌํ ๋ฌธ์ ์ ๋ค์ Airflow๋ฅผ ํตํด ํด๊ฒฐํ ์ ์๋ค.
Components
- DAG Directory : Python์ผ๋ก ์์ฑํ DAG๋ฅผ ๋ณด๊ดํ๋ค.
- Scheduler : DAG์ Task๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ์ค์ผ์ค๋งํ๋ค.
- Executor : Task๊ฐ ์ด๋ป๊ฒ ์คํ๋ ์ง๋ฅผ ์ ์ํ๋ค.
- Worker : ์ค์ Task๋ฅผ ์คํํ๋ ์ฃผ์ฒด์ด๋ค. Executor ์ข ๋ฅ์ ๋ฐ๋ผ ๋์ ๋ฐฉ์์ด ๋ค์ํ๋ค.
- Webserver : Airflow์ ์น UI ์๋ฒ์ด๋ค.
- Database : Airflow์ ์กด์ฌํ๋ DAG์ Task๋ค์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค.
DAG
DAG(Directed Acyclic Graph)๋ ๋ฐฉํฅ์ฑ์ด ์๋ ๋น์ํ ๊ทธ๋ํ๋ก ๊ฐ๊ฐ์ ํ์คํฌ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์คํํ ์ ์๋ ์ํฌํ๋ก์ฐ์ด๋ฉฐ Task๋ค๋ก ๊ตฌ์ฑ๋๋ค.
์ถ์ฒ : https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/dags.html
Airflow Operator
Airflow DAG๋ ์ฌ๋ฌ Task๋ก ๊ตฌ์ฑ๋๋๋ฐ ์ด๋ฌํ Task๋ operator๋ sensor๋ก ๋ง๋ค์ด์ง๋ค.
Airflow๋ ๊ธฐ๋ณธ์ ์ธ Task๋ฅผ ์ํด ๋ค์ํ operator๋ฅผ ์ ๊ณตํ๋ค.
- BashOperator: bash command ์คํ
- PythonOperator: Python ํจ์ ์คํ
- EmailOperator: Email ๋ฐ์ก
- MySqlOperator: sql ์ฟผ๋ฆฌ ์ํ
- Sensor: ์๊ฐ, ํ์ผ, db row ๋ฑ์ ๊ธฐ๋ค๋ฆฌ๋ ์ผ์
์์ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ operator ์ธ์๋ ์ปค๋ฎค๋ํฐ์์ ๋ค์ํ operator๋ค์ด ์กด์ฌํ๋ค.
REF
'Airflow' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Airflow] ์ฒซ DAG ๋ง๋ค๊ธฐ (0) | 2024.08.29 |
---|---|
[Airflow] Airflow ์ธํ ํ๊ธฐ (0) | 2024.08.29 |