Data Engineering/Airflow

[Airflow] Airflow 설치 및 실행하기

sangwonYoon 2023. 7. 25. 14:33

Airflow 등장 전 Batch Process 구축 방법

Batch Process란? 예약된 시간에 일괄적으로 처리하는 프로세스를 말한다.

 

Linux Crontab

OS에 의해 지정된 시간마다 명령어가 수행된다.

crontab -e를 입력하면 아래와 같은 에디터가 나온다.

 

이 에디터에 0 * * * * predict.py를 입력하면 매 시 0분에 predict.py가 실행된다.

크론 표현식

 

Linux Crontab의 문제점

  • 명령어를 수행하다가 오류가 발생한 경우, 재실행을 하거나 오류가 발생했다는 알람을 받을 수 없다.
  • 과거 실행 이력 및 실행 로그를 확인하기 어렵다.
  • 여러 파일을 실행하거나, 복잡한 파이프라인을 만들기 힘들다.

따라서 간단한 Batch Process를 처리하는데 Linux Crontab이 적합할 수 있으나, 정교한 스케줄링을 위해서는 부적절하다.

 

Airflow 설치 및 실행하기

Airflow는 python으로 워크플로우(workflow)를 작성하고, 스케줄링, 모니터링하는 플랫폼이다.

스케줄링 및 파이프라인 목록을 확인할 수 있는 웹 UI를 제공한다.

또한 실패 시 알람 및 재실행을 시도하거나 동시 실행할 워커 수를 지정하는 등의 다양한 기능을 갖고 있다.

 

Airflow 설치

pip install 'apache-airflow==2.2.3'

아래 내용들은 모두 Airflow 2.2.3 버전 기준이다.

 

Airflow 기본 디렉토리 경로 지정

# 환경변수 설정
vim ~/.zshrc # 또는 vim ~/.bashrc

# 가장 밑에 아래 코드 추가
# 현재 디렉토리 위치로 Airflow 기본 디렉토리 경로 지정
export AIRFLOW_HOME=Airflow_기본_디렉토리_경로

# 환경변수 적용
source ~/.zshrc  # 또는 source ~/.bashrc

 

Airflow에서 사용할 DB 초기화

airflow db init

여기서 만약 ImportError: cannot import name 'soft_unicode' from 'markupsafe’ 에러가 발생한다면, 아래 명령어를 통해 markupsafe의 2.0.1 버전을 설치하면 해결할 수 있다.

pip install markupsafe==2.0.1

 

DB를 초기화하면 다음과 같은 기본 파일들이 생성된 것을 확인할 수 있다.

>> ls -al
total 1384
drwxr-xr-x@  6 sangwon  staff     192  7 17 02:08 .
drwxr-xr-x@ 60 sangwon  staff    1920  7 17 02:06 ..
-rw-r--r--@  1 sangwon  staff   43865  7 17 02:08 airflow.cfg
-rw-r--r--@  1 sangwon  staff  643072  7 17 02:08 airflow.db
drwxr-xr-x@  3 sangwon  staff      96  7 17 02:08 logs
-rw-r--r--@  1 sangwon  staff    4695  7 17 02:08 webserver_config.py
  • airflow.db: 로컬에서 사용할 airflow 데이터베이스
  • airflow.cfg: airflow 환경설정이 담긴 파일

 

Airflow 웹 페이지에서 사용할 어드민 계정 생성

airflow users create \
--username 유저이름 \
--password 비밀번호 \
--firstname 이름 \
--lastname 성 \
--role [Admin, User, Op, Viewer, Public] \
--email 이메일

 

Airflow 웹 서버 실행

airflow webserver --port 8080

이제 http://localhost:8080에 접속하면 아래와 같은 화면을 확인할 수 있다.

위 화면에서 아까 생성한 계정으로 로그인하면 아래와 같은 대시보드를 확인할 수 있다.

'Data Engineering > Airflow' 카테고리의 다른 글

[Airflow] Airflow 아키텍처  (0) 2023.07.25
[Airflow] DAG 작성하기  (0) 2023.07.25