๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๐ŸŒฎ ๐Ÿ’ฌ
๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป/airflow

[Airflow] local์—์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‹œ์ž‘ํ•˜๊ธฐ

by ๋ฐ”์ฟ„๋ฆฌ 2024. 7. 30.

๊ฐœ์š”

airflow ๊ด€๋ จํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋กœ์ปฌํ•ด์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•˜๋ คํ•œ๋‹ค

์ง„ํ–‰

Step 1. ๊ฐ€์ƒ ํ™˜๊ฒฝ

ํ•„์ˆ˜ ์‚ฌํ•ญ์€ ์•„๋‹ˆ์ง€๋งŒ pip ๋ฒ„์ „์œผ๋กœ ํฌ๊ฒŒ ๊ณจ์น˜ ์•„ํ”„๊ณ  ์‹ถ์ง€ ์•Š๊ธฐ์— ๋ฌด์กฐ๊ฑด์ ์œผ๋กœ set up ํ•ด์ค€๋‹ค

# Create a virtual environment
python3 -m venv airflow-venv

# Activate the virtual environment
source airflow-venv/bin/activate

 

Step 2. Apache Airflow ์„ค์น˜

pip์„ ์ด์šฉํ•ด์„œ ์„ค์น˜ํ•ด์ค€๋‹ค.

AIRFLOW_VERSION=2.5.1
PYTHON_VERSION="$(python --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"

pip3 install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"

 

Step 3. Airflow Database ์ดˆ๊ธฐํ™”

Airflow ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™”๋Š” Airflow๊ฐ€ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•œ ํ•„์ˆ˜์ ์ธ ์ธํ”„๋ผ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ธฐ๋ณธ ๋‹จ๊ณ„๋‹ค.

์ดˆ๊ธฐํ™”๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, ๊ตฌ์„ฑ ๋ฐ ์ถ”์  ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜์—ฌ scheduler์™€ web interface๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•œ๋‹ค. ์ด ๋‹จ๊ณ„๋ฅผ ์ƒ๋žตํ•˜๋ฉด Airflow๋Š” ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค.

# Initialize the Airflow database
airflow db init

 

Step 4. Admin ๊ณ„์ • ์ถ”๊ฐ€

airflow ui์— ์ ‘๊ทผํ•  username, password๋ฅผ ์•„๋ž˜์—์„œ ์„ค์ •ํ•ด์ค€๋‹ค.

๋‚˜๋Š” admin, admin์œผ๋กœ ์„ค์ •ํ–ˆ๋‹ค. ์ˆ˜์ • ๊ฐ€๋Šฅํ•˜๋‹ค.

# Create an admin user
airflow users create \
    --username admin \
    --password admin \
    --firstname Admin \
    --lastname User \
    --role Admin \
    --email admin@example.com

 

Step 5. Airflow Web Server ์™€ Scheduler ์‹คํ–‰

์ฒซ๋ฒˆ์งธ ํ„ฐ๋ฏธ๋„์—์„œ web server๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค.

* web server๋Š” ์‚ฌ์šฉ์ž๊ฐ€ DAG ๋ฐ ์ž‘์—…์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ui๋ฅผ ์ œ๊ณตํ•˜๊ณ , airlow ์„ค์ • ๋ฐ ๊ตฌ์„ฑ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

# Start the web server
airflow webserver --port 8080

 

๋‘๋ฒˆ์งธ ํ„ฐ๋ฏธ๋„์—์„œ scheduler๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค.

* scheduler๋Š” ์ž‘์—…์˜ ์Šค์ผ€์ค„๋ง๊ณผ ์‹คํ–‰์„ ๋‹ด๋‹นํ•œ๋‹ค. DAG์— ์ •์˜๋œ ์ผ์ •์— ๋”ฐ๋ผ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ณ , ์ž‘์—… ๊ฐ„์˜ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ ์ ˆํ•œ ์ˆœ์„œ๋กœ ์‹คํ–‰ํ•˜๊ณ , ์ž‘์—… ์ƒํƒœ๋ฅผ ์ถ”์ ํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

# Start the scheduler
airflow scheduler

 

Step 6. Airflow Web ์ธํ„ฐํŽ˜์ด์Šค์— ์ ‘๊ทผ

 

web server ์‹คํ–‰์‹œํ‚ฌ ๋•Œ ์„ค์ •ํ•œ ํฌํŠธ 8080์œผ๋กœ ์ ‘๊ทผํ•˜๋ฉด ๋œ๋‹ค. http://localhost:8080

๊ทธ๋ฆฌ๊ณ  user ์ƒ์„ฑํ•  ๋•Œ ์„ค์ •ํ•œ username, password๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.