Professional Field

ETL : Airflow / DW(Snowflake) | AI : Python | BI : Tableau / Power BI

Engineer/Pipeline

[Pipeline] 파이프라인 Apache Airflow 설치방법

K_CY 2024. 7. 5. 16:50

먼저 운영체제가 Windows인지 Linux인지 Mac인지 OS 확인을 해야한다. 

 

나는 컴퓨터가 Windows이기 때문에 WSL을 이용하여 Airflow를 설치해보고자 한다. ( Docker방법은 추후 포스팅 )

 

먼저 Windows PowerShell을 관리자 권한으로 열어 해당 명령어를 실행한다.

(관리자 권한 미실행 시 db init 데이터베이스 초기화 오류발생)

wsl --install

 이는 리눅스 Ubuntn(우분투)를 사용하기 위해 WSL를 설치하는 과정이다.

이미 설치를 했기때문에 Ubuntu가 자동으로 실행됨. 

 

처음에는 아래화면과 같이 User ID와 PW를 생성해야한다.

초기모습

sudo apt install python3-venv

Ubuntu 가상환경venv 설치

python3 -m venv env

새 env 디렉토리 만들기 

- 문득 mkdir 명령어도 디렉토리를 생성하는 과정인데 차이가 무엇일까 생각을 해보았고, 해당 내용은 다음과 같다.

source env/bin/activate

가상환경 활성화

 

pip3 install apache-airflow

airflow 설치

 

pip install pendulum==2.1.0

나는 pendulum 라이브러리가 버전이 맞지 않아 오류가 나서 ver2.1.0으로 고정시켜주었다.

 

airflow db init

airflow Meta Database 초기화

 

 airflow users create -u admin -p admin -f k -l cy -r Admin -e test@co.kr

airflow 계정생성을 위한 설정이다. u : ID, p : PW, f : First Name, l : Last Name, r : Role, e : e-Mail 

(주의할점 Role 입력 시 소문자로 하면 오류납니다..)

 

airflow webserver --port 8080

마지막으로 airflow webserver 실행을 위해 port를 8080으로 맞추고 실행한다.

 

<실행결과> 위에 생성한 계정을 입력해주면 된다.

 

[ISSUE]

ID와 PW를 입력하였는데 아래 화면과 같이 서버를 찾을 수 없다는 문구가 나왔다.

로그인오류

 

확인해보니 서버의 방화벽이 내려가 있던 것 같아 Ubuntu 환경에서 방화벽을 설정했다.

(Ubuntu 관리자 비밀번호 필요)

sudo ufw status 방화벽 상태 확인
sudo ufw enable 방화벽 활성화
sudo ufw allow 8080/tcp 포트 8080 열기
airflow webserver -p 8080 웹서버 재시작 후 재로그인

 

접속 성공!

 

다만 위에 경고창이 거슬린다.

Do not use SQLite as metadata DB in production – it should only be used for dev/testing. We recommend using Postgres or MySQL. Click here for more information 이 에러 메시지는 현재 Apache Airflow의 메타데이터 데이터베이스로 SQLite를 사용하고 있으며, 이는 개발 및 테스트 환경에서만 적합하다는 경고입니다. 프로덕션 환경에서는 더 안정적이고 확장 가능한 데이터베이스 시스템인 PostgreSQL이나 MySQL을 사용하는 것 권장
Do not use the SequentialExecutor in production SequentialExecutor를 프로덕션 환경에서 사용하지 말라는 경고입니다. SequentialExecutor는 단일 스레드에서 작업을 처리하며, 한 번에 하나의 작업만 실행할 수 있습니다. 따라서 작은 테스트 환경이나 로컬 개발 환경에서는 유용할 수 있지만, 실제 운영 환경에서는 적합하지 않습니다.

 

위 3가지 오류에 대해서는 추후 실제 운영에 적용하며 해결하는 포스팅 작성 예정.