일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MySQL
- 데이터분석
- SQL
- Oracle
- SUM
- pandas
- PostgreSQL
- Limit
- join
- TRUNCATE
- 전처리
- matplotlib
- 결측값
- 그로스해킹
- SQLite
- 데이터시각화
- 파이썬
- 머신러닝
- mysql :=
- having
- 다중 JOIN
- hackerrank
- 프로그래머스
- not in
- airflow 설치
- GROUPBY
- Round
- solvesql
- 데이터리안 웨비나
- seaborn
- Today
- Total
Milky's note
[Airflow] 설치 (by.GCP 환경) 본문
GCP에 Airflow를 설치하려면 당연히 인스턴스가 있어야 한다.
혹시나 인스턴스 생성이 안되어 있다면 이전 게시글을 참조하면 된다.
https://milkyspace.tistory.com/125
1. 사전 작업
GCP에 Airflow를 설치하기 전에 먼저 해주어야 할 작업이 있다.
계정 생성과 Python을 설치해 주어야 한다.
Service를 사용하지 않으면 계정은 굳이 만들지 않아도 되긴 하지만 나는 Service를 만들어서 띄우기 위해 계정을 생성하려고 한다.
- Airflow 계정 생성
Airflow 계정을 생성하고 비밀번호를 설정해주었다.
sudo groupadd airflow
sudo useradd -m -d /home/airflow -g airflow airflow
sudo passwd airflow
- Python, pip 설치
Python과 이후 라이브러리들을 쉽게 받기 위해 pip도 함께 설치해준다.
그런데 새로 생성한 계정에 sudo 권한이 없어서 먼저 sudo 추가를 해준다.
Python, pip 설치 및 버전 확인을 해준다.
위에서 생성한 airflow 계정으로 설치를 하는게 맞는데 계정 로그인을 다시 안해서.. root 권한으로 설치한 스크린샷으로 대체하였다.. ㅎ
추가로 이후 airflow dag에서 사용할 라이브러리들도 미리 설치하였다.
pip install google-analytics-data
pip install pandas
pip install Python-dateutil
pip install google-cloud-bigquery
....
2. Airflow 설치
Airflow에 공식 가이드 문서가 있어서 이 docs를 참조해서 설치하였다.
https://airflow.apache.org/docs/apache-airflow/stable/start.html
airflow@airflow-server:~# echo 'export AIRFLOW_HOME=~/airflow' >> ~/.bash_profile
airflow@airflow-server:~# source ~/.bash_profile
airflow@airflow-server:~# AIRFLOW_VERSION=2.9.1
airflow@airflow-server:~# PYTHON_VERSION="$(PYTHON3 --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
airflow@airflow-server:~# CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
airflow@airflow-server:~# sudo pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL} "
airflow@airflow-server:~# airflow standalone
설치 당시(2024.05) 최신 버전이었던 2.9.1을 설치해주었다.
맨 밑에 airflow standalone 명령어를 입력하면,
Airflow는 $AIRFLOW_HOME폴더를 생성하고 기본 값으로 "airflow.cfg" 파일을 생성하여 빠르게 작업할 수 있다.
환경 변수를 사용하여 기본 값을 재정의 할 수 있게 된다. 또한 airflow 서버가 기동된다.
성공적으로 설치를 진행했다면, Listening 정보, username, password 를 확인할 수 있다.
위에서 기동된 airflow에 접속을 해보려고 하는데 맨 처음 GCP 인스턴스를 생성했으면 아무런 방화벽 정책이 적용되어 있지 않을 것이다. 그래서 방화벽 규칙 추가부터 해주어야 한다.
[VPC 네트워크] → [방화벽]을 클릭해준다.
방화벽 규칙 만들기를 클릭해주고 아래처럼 airflow default port인 8080을 허용해준다.
허용을 해주고 서버의 IP(혹은 127.0.0.1 혹은 localhost):8080으로 접속하면 아래처럼 airflow 로그인 화면이 보일 것이다. 여기서 위에서 알려준 계정(admin)으로 접속을 하면 성공적으로 설치된 것이다.
일단 설치는 완료되었지만 추가로 작업해주어야 할 사항이 있다.
💡 airflow의 default db는 sqlite이다.
sqlite는 task 병렬 처리가 되지 않아서 싱글 작업만 할 경우에는 default db를 사용해도 무관하지만
내가 개발한 파이프라인에는 task들이 병렬로 수행해야 하는 로직이 있다.
이러한 경우에 airflow의 db를 MySQL 이나 PostgreSQL로 변경해주어야 한다.
그래서 airflow가 설치된 서버에 MySQL 을 설치하고 airflow의 config 파일 변경 작업이 필요하다.
MySQL 설치부터 환경 설정은 다음 게시글에서 작성하려고 한다.
'DevOps > Airflow' 카테고리의 다른 글
[Airflow] GCP 내부 IP로 Airflow UI 접속하기 (3) | 2024.11.05 |
---|---|
[Airflow] Airflow db 변경 (0) | 2024.08.23 |
[Airflow] Catch up 설정 (기존 수행 내역 삭제) (0) | 2023.06.15 |