본문 바로가기
DW&BI/Airflow

3. Airflow 설치

by 조훙 2020. 10. 5.

Airflow Architecture

Airflow는 아래의 그림처럼 여러 요소의 조합으로 동작한다.

  • Airflow Web Server
  • Airflow Scheduler
  • Airflow Executor
  • Queue Service(ex. Rabbit MQ)
  • Airflow Meta Store (ex. Mysql, Postgre)

Airflow Architecture

Airflow Standalone 설치

Airflow를 Mac에서 설치 할 경우 Standalone 모드로 설치 할 수 있다. 내부 Meta Store의 경우도 sqlite를 통해 사용하는 등, 테스트 목적으로 사용할 수 있다.

 

1. Profile에 Airflow 설치 디렉터리 지정

export AIRFLOW_HOME=~/airflow

2. pip 명령을 통해 Airflow 설치 수행

pip install apache-airflow

3. 필요에 따라 서브 패키지 추가 설치

LINK : airflow.apache.org/docs/stable/installation.htm

페이지 내의 Extra Package 내용을 확인하여 설치 진행

# 설치 예시
pip install apache-airflow[celery,mysql,kerberos] 

4. Airflow MetaStore 초기화 진행

airflow initdb

5. Airflow webserver 시작

airflow webserver -p 8080

6. Airflow scheduler 실행

airflow scheduler

Airflow Multiserver 설치

Airflow의 경우 Master Node, Worker Node, MetaStore, Queue 등을 구성하여 Multiserver를 이용할 수 있다.

Standalone 의 경우 MetaStore를 sqlite를 통해 사용하는데, 동시성의 문제로 여러 Job을 동시에 수행 할 수 없다. 이를 해결하기 위해서는 별도의 MetaStore를 구성하여 연결해야 하는데, Airflow의 경우 Mysql, Postgre 등의 오픈소스 DB를 지원하고 있다. 사용자가 익숙한 환경에 맞게 설치하여 사용하면 된다. 

 Executor의 경우 CeleryExecutor를 사용하며, 이를 위한 Queue는 RabbitMQ 또는 Redis를 사용 할 수 있다. 이부분도 사용자의 선택에 따라 설치 및 설정하여 사용 할 수 있다.

 

1. Master, Worker Node에 사용할 Airflow를 설치 및 환경 설정

#기본으로 설치 하는 방식은 아래와 같다.
pip install apache-airflow
#celery 를 설치한다
pip install celery

#필요에 따라 전체 패키지를 설치 할 수도 있다.
#pip install apache-airflow[all]

#특정 모듈들을 설정하여 추가하기 위한 방식도 지원한다.
#pip install apache-airflow[mysql,redis,postgre,oracle,celery]

#환경변수에 $AIRFLOW_HOME을 설정하여 dag,config, log 등을 생성 할 수 있도록 한다.
echo 'AIRFLOW_HOME=/home/users/airflow_home' >> .bash_profile

2. MetaStore로 사용할 DBMS를 서버에 설치 한다.

(해당 내용은 Skip. 별도의 블로그를 통해 참고)

 

3. Queue로 사용할 서버에 Redis 또는 RabbitMQ 설치

(해당 내용은 Skip. 별도의 블로그를 통해 참고)

 

4. Airflow가 설치된 모든 서버에 airflow.cfg 파일을 설정에 맞게 설정한다.

vi $AIRFLOW\_HOME/airflow.cfg 
#executor는 CeleryExecutor 를 지정
executor = CeleryExecutor 

#MetaStore에 사용할 DBMS의 접속 정보 및 계정 정보 입력
sql_alchemy_conn = mysql+mysqldb://DB계정:패스워드@DB설치IP:DB설치PORT/db명 

#Broker로 사용 할 Queue 정보 설정 (현재는 RabbitMQ)
broker_url = amqp://user:password@QueueIP:5672/

#만약 Multiple RabbitMQ를 설정해서 사용하게 될 경우는 아래처럼 세팅 한다.
#broker_url = amqp://id;password@host1:5672;amqp://id;password@host2:5672

result_backend = db+mysql://id:password@DB설치IP:DB설치PORT/db명

#Timezone을 설정한다.
default_ui_timezone = Asia/Seoul

# airflow에서 사용되는 Sample을 로드 할 경우는 아래의 정보를 True로 변경
#Test 단계가 아닌 Staging/Production 단계에서는 해당 옵션을 False로 변경 해야 한다.
load_examples = False

5. 설치가 완료된 Airflow Master Node에서 MetaStore의 초기화 명령을 수행

airflow initdb

6. Master Node에서 Webserver, Scheduler를 실행

airflow webserver -p 8080
airflow scheduler

7. Worker Node에서 Worker를 실행

airflow worker

참고

 

 

'DW&BI > Airflow' 카테고리의 다른 글

2. Airflow 개념  (0) 2020.09.14
1. Airflow 소개  (0) 2020.09.10