Windows 10์— Apache Airflow ์„ค์น˜ ๊ฒฝํ—˜

์„œ๋ฌธ: ์šด๋ช…์˜ ์˜์ง€์— ๋”ฐ๋ผ ํ•™์ˆ  ๊ณผํ•™(์˜ํ•™)์˜ ์„ธ๊ณ„์—์„œ ์ •๋ณด ๊ธฐ์ˆ ์˜ ์„ธ๊ณ„์— ๋“ค์–ด์„ฐ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ณณ์—์„œ๋Š” ์‹คํ—˜ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•๋ก ๊ณผ ์‹คํ—˜ ๋ฐ์ดํ„ฐ ๋ถ„์„ ์ „๋žต์— ๋Œ€ํ•œ ์ง€์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ, ๋‚˜์—๊ฒŒ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ  ์Šคํƒ. ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์„ ์ตํžˆ๋Š” ๊ณผ์ •์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์–ด๋ ค์›€์— ์ง๋ฉดํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ์ง€๊ธˆ๊นŒ์ง€๋Š” ์ด๋ฅผ ๊ทน๋ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด ๊ฒŒ์‹œ๋ฌผ์€ ์ด์ œ ๋ง‰ Apache ํ”„๋กœ์ ํŠธ ์ž‘์—…์„ ์‹œ์ž‘ํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์š”์ ์€. ํƒ์›”ํ•œ ์กฐ Yuri Emelyanov๋Š” ๋ถ„์„ ์ ˆ์ฐจ ์ž๋™ํ™” ๋ถ„์•ผ์—์„œ Apache Airflow์˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋ฉด์„œ ์ œ์•ˆ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ธํŠธ๋ฅผ ์ž‘์—…์— ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง Apache Airflow์— ์ „ํ˜€ ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์€ ๊ฐ„๋‹จํ•œ ๊ฐœ์š”์— ๊ด€์‹ฌ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ ๊ตญ๋ฆฝ์ค‘์•™๋„์„œ๊ด€ ํ™ˆํŽ˜์ด์ง€์—์„œ N. E. ๋ฐ”์šฐ๋งŒ.

Windows ํ™˜๊ฒฝ์—์„œ๋Š” Airflow๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ฐ˜์ ์ธ ์ง€์นจ์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฏ€๋กœ ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์‹ญ์‹œ์˜ค. ๋„์ปค ์ œ ๊ฒฝ์šฐ์—๋Š” ์ค‘๋ณต๋  ๊ฒƒ ๊ฐ™์•„์„œ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์„ ์ฐพ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ๋‚˜๋Š” ์ด ๊ธธ์„ ์ฒ˜์Œ ๋ฐŸ์€ ์‚ฌ๋žŒ์ด ์•„๋‹ˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ›Œ๋ฅญํ•œ ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋น„๋””์˜ค ์ง€์นจ Docker๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Windows 10์— Apache Airflow๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ• ๊ทธ๋Ÿฌ๋‚˜ ์ข…์ข… ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ถŒ์žฅ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅผ ๋•Œ ์–ด๋ ค์›€์ด ๋ฐœ์ƒํ•˜๋ฉฐ ์ด๋Š” ๋‚˜์—๊ฒŒ๋งŒ ํ•ด๋‹น๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ €๋Š” Apache Airflow๋ฅผ ์„ค์น˜ํ•œ ๊ฒฝํ—˜์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋ˆ„๊ตฐ๊ฐ€์˜ ์‹œ๊ฐ„์„ ์กฐ๊ธˆ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง€์นจ์˜ ๋‹จ๊ณ„๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค(์Šคํฌ์ผ๋Ÿฌ - 5๋‹จ๊ณ„์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค).

1. Linux ๋ฐฐํฌํŒ์˜ ํ›„์† ์„ค์น˜๋ฅผ ์œ„ํ•ด Linux์šฉ Windows ํ•˜์œ„ ์‹œ์Šคํ…œ ์„ค์น˜

๊ทธ๋“ค์ด ๋งํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ด๊ฒƒ์€ ๊ฐ€์žฅ ์ž‘์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ œ์–ดํŒ โ†’ ํ”„๋กœ๊ทธ๋žจ โ†’ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ๊ธฐ๋Šฅ โ†’ Windows ๊ธฐ๋Šฅ ์ผœ๊ธฐ ๋˜๋Š” ๋„๊ธฐ โ†’ Linux์šฉ Windows ํ•˜์œ„ ์‹œ์Šคํ…œ

2. ์›ํ•˜๋Š” Linux ๋ฐฐํฌํŒ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ–ˆ๋‹ค Ubuntu.

3. pip ์„ค์น˜ ๋ฐ ์—…๋ฐ์ดํŠธ

sudo apt-get install software-properties-common
sudo apt-add-repository universe
sudo apt-get update
sudo apt-get install python-pip

