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#

  1. streaming ๋ฐ์ดํ„ฐ์˜ ์ ์žฌ ์ง€์—ฐ์ด๋‚˜, ๋ฐ์ดํ„ฐ ์˜ค๋ฅ˜ ๋“ฑ์œผ๋กœ ์žฌ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ Web UI/API ํ˜ธ์ถœ์„ ํ†ตํ•ด์„œ ํŠน์ • ์‹œ์ ์ด๋‚˜ ๊ธฐ๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. Batch ๋ฐ์ดํ„ฐ์˜ ์ ์žฌ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ ํ›„์†์ž‘์—…์„ ์ด์–ด์„œ workflow๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ํ›„์†์ž‘์—…์˜ ์˜ˆ: hive ์˜ add/drop partition

  3. ํ•ด๋‹น DAG์— ๋‹ค๋ฅธ DAG๋“ค์ด sensor ๋กœ ์—ฐ๊ฒฐํ•ด์„œ batch ๋ฐ์ดํ„ฐ ์ ์žฌ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด ํ›„์† workflow๋“ค์„ ์ž์œ ๋กญ๊ฒŒ ์ด์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2๏ธโƒฃ Sensor ๋ฅผ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๋ณด์žฅ#

Overview#

  • ์•ž์„œ 1์—์„œ ๋งŒ๋“  batch ์ž‘์—…์ด ๋๋‚˜๋ฉด, ํ•ด๋‹น batch DAG ๋ฅผ sensor ๋กœ ๋“ฑ๋กํ•˜์—ฌ ํ•ด๋‹น DAG๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด, ์ด์–ด์ ธ์•ผํ•  ํ›„์†์ž‘์—…์„ timedelta๋งŒํผ์˜ ์ฐจ์ด๋ฅผ ๋‘๊ณ  ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ์ ์œผ๋กœ Sensor ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” DAG ์˜ interval๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ธํ„ฐ๋ฒŒ์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ, Sensor๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ณ„๋„์˜ schedule์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Background#

  • ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ๋ฐ์ดํ„ฐ(๋ฒ ์ด์Šค)์˜ ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ฒ˜๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

    • ์ด ๊ฒฝ์šฐ ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์ •์ œ์ž‘์—…์˜ ์™„๋ฃŒ ์ดํ›„์— ์ด์–ด์ ธ์•ผ ํ•  ์ผ๋“ค์ด ๋งŽ๊ฒŒ๋Š” ์ˆ˜์‹ญ๊ฐœ ์ด์ƒ์ด๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

  • ์ด๋ ‡๊ฒŒ ๋งŽ์€ ์ž‘์—…๋“ค์ด ๋‹จ์ˆœํžˆ ์ •๊ธฐ์ ์ธ schedule ๋กœ ์Šค์ผ€์ค„๋ง ํ•œ๋‹ค๋ฉด, ๋ฐ์ดํ„ฐ ์ง€์—ฐ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ž์› ๋ถ€์กฑ๋“ฑ์˜ ์ด์œ ๋กœ ๋ฐ€๋ฆฌ๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋ชจ๋“  ์ž‘์—…๋“ค์ด ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ๋ฐ€๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Effect#

  1. ์„ ์ˆ˜ ์ž‘์—…์˜ ์ง€์—ฐ์ด๋‚˜ ์‹คํŒจ์‹œ ๋ชจ๋“  ํ›„์† ์ž‘์—…์„ ์ˆ˜๋™์œผ๋กœ ์žฌ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•œ๋‹ค๋ฉด, ์žฌ์ฒ˜๋ฆฌ์— ์˜ํ•œ ๋ถ€ํ•˜๊ฐ€ ์ปค์ง€๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    • (๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ์žฌ์ฒ˜๋ฆฌ trigger, ์ค‘๋ณต๋œ ์žฌ์ฒ˜๋ฆฌ ๋“ฑ) ์ด๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ  graceful ํ•˜๊ฒŒ ์ž‘์—…์˜ ํ๋ฆ„์ด ์ด์–ด์งˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

  2. airflow cluster ๋‚ด์—์„œ DAG ๋“ค ์‚ฌ์ด์˜ ์„ ์ˆ˜๊ด€๊ณ„์™€ ์˜ํ–ฅ๋„์˜ ํŒŒ์•…์ด ์„ ์–ธ์ ์œผ๋กœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  3. 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#

  1. ๊ฐ™์€ ์‹œ๊ฐ„์— ์ง‘์ค‘์ ์ธ ์ž์› ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด starvation์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ๋ฆฌ์†Œ์Šคํ’€์˜ ์ž์›์„ skew ์—†์ด ๊ณ ๋ฅด๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. + ๋ฆฌ์†Œ์Šค ํ’€์˜ ์ „์ฒด utilization ์„ ๊ฑด๊ฐ•ํ•˜๊ฒŒ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. airflow ์˜ DAG ๋Š” schedule ์‹์„ ์„ ์–ธ์ ์œผ๋กœ ์ฝ”๋“œ์— ์ผ๊ธฐ ๋•Œ๋ฌธ์— ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž ์ž…์žฅ์—์„œ DAG์˜ ์„ ์–ธ๊ณผ Operator ์˜ ์‚ฌ์šฉ์„ ๋ณด๊ณ  ์‚ฌ์ „์—/์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.