๐ Airflow๋?
Python ์ฝ๋๋ก ์ํฌํ๋ก์ฐ(workflow)๋ฅผ ์์ฑํ๊ณ , ์ค์ผ์ฅด๋ง, ๋ชจ๋ํฐ๋ง ํ๋ ํ๋์ ํ๋ซํผ์ด๋ค.. Airflow๋ฅผ ํตํด์ ๋ฐ์ดํฐ์์ง๋์ด๋ง์ ETL(Extract, Transform, Load) ์์ ์ ์๋ํํ๊ณ , DAG(Directed Acyclic Graph)์ ํํ์ ์ํฌํ๋ก์ฐ ์์ฑ์ด ๊ฐ๋ฅํ๋ค. ์ด๋ฅผ ํตํด ๋ ์ ๊ตํ dependcy๋ฅผ ๊ฐ์ง ํ์ดํ๋ผ์ธ์ ์ค์ ํ ์ ์๊ฒ ๋๋ค.
๊ฐ๋ตํ๊ฒ Airflow๊ฐ ๋ฌด์์ธ์ง ์ดํด๋ณด์๊ณ , Airflow๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ๊ตฌ์ฑ์์๋ค์ ๋ํด ์์๋ณด๋๋ก ํ๋ค.
- Scheduler - ๋ชจ๋ DAG์ Task์ ๋ํ์ฌ ๋ชจ๋ํฐ๋ง ๋ฐ ๊ด๋ฆฌํ๊ณ ์คํํด์ผ ํ Task๋ฅผ ์ค์ผ์ค๋ก ๊ด๋ฆฌ(๊ฐ task id๋ ๊ณ ์ ํ๋ค)
- DAG - Directed Acyclic Graph๋ก ๊ฐ๋ฐ์๊ฐ ์ง์ ์์ฑํ ์ํฌํ๋ก์ฐ. ํ๋์ ํ๋ก์ ํธ๋ผ๊ณ ์๊ฐ(?)ํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค. ๊ฐ Task๋ค์ depency๋ฅผ ์ ์ํ๋ค.
- Web server - Airflow์ ์น UI. UI๋ฅผ ํตํด ์ฌ์ฉ์๋ค์ด ํ์ฌ ์งํ๋๊ณ ์๋ ์ํฉ์ ์๊ฐ์ ์ผ๋ก ๋ณผ ์ ์๊ฒ๋ ํ๋ค.
- Database - Airflow์ ์กด์ฌํ๋ DAG์ Task ๋ค์ด ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- Worker - ์ค์ Task๋ฅผ ์คํํ๋ ์ฃผ์ฒด. Executor ์ข ๋ฅ์ ๋ฐ๋ผ ๋์ ๋ฐฉ์ ๋ค์ํ๋ค.
ํ๋ง๋๋ก ์ ์ํ๋ฉด Airflow๋ ๊ฐ๋ฐ์๊ฐ ์์ฑํ Python DAG๋ฅผ ์ฝ๊ณ , ๊ฑฐ๊ธฐ์ ๋ง์ถฐ Scheduler๊ฐ Task๋ฅผ ์ค์ผ์ฅด๋งํ๋ฉด, Worker๊ฐ Task๋ฅผ ๊ฐ์ ธ๊ฐ ์คํํ๋ค. Task์ ์คํ์ํ๋ Database์ ์ ์ฅ๋๊ณ , ์ฌ์ฉ์๋ UI๋ฅผ ํตํด์ ๊ฐ Task์ ์คํ ์ํ, ์ฑ๊ณต ์ฌ๋ถ ๋ฑ์ ํ์ธํ ์ ์๊ฒ ๋๋ค.
Airflow๋ฅผ ์คํ์ํค๋ฉด ์ด๋ฐ ์น UI๊ฐ ๋์จ๋ค. ์ผ์ชฝ์ ๋ณด์ด๋ ๊ฒ๋ค์ด DAG ์์๋ค์ด๋ค.
๐ DAG(Directed Acyclic Graph)
Airflow์ DAG๋ ์คํํ๊ณ ์ถ์ Task๋ค์ ๊ด๊ณ์ dependcy๋ฅผ ํํํ๊ณ ์๋ Task๋ค์ ๋ชจ์์ด๋ค.
์๋ก ์ ๋ ์๋ฆฌ๋ฅผ ํด๋ณธ๋ค๊ณ ์๊ฐํด๋ณด๊ฒ ๋ค.
1. ๋จผ์ , ๋ฌด์์ ๋ง๋ค์ง ๋ฉ๋ด๋ฅผ ๊ณ ๋ฏผํด์ผ ํฉ๋๋ค.
2. ๋ง๋ค ๋ฉ๋ด์ ๋ํ ์ฌ๋ฃ๋ฅผ ์ค๋นํด์ผ ํฉ๋๋ค.
3. ์ฌ๋ฃ๊ฐ ์๋ค๋ฉด ์์ฅ์ด๋ ๋งํธ์ ๊ฐ์ ์ฌ๋ฃ๋ฅผ ์ฌ์์ผ ํ๊ณ
4. ๊ทธ ๋ค์ ์๋ฆฌ๋ฅผ ์์ํ ์ ์๊ฒ ๋๋ ๊ฒ์ ๋๋ค.
5. ์๋ฆฌ๋ฅผ ์ ๋ ์๊ฐ(ex 7:00PM) ์ ๊น์ง ์ค๋น
์ฌ๋ฃ๊ฐ ์๋ค๋ฉด ์๋ฆฌ๋ฅผ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ ์์ฐจ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๊ฒ ๋๋ค. ์ฆ, ์๋ฆฌํ๋ ๊ฒ์ ์ฌ๋ฃ์ค๋น์ ๋ํด
Dependcy๋ฅผ ๊ฐ๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ฆ, DAG๋ ์ด๋ค ์์์ ์ด๋ค dependcy๋ก ์คํํ ์ง ์ด๋ค ์ค์ผ์ฅด๋ก ์คํํ ์ง ๋ฑ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค. DAG๋ฅผ ์ ํํ๊ฒ ์ ์ํ๊ณ ์ค์ ํด์ผ ์ํ๋ Task๋ค์ ์ค์ผ์ฅด์ ๋ง๊ฒ ์ ํํ๊ฒ ์คํํ ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
๐ Opertor
์ด์ฒ๋ผ ํ๋์ DAG๋ ์ฌ๋ฌ๊ฐ์ task๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด task๋ฅผ ์ด๋ฃจ๋ ๊ฒ์ด operator๋ sensor ์ด๋ค. Airflow๋ ๊ธฐ๋ณธ์ ์ธ Task๋ฅผ ์ํด ๋ค์ํ operator๋ฅผ ์ ๊ณตํ๋๋ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ operator์๋ ์ด๋ฐ๊ฒ๋ค์ด ์๋ค.
- BashOperator : bash command๋ฅผ ์คํ
- PythonOperator : python ํจ์๋ฅผ ์คํ
- EmailOperator : email์ ๋ฐ์ก
- MySqlOperator : sql์ฟผ๋ฆฌ๋ฅผ ์คํ
- Sensor : ์๊ฐ, ํ์ผ, db, row๋ฑ๋ฑ์ ๊ธฐ๋ค๋ฆฌ๋ ์ผ์
๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ Operator ์ด์ธ์๋ ์๋ง์ Operator๋ค์ด ์กด์ฌํ๋ค. ๋ฐ์ ์ฌ์ดํธ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋ค์ํ
Operator๋ค์ ๋ณผ ์ ์๋ค.
https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/operators/index.html
Airflow์์ ๋ํ๋์ ์ค์ํ ๊ฐ๋ ์ธ Scheduler์ ๋ํ ์ค์ ์ ์ด๊ณณ์ ์ ๋ฆฌํ๋ค.
https://amazelimi.tistory.com/28
'Airflow' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Airflow] Branch๋ฅผ ์ด์ฉํด ์ํฉ์ ๋ง๋ task ์คํ(BranchPythonOperator) | LIM (0) | 2022.07.19 |
---|---|
[Airflow] Airflow Connection with Google Secret Manager | LIM (0) | 2022.06.16 |
[Airflow] CustomOperator ์์ฑ | LIM (0) | 2022.06.12 |
Mac Airflow local ์ค์น (0) | 2022.05.14 |
[Airflow] Datetime (feat. ์๋์คํ ๋ฐฉ์ง) (0) | 2022.05.14 |
๋๊ธ