-
[무작정 따라하기] Linux(Ubuntu) 환경에서 Airflow 구축하기무작정 따라 하기 2020. 8. 27. 00:17
이번 포스팅에선 Linux(Ubuntu)에서 MySQL과 연동된 Airflow 환경을 구축해 보겠습니다.
다루는 내용
- Airflow 설치
- Airflow 연동을 위한 MySQL 설정
- Airflow 초기화
- Airflow Schedular 및 Webserver 실행
선행 내용
- python과 pip이 아직 세팅되어 있지 않다면, 아래 게시글을 참고하세요.
2020/01/04 - [무작정 따라 하기] - [무작정 따라 하기] Linux(Ubuntu)에서 Python 개발 환경 구축 (python3 설치, pip 설치)
- MySQL이 아직 세팅되어 있지 않다면, 아래 게시글을 참고하세요.
2020/01/08 - [무작정 따라 하기] - [무작정 따라 하기] Linux(Ubuntu)에서 MySQL 서버 환경 구축 및 MySQL 맛보기
실행 환경
OS : Ubuntu 18.04 LTS
1. Airflow 설치
- 우선 우분투 패키지 업데이트를 먼저 해줍니다.
(ubuntu)$ apt-get update
- pip를 통해 Airflow 패키지를 설치합니다.
(ubuntu)$ pip3 install apache-airflow
- 부가적으로 필요한 패키지를 설치합니다.
(ubuntu)$ pip3 install cryptography psycopg2-binary boto3 botocore
- 아래 명령어를 통해 설치를 확인합니다.
(ubuntu)$ pip3 list
2. MySQL 설정
더보기MySQL이 설치되어 있지 않다면 아래 글을 참고하세요.
2020/01/08 - [무작정 따라 하기] - [무작정 따라 하기] Linux(Ubuntu)에서 MySQL 서버 환경 구축 및 MySQL 맛보기
- MySQL에 Airflow를 위한 데이터베이스를 생성합니다.
(ubuntu)$ mysql -u root -p
- MySQL를 실행합니다.
mysql> create database [Database Name];
mysql> create database airflow;
- 생성된 데이터베이스를 확인합니다.
- airflow 데이터베이스에 계정을 생성합니다.
mysql> grant all privileges on [Database Name].* to '[ID]'@'[IP Address]' identified by '[Password]';
mysql> grant all privileges on airflow.* to 'airflow_user'@localhost identified by '1234';
- 추가된 계정 확인
mysql> USE mysql; SELECT Host, User, authentication_string FROM user;
3. Airflow 초기화
- Airflow 기본 디렉터리 생성 후, 이동합니다.
(ubuntu)$ mkdir /var/lib/airflow && cd /var/lib/airflow
- dags라는 디렉터리를 생성합니다.
(ubuntu)$ mkdir dags
- 환경변수를 설정합니다.
(ubuntu)$ export AIRFLOW_HOME=/var/lib/airflow
- 아래 명령어를 통해 초기화를 진행합니다.
(ubuntu)$ airflow initdb
위 과정이 끝나면 아래 사진처럼 몇몇 파일들이 생성됩니다.
- airflow.cfg를 수정하여 MySQL과 연결합니다.
(ubuntu)$ vim /var/lib/airflow/airflow.cfg
[core] ... executor = LocalExecutor ... sql_alchemy_conn = mysql://[ID]:[PASSWORD]@[IP]:[MySQL_PORT]/airflow ... load_examples = False
[core] ... executor = LocalExecutor ... sql_alchemy_conn = mysql://airflow_user:1234@localhost:3306/airflow ... load_examples = False
- Airflow에 MySQL을 연결하기 위해 필요한 패키지를 추가로 설치합니다.
(ubuntu)$ apt install libmysqlclient-dev -y
(ubuntu)$ pip3 install mysqlclient
- 아래 명령어를 통해 변경된 설정을 적용합니다.
(ubuntu)$ airflow initdb
[에러 다루기] Exception: Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql라는 에러가 발생한다면 아래 게시물을 참고하세요.
2020/08/27 - [버그 리포트] - [BugReport] Exception: Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql4. Airflow Scheduler & Webserver 실행하기
- Airflow Scheduler 실행
(ubuntu)$ airflow scheduler -D
- Airflow Webserver 실행 (새 터미널에서 실행)
(ubuntu)$ airflow webserver -p 8080 -D
'무작정 따라 하기' 카테고리의 다른 글
[무작정 따라 하기] Linux(Ubuntu)에서 MySQL 서버 환경 구축 및 MySQL 맛보기 (0) 2020.01.08 [무작정 따라 하기] Linux(Ubuntu)에서 Jupyer Notebook 서버 환경 구축 (0) 2020.01.04 [무작정 따라 하기] Linux(Ubuntu)에서 Python 개발 환경 구축 (python3 설치, pip 설치) (1) 2020.01.04 [무작정 따라 하기] Linux(Ubuntu) SSH 원격 접속 환경 구축 (feat. Docker container) (0) 2020.01.01 [무작정 따라 하기] Docker를 이용하여 Linux(Ubuntu) 실행 환경 구축 (0) 2019.12.30