2022. 9. 15. 19:28ใ๐ Data Engineering/Apache Airflow
Airflow๋?
์์ ์ค์ผ์ค๋ฌ.
Airflow๋ฅผ ์ด์ฉํ๋ฉด ์ํ๋ ์๊ฐ์, ์ํ๋ ์์ ์ ์คํ์ํฌ ์ ์์ต๋๋ค.
์ด๋ฒ ํฌ์คํ ์์ Airlfow์ ๊ธฐ์ด ์ง์์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ชฉ์ฐจ
๐ Airflow ๊ธฐ์ ๋ฐ ์ฅ์
๐ Airflow ๊ตฌ์กฐ
Airflow ๊ธฐ์ ๋ฐ ์ฅ์
๐ ๊ธฐ์
Airflow๋ ์์ด๋น์ค๋น์์ ๊ฐ๋ฐํ ์ํฌํ๋ก์ฐ ์ค์ผ์ค๋ง, ๋ชจ๋ํฐ๋ง ํ๋ซํผ์ ๋๋ค.
2016๋ ์ํ์น ์ฌ๋จ์ incubator program์ผ๋ก ํ์ํ์ผ๋ฉฐ, ํ์ฌ๋ ์ํ์น ํ ๋ ๋ฒจ ํ๋ก์ ํธ์ ๋๋ค.
Airbnb, Yahoo, Paypal, Intel, Stripe ๋ฑ์์ Airflow๋ฅผ ํ์ฉํ๊ณ ์์ต๋๋ค.
๐ ๊ธฐ์กด ๋ฐฉ์์ ๋ฌธ์ ์
๊ธฐ์กด์ ํ๋์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ Task๋ฅผ ์ง์ด๋ฃ๊ณ ์คํ์์ผฐ์ต๋๋ค.
pipeline์ ํ ๋ฒ์ ๋ฐฐํฌํ๋ ๊ฒ์ ๋๋ค. ํน์ Task๋ฅผ ๋ฐ๋ก ์ ์ํด์ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ์ฌ๋, ์คํ'๋ง' ํ ์ ์์์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ค์ ๋ณ์์ต๋๋ค.
1. (๋ชจ๋ํฐ๋ง ๋ฌธ์ ) ์ ๋์๊ฐ๊ณ ์๋์ง ํ์ธํ๊ธฐ ํ๋ญ๋๋ค.
2. (์์กด์ฑ ๊ด๋ฆฌ) ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ๊ฐ ์์กด์ฑ์ด ์๋ ๊ฒฝ์ฐ, ์์ ํ์ดํ๋ผ์ธ์ด ์ ๋์๊ฐ๊ณ ์๋์ง ํ์ ํ๊ธฐ ํ๋ญ๋๋ค.
3. (๋ฐฐํฌ) ์๋ก์ด ์ํฌํ๋ก์ฐ๋ฅผ ๋ฐฐํฌํ๊ธฐ ํ๋ญ๋๋ค. ์ค๋ฅ๊ฐ ๋ ๊ฒฝ์ฐ, '์ ์ฒด' ํ๋ก์ฐ๋ฅผ ๋ค์ ๋ฐฐํฌํด์ผ ํฉ๋๋ค.
4. (์คํจ ๋ณต๊ตฌ) ์คํจํ ๊ฒฝ์ฐ, ์ธ์ ์ด๋ป๊ฒ ๋ค์ ์คํํ ๊ฒ์ธ๊ฐ์ ๋ํ ํด๊ฒฐ์ฑ ์ด ์์ต๋๋ค.
5. (ํ์ฅ์ฑ) ์ค์๊ด๋ฆฌ ํด์ด ์๊ธฐ ๋๋ฌธ์, ๋ถ์ฐ๋ ํ๊ฒฝ์์ ํ์ดํ๋ผ์ธ ๊ด๋ฆฌ๊ฐ ํ๋ญ๋๋ค.
๐ ์ฅ์
1. Airflow๋ UI(user interface)๋ฅผ ์ ๊ณตํ๋ฉฐ, ์์์ ๋ชจ๋ํฐ๋ง๊ณผ ์ค์ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ์ด์ ๋ฐ๋ผ ๊ธฐ์กด ๋ฌธ์ ์ธ ๋ชจ๋ํฐ๋ง, ํ์ฅ์ฑ, ์์กด์ฑ ๊ด๋ฆฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
2. Airflow๋ ํ๋์ DAG ์์ ํ์ดํ๋ผ์ธ์ด ๊ตฌ์ถ๋์ด ์์ต๋๋ค. ํ์ง๋ง ํ ๊ณณ์์ ์ค๋ฅ๊ฐ ๋๋, ๊ทธ ๋ถ๋ถ๋ง ๊ณ ์ณ์ ๋ค์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ์ฝ๊ฒ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๊ณ , ์ค๋ฅ๊ฐ ๋๋ ์ฌ๋นจ๋ฆฌ ๊ณ ์ณ์ ๋ฐฐํฌํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
3. Python ์ธ์ด๋ก ์ง๊ธฐ ๋๋ฌธ์, ๋ฌธ๋ฒ๊ณผ ํ์ฉ์ด ์ฝ์ต๋๋ค.
4. Backfill ๊ธฐ๋ฅ์ด ์์ด, ์ค๋ฅ๊ฐ ๋๋ ์ธ์ , ์ด๋ป๊ฒ ๋ค์ ์คํํ ๊ฒ์ธ์ง ์ ํ ์ ์์ต๋๋ค.
5. Bottle Neck์ ๋น ๋ฅด๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
6. GCP ์ฐ๋์ด ํธ๋ฆฌํฉ๋๋ค.
Airflow ๊ตฌ์กฐ
๐ ์ ์ฒด ๊ตฌ์กฐ๋
Airflow์ ์ ์ฒด ๊ตฌ์กฐ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Scheduler, Executor, Worker, Web Server, Metastore, Dags ๋ฑ์ด ๊ตฌ์ฑ์์์ ๋๋ค.
ํ ๊ฐ์ DAG๋ ํ๋์ pipeline์ ๋๋ค.
๐ Functions
Airflow Webserver
Airflow์ ๋ก๊ทธ, ์ํฌ ํ๋ก์ฐ, ์งํ ์ํฉ ๋ฑ ์ ์ฒด์ ์ธ ๋ชจ๋ํฐ๋ง์ ์ง์ํฉ๋๋ค. ํนํ Task ์ํ, Dag ๋ชฉ๋ก ๋ฑ์ ์๊ฐํํ์ฌ ๋ณด์ฌ์ค๋๋ค. UI๋ฅผ ํตํด ์๊ฐ์ ์ผ๋ก ์ค์ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋๋ก ํฉ๋๋ค.
Airflow DAGs Folder
์ ์ ๊ฐ ์์ฑํ DAG๋ค์ ์ ์ฅํด๋๋ ํด๋์ ๋๋ค. ์ด๊ณณ์ ์ฐธ๊ณ ํ์ฌ Web Server์ Scheduler๊ฐ ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
Airflow Scheduler
Airflow๋ก ํ ๋น๋ work๋ฅผ ์ค์ผ์ฅด๋งํ๋ ์ปดํฌ๋ํธ์ ๋๋ค. work๋ฅผ ์์ํ๊ณ , Executor์๊ฒ task๋ฅผ ์ ๊ณตํ๋ ์ญํ ์ ํฉ๋๋ค.
Airflow Executor
Scheduler์๊ฒ ๋ฐ์ Task๋ฅผ ํธ๋ค๋งํ๋ ์ปดํฌ๋ํธ์ ๋๋ค. ์ด๋ป๊ฒ ์คํ๋๋์ง ์ ์ํ๋ ๊ณณ์ ๋๋ค. default ์ค์น ์์๋ Scheduler์ ์๋ ๋ชจ๋ ๊ฒ๋ค์ ๋ค ์คํ์ํค์ง๋ง, production ์์ค์์์ Executor๋ worker์๊ฒ task๋ฅผ push ํฉ๋๋ค.
Airflow Worker
์ค์ task๋ฅผ ์คํํ๋ ์ฃผ์ฒด์์ ๋๋ค.
Airflow Metastore
Dag์ ์ ๋ณด/์ํ ๋ฑ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, Task Instance ๋ฑ์ ์ ์ฅํด๋๋ ์ ์ฅ์์ ๋๋ค. ๋ชจ๋ ์ ๋ฐ์ดํฐ์ ์งํ์ Metastore๋ฅผ ๊ฑฐ์นฉ๋๋ค.
[์ํฌ ํ๋ก์ฐ ์์ฑ๊ณผ ์คํ]
1. ์ ์ ๊ฐ ์๋ก์ด DAG๋ฅผ ์์ฑํ๊ณ , DAGs ํด๋ ์์ ๋ฐฐ์น
2. Web Server, Scheduler๊ฐ DAG๋ฅผ ํ์ฑ (์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค).
3. Scheduler๊ฐ Metastore์ DagRun object๋ฅผ ์์ฑ. DagRun = ์์ฑํ DAG์ ๊ฐ์ฒด, ํ์ฌ ์งํ ์ํฉ์ ์๋ ค์ค๋ค.
DagRun status:Running
4. Task Instance๋ฅผ Scheduler๊ฐ ์ค์ผ์ฅด๋งํ ํ, Executor๋ก ๋ณด๋ธ๋ค.
5. ์๋ฃ ํ, Executor๋ Metastore์ ์๋ฃ ๋ณด๊ณ , DagRun status:Completed
6. Scheduler, Web Server๊ฐ ๊ฐ๊ฐ ํ์ธ. Scheduler๋ ๋ค์ Task๋ฅผ ์งํํ๊ณ , Web Server๋ UI ์ ๋ฐ์ดํธ.
๐ DAG (Directed Acyclic Graph)
Directed Acyclic Graph
๋น์ํ ๊ทธ๋ํ. ๋ ธ๋์ ๋ ธ๋๊ฐ ๋จ๋ฐฉํฅ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์์ด, ๋ค์ ๋์์ค์ง ์๋๋ค๋ ํน์ฑ์ ๊ฐ์ง๋๋ค. Airflow๋ ์ด๋ฐ DAG ํน์ฑ์ ์ด์ฉํ์ฌ Workflow๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
๐ Operator
DAG ์์ ์์ ์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค.
1. Action Operators
์ค์ ์ฐ์ฐ์ ์ํํฉ๋๋ค.
2. Transfer Operators
๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธฐ๋ ์์ ์ ์ํํฉ๋๋ค.
3. Sensor Operators
ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง ํ์ธํฉ๋๋ค. ์กฐ๊ฑด์ ๋ง์กฑํ ๊ฒฝ์ฐ, ๋ค์ Step์ผ๋ก ๋์ด๊ฐ๋ ์์ ์ ์ํํฉ๋๋ค.
์ง๊ธ๊น์ง Airflow์ ๊ธฐ์ด ์ง์์ ์์๋ดค์ต๋๋ค.
Airflow์ ํ๋ฆ๊ณผ ๊ฐ๋ ์ ์ ์์งํ์ จ๋ค๋ฉด ์ด์ ํ์ฉํ ์ฐจ๋ก์ ๋๋ค.
๋ค์ ํฌ์คํ ์์ Airflow์ Spark๋ฅผ ํจ๊ป ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.
'๐ Data Engineering > Apache Airflow' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Airflow] Airflow & Spark ์ฐ๋ํด์ ํ์ฉํ๊ธฐ (2) (2) | 2022.09.19 |
---|---|
[Airflow] Airflow & Spark ์ฐ๋ํด์ ํ์ฉํ๊ธฐ (1) (0) | 2022.09.17 |
[Airflow Error] 403:Forbidden (0) | 2022.09.08 |