11์์๋ ์ํฌํ๋ก์ฐ ๋ฐฐ์น ์คํ์ ์ํด airflow๋ฅผ ์ฌ์ฉํด ๋ณด์์ต๋๋ค.
Airflow์ ์ฃผ์ ๊ธฐ๋ฅ์ ์ ์ฐํ ํ์ด์ฌ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํด ์ฝ๊ฒ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ ์ ์๊ฒ ํด์ฃผ๋ฉฐ, ์ต์ ๊ธฐ์ ํ๊ฒฝ์์ ์ ํ๊ฒ ๋๋ ์๋ก ๋ค๋ฅธ ๊ธฐ์ ๋ค์ ์ฐ๊ฒฐํ ์ ์๋ ๋ค์ํ ๋น๋ฉ ๋ธ๋ก์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
- ๋ฐ์ค ํ๋ ์ฌ๋ฝ, Data Pipelines with Apache Airflow
๋ฐฐ์น ์คํ์ ํด์ผ ํ๋ ์ํฌํ๋ก์ฐ๋ ์์ฒ ๋ฐ์ดํฐ ์
๋ ฅ(DB, HDFS, FTP) - ๋ณํ - ์ถ๋ ฅ(DB, HDFS) ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๋ณํ ์์
์ NULL๊ฐ ์ฒ๋ฆฌ, ์ด์์น ์ฒ๋ฆฌ, ์ปฌ๋ผ ์์ฑ ๋ฑ ํ์ต ๋ฐ์ดํฐ๋ก ์ฌ์ฉํ ์ ์๋ ์ผ๋ จ์ ์์
์ด ์ํด์์ต๋๋ค. ๊ฐ๊ฐ์ task๋ pyspark๋ฅผ ์ฌ์ฉํ task ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
๊ธฐ์กด์ airflow๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฐฐ์น๋ฅผ ๊ตฌ์ฑํ ๋์๋ ์ ์ฒด ์์
์ ๋จ์ผ ์คํฌ๋ฆฝํธ๋ก ๋ชจ๋๋ฆฌ์์ผ๋ก ๊ตฌ์ฑ๋์ด ์์์ต๋๋ค. ๋จ์ผ ์คํฌ๋ฆฝํธ ์์์ ์ฌ๋ฌ ์์
์ ์คํํ ๋์๋ ์ ์ญ์ ์ผ๋ก ์ ์ธ๋ spark session์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ I/O, ๋ณํ ์์
์ ์ํํ ์ ์์์ต๋๋ค. ๋ฐ๋ผ์ ์์
๊ฐ spark viewtable์ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ ์
๋ ฅ์ ๋ฐ์ A๋ผ๋ ๋ทฐ ํ
์ด๋ธ์ ์์ฑํ๊ณ ๋ค์ ๋จ๊ณ์์๋ Aํ
์ด๋ธ์ ์ฌ์ฉํ์ฌ ๋ณํ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ B ํ
์ด๋ธ์ ์์ฑํ๊ณ , ์ดํ ๋จ๊ณ์์๋ B ํ
์ด๋ธ์ ์ฌ์ฉํ์ฌ C ํ
์ด๋ธ์ ์ด์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ด ์ด์ ๋จ๊ณ์ ๊ฒฐ๊ณผ ๋ทฐํ
์ด๋ธ์ ์ฌ์ฉํ๋ ๋ฐฉ์์ด์์ต๋๋ค.
airflow๋ฅผ ์ ์ฉํ์ฌ ๋ฐฐ์น ์ํฌํ๋ก์ฐ๋ฅผ ์์ฑํ๋ฉด์ ์ด๋ฐ ์ด๋ ค์์ ์ ํ์ต๋๋ค.
" ๊ฐ๊ฐ์ ๋ณํ ๋จ๊ณ๋ฅผ ๊ฐ๋ณ task ๋ก ์์ฑํ์์ ๋ ์ด์ ๋จ๊ณ์์ viewtable์ ์์ฑํ๋๋ผ๋ ๋ค์ task ์์ viewtable ์กฐํ์ ํ
์ด๋ธ์ด ์๋ค๋ ์๋ฌ๊ฐ ๋ฐ์ "
์ด๋ฌํ ๋ฌธ์ ๋ task ๊ฐ spark session ๊ณต์ ๊ฐ ๋์ง ์์์ ๋ฐ์ํ์์ต๋๋ค. ๋ณํํ๋ ์์
์ ํ๋์ task ์์ ๋ชจ๋ ๋ชจ์์ ์ฌ์ฉํ๋ค๋ฉด ์๋ฌ๋ ๋ฐ์ํ์ง ์์ง๋ง ๊ธฐ์กด์ ๋ฐฉ์๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์์์ต๋๋ค. ๊ธฐ์กด์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณ๊ฒฝํ๊ณ ํ
์คํธํ๋ ๋ฐ์ ๋๋ ๋น์ฉ์ ๊ฐ์ํ ๋งํ์ง๋ ์๋ฌธ์ด์์ต๋๋ค. ๊ฐ๊ฐ์ ๋ถ๋ฆฌ๋ task๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ ๊ฐ ๋จ๊ณ๋ณ๋ก ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ์ ์ฅํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋จ๊ณ์์ ๋ค์ ๊ฐ์ ธ์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ํํด์ผ ํ์ต๋๋ค. ์ด ๋ฐฉ์์ Disk I/O์ ๋ฐ๋ฅธ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ ์ ์ด ์์์ต๋๋ค.
์ด๋ ํ ๋ฐฉ๋ฒ์ ํํ๋ฉด ์ข์์ง ๊ณ ๋ฏผ์ ํ๋ค๊ฐ, ํ์ฌ ์งํ ์ค์ธ dask ์คํฐ๋ ํ์๋ถ๋ค๊ป ์๊ฒฌ์ ๊ตฌํ์ต๋๋ค. ์๊ฒฌ๋ค์ ์ข
ํฉํด ๋ณด๋ ์๋์ ๊ฐ์ด ์ ๋ฆฌ๋์์ต๋๋ค.
[task๋ฅผ ๋๋๋ ๋จ์] 1. ๊ฐ๊ฐ์ ๋จ๊ณ ์ํ ์๊ฐ์ด ์งง๋ค๋ฉด spark ์์ ์ ์ฒด๋ฅผ ํ๋์ task๋ก ๋ง๋๋ ํธ์ด ์ข๋ค. 2. ๊ฐ๊ฐ์ ๋จ๊ณ ์ํ์๊ฐ์ด ๊ธธ๊ฑฐ๋ ๋น์ฆ๋์ค ๋ก์ง ์ ์ค๊ฐ ๋ฐ์ดํฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ๊ฐ ๋จ๊ณ๋ฅผ ๋ณ๋์ task๋ก ๋ถ๋ฆฌํ๋ค. task ์ํ์ ๊ฒฐ๊ณผ๋ ๋จ๊ณ๋ณ๋ก ์ ์ฌํ๋ค. [task๋ฅผ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํ๋ ์ด์ ] - ์ค๊ฐ์ ์คํจํ task๋ฅผ ์ฌ์คํํ๊ธฐ ์ํด์ - task ๋ณ ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋จ๊ธฐ๋ ์ด์ ๋ ๋น์ฆ๋์ค ๋ก์ง์ด๋ ์คํค๋ง ๋ณ๊ฒฝ ์ ๋์ํ๊ธฐ ์ํจ์ด๊ณ , ์๋ฌ ๋์์๋ ํ์ฉํ๋ค. [ํ์คํฌ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ] - S3๋ ํ๋ก ๋ฑ ์คํ ๋ฆฌ์ง๋ฅผ ์ด์ฉํ์ฌ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์๋ค. - ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ ์ด๋ธํํด์ spark sql๋ก ์ฒ๋ฆฌํ๊ธฐ๋ ํจ. - Disk I/O(ex- parquet๋ก ๋จ๊ตฌ๊ณ ๋ค์ ๋ก๋)์ ๋ฐ๋ฅธ ์ถ๊ฐ์ ์ธ ๋ถํ๊ฐ ์กด์ฌํ์ง๋ง, ๋จ๊ณ๋ณ ์ฒ๋ฆฌ ์๊ฐ์ด ๊ธด ๊ฒฝ์ฐ์๋ ์ค๊ฐ ํ์ผ์ ์ ์ฅํด์ task ๋ณ๋ก ๋๋๋ ๊ฒ์ด ์ถํ ์ด์์ ํธ๋ฆฌํ ์ ์์. |
๋น์ฆ๋์ค์ ๋ฐ๋ผ ์ค๊ฐ ๋ฐ์ดํฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ๋ ์ด๋ค ๊ฒ์ด ์์๊น ์๊ฐํด ๋ดค๋๋ฐ, ๋งค์ถ ๋ฐ์ดํฐ ์์๋ฅผ ์๊ฐํด ๋ณด์์ต๋๋ค. ๋งค์ถ raw data ์ถ์ถ -> ์๋ณ ํ๋งค๋ ํฉ๊ณ ๊ณ์ฐ -> ์๋ณ ๊ณ ๊ฐ ์ ๋ฐ์ดํฐ์ ์กฐ์ธ -> ์๋ณ 1์ธ๋น ํ๊ท ๊ตฌ๋งค์ก output ์ด๋ฌํ ์ํฌํ๋ก์ฐ ์์๊ฐ ์๋ค๊ณ ํ๋ฉด, ํน์ ๋จ๊ณ์ ๋ฐ์ดํฐ๋ง ํ์ํ๊ฑฐ๋ ์ ๋ฐ์ดํฐ๋ง์ ํ์๋ก ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ง ์์๊น ์๊ฐํด๋ณด์์ต๋๋ค.
11์์๋ airflow๋ฅผ ์ฌ์ฉํด์ ์ํฌํ๋ก์ฐ๋ฅผ ์์ฑํ๋ ์
๋ฌด๋ฅผ ์ฃผ๋ก ์ํํ์ต๋๋ค. ๊ธฐ์กด์ ์์ฑ๋์ด ์๋ ์คํฌ๋ฆฝํธ๋ฅผ task ๋จ์๋ก ๋๋์ด์ ์์ฑํ๊ณ ์คํํด๋ณผ ์ ์์์ต๋๋ค. airflow ui๋ฅผ ํตํด ๋จ๊ณ๋ณ๋ก ์คํ ์ํ๋ฅผ ํ์ธํ ์ ์๋ ์ ์ด ํธ๋ฆฌํ๊ฒ ๋๊ปด์ก์ต๋๋ค. task๋ฅผ ๋๋๋ ๋ถ๋ถ์์๋ ๋จ๊ณ๋ณ ์์
์์ ์๊ฐ๊ณผ ์ค๊ฐ ๋ฐ์ดํฐ์ ํ์ ์ฌ๋ถ์ ๋ฐ๋ผ task์ ๋ถ๋ฆฌ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ์ ์๋ค๋ ์ ์ ๋ฐฐ์ ์ต๋๋ค!
'note' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[test] ์ฝ๊ฒ ์์ํ๋ ํ์ด์ฌ ํ ์คํธ ์ฝ๋ (0) | 2024.01.30 |
---|---|
๋คํธ์ํน์ ํตํด ๋ฐฐ์ด ๊ฒ๋ค (0) | 2023.12.31 |
[airflow] ubuntu ์๋ฒ์ airflow ์๋น์ค ๋ฑ๋กํ๊ธฐ (0) | 2023.11.18 |
[python] segno ํจํค์ง๋ฅผ ์ด์ฉํ์ฌ ๋๋ง์ QR์ฝ๋ ๋ง๋ค๊ธฐ (0) | 2023.11.14 |
[MLOps] MLOps์ ์ํคํ ์ฒ์ ์ํฌํ๋ก์ฐ (0) | 2023.11.08 |