7.3 Airflow Use Cases#
1๏ธโฃ Streaming > Batch ๋ฐ์ดํฐ ๋ณํ, ์ ์ ์์ #
Overview#
streaming application ์ด ๋ฐ์ดํฐ ์ ์ฅ ์์ ์ ๋ง์น๋ฉด, ํด๋น streaming ๋ฐ์ดํฐ์ ๊ฒฝ๋ก๋ฅผ ์ฝ์ด์ Batch์ฉ ๋ฐ์ดํฐ ์ ์ฅ์(์: hadoop ์ ํน์ ๊ฒฝ๋ก์ ์๊ฐ๋จ์ ํํฐ์ ๋ ๊ฒฝ๋ก)๋ก ์ฎ๊ธฐ๋ ์์ ์ ์ํํฉ๋๋ค.
Case1: streaming ์ด ์ง์ฐ์ด ์๋๋ผ๋ ์ต๋ x์๊ฐ ์ด๋ด์ด๋ผ๋ฉด, x์๊ฐ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ DAG๋ฅผ ๋ง๋ ๋ค.
Case2: streaming application์ด ํ๋๋ผ๋ฉด DAG๋ฅผ API๋ก ํธ์ถํ๋ ๊ฒ๋ ํ๋์ ๋ฐฉ๋ฒ์ด๋ค.
๋ฐ์ดํฐ๋ฅผ ํ์ ํ๊ธฐ ์ํด ํ์ํ ์ถ๊ฐ ์์ ๋ค๋ ๊ฐ์ด workflow๋ก ๊ตฌ์ฑํฉ๋๋ค.
Background#
ํ์ผ ์์คํ ๋๋ DB์์์์ streaming ๋ฐ์ดํฐ๋ ๋๊ฐ ํ์ผ(๋ฐ์ดํฐ) ์ฌ์ด์ฆ๊ฐ ์ผ์ ํ์ง ์๊ณ (hadoop block size ์ ์ต์ ํ๋์ง ์๊ณ ) ํ์ผ์ด ์ฌ๋ฌ๊ฐ ์กด์ฌํ๊ณ , ๊ฒฝ๋ก๋ง์ผ๋ก๋ ํด๋น ์๊ฐ์ ๋ฐ์ดํฐ์ ํ์ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ธฐ ์ด๋ ต์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ํ์ ํ ์ ์๋ ๋ฐ์ดํฐ๋ก ๋ค์ํ ๋ฐฐ์น์์ ์ ์์ํ ์ ์์ต๋๋ค.
Effect#
streaming ๋ฐ์ดํฐ์ ์ ์ฌ ์ง์ฐ์ด๋, ๋ฐ์ดํฐ ์ค๋ฅ ๋ฑ์ผ๋ก ์ฌ์ฒ๋ฆฌ๊ฐ ํ์ํ ๋ Web UI/API ํธ์ถ์ ํตํด์ ํน์ ์์ ์ด๋ ๊ธฐ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฒ๋ฆฌ ํ ์ ์์ต๋๋ค.
Batch ๋ฐ์ดํฐ์ ์ ์ฌ ๋ฟ๋ง์๋๋ผ ํ์์์ ์ ์ด์ด์ workflow๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
ํ์์์ ์ ์: hive ์ add/drop partition
ํด๋น DAG์ ๋ค๋ฅธ DAG๋ค์ด sensor ๋ก ์ฐ๊ฒฐํด์ batch ๋ฐ์ดํฐ ์ ์ฌ๊ฐ ์ ์์ ์ผ๋ก ์๋ฃ๋๋ฉด ํ์ workflow๋ค์ ์์ ๋กญ๊ฒ ์ด์ด๊ฐ ์ ์์ต๋๋ค.
2๏ธโฃ Sensor ๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ ์ ํฉ์ฑ ๋ณด์ฅ#
Overview#
์์ 1์์ ๋ง๋ batch ์์ ์ด ๋๋๋ฉด, ํด๋น batch DAG ๋ฅผ sensor ๋ก ๋ฑ๋กํ์ฌ ํด๋น DAG๊ฐ ์ฑ๊ณตํ๋ฉด, ์ด์ด์ ธ์ผํ ํ์์์ ์ timedelta๋งํผ์ ์ฐจ์ด๋ฅผ ๋๊ณ ์ํํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Sensor ๋ก ๋ชจ๋ํฐ๋งํ๋ DAG ์ interval๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ฌ์ฉํฉ๋๋ค.
์ธํฐ๋ฒ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ, Sensor๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ณ๋์ schedule์ ์ฌ์ฉํฉ๋๋ค.
Background#
์๋น์ค์์ ์ฌ์ฉํ๋ ์ฃผ์ ๋ฐ์ดํฐ(๋ฒ ์ด์ค)์ ๊ฒฝ์ฐ, ์ฌ์ฉ์ฒ๊ฐ ๋ง์ต๋๋ค.
์ด ๊ฒฝ์ฐ ํด๋น ๋ฐ์ดํฐ ์ ์ ์์ ์ ์๋ฃ ์ดํ์ ์ด์ด์ ธ์ผ ํ ์ผ๋ค์ด ๋ง๊ฒ๋ ์์ญ๊ฐ ์ด์์ด๋๋ ๊ฒฝ์ฐ๊ฐ ์๊น๋๋ค.
์ด๋ ๊ฒ ๋ง์ ์์ ๋ค์ด ๋จ์ํ ์ ๊ธฐ์ ์ธ schedule ๋ก ์ค์ผ์ค๋ง ํ๋ค๋ฉด, ๋ฐ์ดํฐ ์ง์ฐ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ ๋ถ์กฑ๋ฑ์ ์ด์ ๋ก ๋ฐ๋ฆฌ๊ธฐ ์์ํ๋ฉด ๋ชจ๋ ์์ ๋ค์ด ์คํจํ๊ฑฐ๋ ๋ฐ๋ฆฌ๊ฒ ๋ฉ๋๋ค.
Effect#
์ ์ ์์ ์ ์ง์ฐ์ด๋ ์คํจ์ ๋ชจ๋ ํ์ ์์ ์ ์๋์ผ๋ก ์ฌ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๋ค๋ฉด, ์ฌ์ฒ๋ฆฌ์ ์ํ ๋ถํ๊ฐ ์ปค์ง๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
(๋ฌด๋ถ๋ณํ๊ฒ ์ฌ์ฒ๋ฆฌ trigger, ์ค๋ณต๋ ์ฌ์ฒ๋ฆฌ ๋ฑ) ์ด๊ฒ์ ๋ฐฉ์งํ๊ณ graceful ํ๊ฒ ์์ ์ ํ๋ฆ์ด ์ด์ด์ง ์ ์๊ฒ ํฉ๋๋ค.
airflow cluster ๋ด์์ DAG ๋ค ์ฌ์ด์ ์ ์๊ด๊ณ์ ์ํฅ๋์ ํ์ ์ด ์ ์ธ์ ์ผ๋ก ๊ฐ๋ฅํฉ๋๋ค.
2์ ์ํด์ ์ ์์์ ์ ์ง์ฐ์ด๋ ์ฅ์ ์ ์ํฉํธ์ ์ฌ์ด๋ ์ดํํธ ๋ฑ์ ํ๋ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
3๏ธโฃ Schedule ์ ์ด์ฉํ ๋ถํ๋ถ์ฐ#
Overview#
๊ฐ์ ๋ฆฌ์์คํ์ ๋ถํ๊ฐ ์๋ ์์ ์ ์ฒ๋ฆฌํ๋ DAG๋ค์ ๋ชจ๋ hourly, daily ์์ ์ด๋๋ผ๋ ํด๋น interval ์ฌ์ด์ ์ํ๋๋ ์๊ฐ์ schedule cron ์์ ์ด์ฉํด์ ๋ถ์ฐํฉ๋๋ค.
์๋ฅผ ๋ค์ด DAG1 ์ ๋งค์ 1๋ถ์ DAG2๋ ๋งค์ 11๋ถ์ DAG3 ์ ๋งค์ 21๋ถ์ ์์๋๋ ์์ ๋๋ค.
Background#
airflow๋ ํฐ ์์ ์ worker ๋ด์์ ์ฒ๋ฆฌํ์ง ์๊ณ , ์ธ๋ถ์ ๋์ฉ๋ ์ฒ๋ฆฌ์ฅ์น์ ์์ํฉ๋๋ค.
hourly, daily ๋ก ์ฒ๋ฆฌ๋๋ ์์ ์ ๋ณดํต ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ์ ์์ ๋๋ ๋ฆฌ์์ค ํ์ ์ฌ์ฉํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
hourly ๋ก ๋์ํ๋ ์์ ์ด ๋ชจ๋ ๋งค์ 0๋ถ 0์ด์ ์์๋๋ค๊ณ ํด๋ณธ๋ค๋ฉด?
ํ ์๊ฐ ์ค ์ฒ์์ ๋ช๋ถ ๋์๋ง ๋ฆฌ์์ค๋ฅผ ๊ณผ๋คํ๊ฒ ์ ์ ํด starvation ์ด ์ผ์ด๋์ ๋ฆฌ์์ค ํ์ ์ ์ฒด์ ์ฅ์ ๋ ์ด์ฉ์ค๋จ์ด ์์ ์ ์์ต๋๋ค.
Effect#
๊ฐ์ ์๊ฐ์ ์ง์ค์ ์ธ ์์ ์ฌ์ฉ์ผ๋ก ์ธํด starvation์ด ์ผ์ด๋๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๋ฆฌ์์คํ์ ์์์ skew ์์ด ๊ณ ๋ฅด๊ฒ ์ฌ์ฉํ ์ ์๋ค. + ๋ฆฌ์์ค ํ์ ์ ์ฒด utilization ์ ๊ฑด๊ฐํ๊ฒ ๋์ผ ์ ์์ต๋๋ค.
airflow ์ DAG ๋ schedule ์์ ์ ์ธ์ ์ผ๋ก ์ฝ๋์ ์ผ๊ธฐ ๋๋ฌธ์ ํด๋ฌ์คํฐ ๊ด๋ฆฌ์ ์ ์ฅ์์ DAG์ ์ ์ธ๊ณผ Operator ์ ์ฌ์ฉ์ ๋ณด๊ณ ์ฌ์ ์/์๋์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.