4. ์•„ํŒŒ์น˜ ์—์–ดํ”Œ๋กœ์šฐ ์„ค์น˜

export SLUGIFY_USES_TEXT_UNIDECODE=yes
pip install apache-airflow

5. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™”

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ๋‚˜์˜ ์ž‘์€ ์–ด๋ ค์›€์ด ์‹œ์ž‘๋œ ๊ณณ์ž…๋‹ˆ๋‹ค. ์ง€์นจ์— ๋”ฐ๋ผ ๋ช…๋ น์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. airflow initdb ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋Š˜ ๋‹ต์žฅ์„ ๋ฐ›์•˜์–ด์š”. airflow: command not found. Apache Airflow๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋™์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ ํ•„์š”ํ•œ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ฒƒ์ด ๋…ผ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์žˆ์–ด์•ผ ํ•  ์œ„์น˜์— ์žˆ๋Š”์ง€ ํ™•์ธํ•œ ํ›„ airflow ํŒŒ์ผ์˜ ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค(๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•จ). ะŸะพะปะฝั‹ะน/ะฟัƒั‚ัŒ/ะดะพ/ั„ะฐะนะปะฐ/airflow initdb). ํ•˜์ง€๋งŒ ๊ธฐ์ ์€ ์ผ์–ด๋‚˜์ง€ ์•Š์•˜๊ณ  ๋Œ€๋‹ต์€ ๊ฐ™์•˜์–ด์š” airflow: command not found. ํŒŒ์ผ์˜ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค(./.local/bin/airflow initdb), ์ด๋กœ ์ธํ•ด ์ƒˆ๋กœ์šด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ModuleNotFoundError: No module named json'๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—…๋ฐ์ดํŠธ๋กœ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ ์ˆ˜๋‹จ (๋‚ด ๊ฒฝ์šฐ์—๋Š” ๋ฒ„์ „ 0.15.4๊นŒ์ง€):

pip install werkzeug==0.15.4

Werkzeug์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

์ด ๊ฐ„๋‹จํ•œ ์กฐ์ž‘ ํ›„ ๋ช…๋ น ./.local/bin/airflow initdb ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

6. Airflow ์„œ๋ฒ„ ์‹คํ–‰

์ด๊ฒƒ์€ ๊ณต๊ธฐ ํ๋ฆ„์— ์ ‘๊ทผํ•˜๋Š” ๋ฐ ๋”ฐ๋ฅธ ์–ด๋ ค์›€์˜ ๋์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ช…๋ น ์‹คํ–‰ ./.local/bin/airflow webserver -p 8080 ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค No such file or directory. ์•„๋งˆ๋„ ์ˆ™๋ จ๋œ Ubuntu ์‚ฌ์šฉ์ž๋Š” ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•  ๋•Œ ์ด๋Ÿฌํ•œ ์–ด๋ ค์›€์„ ์ฆ‰์‹œ ๊ทน๋ณตํ•˜๋ ค๊ณ  ์‹œ๋„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. export PATH=$PATH:~/.local/bin/ (์ฆ‰, ๊ธฐ์กด PATH ์‹คํ–‰ ๊ฐ€๋Šฅ ๊ฒ€์ƒ‰ ๊ฒฝ๋กœ์— /.local/bin/์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.) ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒŒ์‹œ๋ฌผ์€ ์ฃผ๋กœ Windows์—์„œ ์ž‘์—…ํ•˜๊ณ  ์ด ์†”๋ฃจ์…˜์ด ๋ช…๋ฐฑํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์œ„์—์„œ ์„ค๋ช…ํ•œ ์กฐ์ž‘ ํ›„ ๋ช…๋ น ./.local/bin/airflow webserver -p 8080 ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

7.URL: ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ: 8080 /

์ด์ „ ๋‹จ๊ณ„์—์„œ ๋ชจ๋“  ๊ฒƒ์ด ์ˆœ์กฐ๋กญ๊ฒŒ ์ง„ํ–‰๋˜์—ˆ๋‹ค๋ฉด ์ด์ œ ๋ถ„์„ ์ •์ ์„ ์ •๋ณตํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Windows 10์— Apache Airflow๋ฅผ ์„ค์น˜ํ•  ๋•Œ ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒฝํ—˜์ด ์ดˆ๋ณด ์‚ฌ์šฉ์ž์—๊ฒŒ ์œ ์šฉํ•˜๊ณ  ์ตœ์‹  ๋ถ„์„ ๋„๊ตฌ ์„ธ๊ณ„๋กœ์˜ ์ง„์ž… ์†๋„๋ฅผ ๋†’์ด๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋‹ค์Œ๋ฒˆ์—๋Š” ์ฃผ์ œ๋ฅผ ์ด์–ด๊ฐ€๋ฉฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‚ฌ์šฉ์ž ํ–‰๋™ ๋ถ„์„ ๋ถ„์•ผ์—์„œ Apache Airflow๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝํ—˜์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€