[์ค์น ํ๊ฒฝ]
Mac OS M1
Docker version 25.0.3
01. docker-compose.yaml ํ์ผ์ fetch ๋ฐ๊ธฐ
airflow docker install ๊ฒ์
๋์ปค๋ก airflow๋ฅผ ์ค์นํ๋ ๊ฐ์ด๋ ๋ฌธ์
https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html
docker compose๋ ํ ๊ฐ ์ด์์ ์ปจํ ์ด๋๋ฅผ ๋ค๋ฃจ๊ฒ ๋ ๋
์ปจํ ์ด๋์ ๋ํ ์ค์ ๋ด์ฉ์ docker-compose.yaml ์คํฌ๋ฆฝํธ ํ๋๋ก ๊ด๋ฆฌํ๋ค.
docker-compose.yaml ํ์ผ์ fetch ๋ฐ๋๋ค.
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.8.3/docker-compose.yaml'
02. Airflow ์ฌ์ฉ์ ๊ถํ ์ค์ ํ๊ธฐ
๋๋ ํ ๋ฆฌ ๋ง๋ค๊ธฐ
mkdir -p ./dags ./logs ./plugins ./config
mkdir ๋ช ๋ น์ผ๋ก dags, logs, plugins, config ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ค๋ค.
echo๋ print์ ๊ฐ์ด ํ๋ฉด์ ์ถ๋ ฅํ๋ ๋ช ๋ น์ด์ด๋ค.
"--" > .env๋ ์ถ๋ ฅ ๋ด์ฉ์ env ํ์ผ ์์ ๋ฃ์ผ๋ผ๋ ์๋ฏธ์ด๋ค.
echo -e "AIRFLOW_UID=$(id -u)" > .env
๋ช ๋ น์ด๋ฅผ ์คํํ๊ณ ํ์ผ ๋ชฉ๋ก์ ๋ค์ ์กฐํํ๋ฉด .env ํ์ผ์ด ์์ฑ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
.env ํ์ผ ๋ด์ฉ์ ๋ณด๋ฉด AIRFLOW_UID๊ฐ ์ ํ์๋ค.
03. Database ์ด๊ธฐํ
๋ชจ๋ ์ด์ ์ฒด์ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ์ ์คํํ๊ณ ์ฒซ ๋ฒ์งธ ์ฌ์ฉ์ ๊ณ์ ์ ๋ง๋ค์ด์ผ ํ๋ค.
์๋ ๋ช ๋ น์ด๋ก airflow ์๋น์ค๋ฅผ ์ค์นํ๋ค.
docker compose up airflow-init
์๋ฌ ์์ด ์ค์น ์๋ฃ
04. Airflow ์คํ
airflow๋ฅผ ์คํ์์ผ ์ค๋ค.
docker compose up
์๋น์ค๊ฐ ์ ์ฌ๋ผ์๋์ง ํ์ธํ๊ธฐ ์ํด์ ๋ ๋ฒ์งธ ํฐ๋ฏธ๋์ ์ด๊ณ ์์ ์ ํด์ผ ํ๋ค.
ํ์ฌ ์ด๋ ค์๋ ํฐ๋ฏธ๋์ ๋ซ์ผ๋ฉด ์๋น์ค๊ฐ ์ข ๋ฃ๋๋ค.
๋๋ฒ์ฌ ํฐ๋ฏธ๋์ ์ด๊ณ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ airflow๋ฅผ ๋์ฐ๋๋ฐ ํ์ํ ์ปจํ ์ด๋ ๋ฆฌ์คํธ๋ฅผ ํ์ธํ๋ค.
docker ps
airflow๋ฅผ ๋์ฐ๋๋ฐ scheduler, worker, triggerer, webserver, redis, postgres
์ด 6๊ฐ์ ์ปจํ ์ด๋๊ฐ ์ฌ๋ผ์จ ๊ฒ์ ๋ณผ ์ ์๋ค.
airflow ์ด๋ฏธ์ง๋ฅผ ํตํด ์ฌ๋ผ์จ ์ปจํ ์ด๋ : scheduler, worker, triggerer, webserver
redis ์ด๋ฏธ์ง๋ฅผ ํตํด ์ฌ๋ผ์จ ์ปจํ ์ด๋ : redis
postgres ์ด๋ฏธ์ง๋ฅผ ํตํด ์ฌ๋ผ์จ ์ปจํ ์ด๋ : postgres
๋์ปค์์ ์ฌ์ฉํ๋ ์ด๋ฏธ์ง์ ์ด๋ฆ์ [์ ์ฅ์์ด๋ฆ]/[์ด๋ฏธ์ง์ด๋ฆ]:[ํ๊ทธ]๋ก ๊ตฌ์ฑ๋๋ค.
์ ์ฅ์ ์ด๋ฆ์ ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋ ์ฅ์์ด๋ค.
์ด๋ฏธ์ง ์ด๋ฆ์ ํด๋น ์ด๋ฏธ์ง๊ฐ ์ด๋ค ์ญํ ์ธ์ง๋ฅผ ๋ํ๋ธ๋ค.
ํ๊ทธ๋ ์ด๋ฏธ์ง์ ๋ฒ์ ์ ๋ํ๋ธ๋ค. ์๋ตํ๋ฉด latest๋ก ์ธ์ํ๋ค.
05. Airflow ์๋น์ค ์ ์
http://localhost:8080/ ์ผ๋ก ์ ์ํ๋ค.
Uasername : airflow
Password : airflow
์ ์ํ๋ฉด ์ํ๋ก ๋ง๋ค์ด์ ธ ์ฌ๋ผ์์๋ DAG๋ฅผ ๋ณผ ์ ์๋ค.
example_bash_operator์ ๋ค์ด๊ฐ ๋ณธ๋ค.
Grid ํญ์ ์ํ์ด๋ ฅ์ ๋ณด์ฌ์ฃผ๋ ํญ์ด๋ค.
Graph ํญ์์๋ ํด๋น DAG์ ๊ตฌ์ฑํ๊ณ ์๋ Task๋ค์ ๋ณด์ฌ์ค๋ค.
Task๋ค์ ์ฐ๊ฒฐ๊ด๊ณ์ ๊ฐ Task๋ค์ ์ํ๋ฅผ ํ์ธํ ์ ์๋ค.
Code ํญ์ ํด๋น DAG์ ๊ตฌ์ฑํ๊ณ ์๋ ํ์ด์ฌ ์ฝ๋๋ฅผ ๋ณผ ์ ์๋ค.
'๐ ์ด๊ฒ์ ๊ฒ > etc.' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Node.js] node.js ๋ฒ์ ์ ๋ฐ์ดํธ ํ๋ ๋ฐฉ๋ฒ (0) | 2024.05.05 |
---|---|
[MacOS] ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ฑ - m1์ Airflow library ์ค์น (1) | 2024.03.19 |
[MacOS] ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ฑ - m1์ Python ์ค์น & VSCode Python ๊ฐ์ํ๊ฒฝ ์ค์ (0) | 2024.03.17 |
[MacOS] ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ฑ - m1์ ๋์ปค(Docker) ์ค์นํ๊ธฐ (0) | 2024.03.16 |
[DBeaver] SQL ๋๋ฌธ์ ์๋ ๋ณํ ์ค์ (0) | 2024.02.20 |