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 |