본문 바로가기

Apache Airflow

Apache Airflow 설치 방법 ( tar 파일로 설치 )

Apache airflow는 워크플로우 관리 시스템으로 데이터 처리, ETL 작업, 모델 학습 등을 포함한 데이터 파이프라인의 자동화를 가능하게 합니다. 파이썬으로 작성되어 있으며, 파이썬 코드를 통해 사용자 정의 작업을 작성할 수 있습니다.

Airflow의 핵심 개념 중 하나는 "DAG"  입니다. Directed Acyclic Graph ( DAG ) 는 작업의 순서를 정의하고 각 단계의 종속성을 나타냅니다. DAG를 사용하여 Airflow는 작업 스케줄링, 성공 또는 실패시 알림 및 재시도 등의 작업을 수행합니다.

 

설치 방법에 대해 알아보도록 하겠습니다.

우선 Apache Airflow를 설치하기 위해서는 Python이 설치되어 있어야 합니다.

 

1. Python 설치

- Python 3.6 이상의 버전이 필요합니다.

 

2. 필요한 라이브러리 설치

- cryptography

- psycopg2-binary

- mysql-connector-python

- apache-airflow[postgres,mysql,celery]

 

위 라이브러리들은 pip 명령어를 통해 쉽게 설치할 수 있습니다.

 

pip install cryptography psycopg2-binary mysql-connector-python apache-airflow[postgres,mysql,celery]

 

 

pip install 명령어를 실행하는 도중 위와 같이 오류가 생겼습니다. 이 오류는 mysqlclient 라이브러리를 설치할 때 발생하는 에러로 에러 메시지에서 보이듯이 mysql_config나 mariadb_config 명령어를 찾을 수 없다는 내용이 나옵니다.

 

 

Ubuntu 또는 Debian과 같은 apt 패키지 매니저를 사용하는 경우 다음과 같이 명령어를 입력하여 mysql_config를 설치할 수 있습니다.

 

sudo apt-get install libmysqlclient-dev

 

RedHat 또는 CentOS와 같은 yum 패키지 매니저를 사용하는 경우 다음과 같이 명령어를 입력하여 mysql_config를 설치할 수 있습니다.

 

sudo yum install mysql-devel

 

다른 패키지 매니저를 사용하는 경우 패키지 매니저에서 MySQL 또는 MariaDB의 개발용 라이브러리를 설치하면 됩니다.

 

 

 

pip로 설치를 하는 도중 위 오류가 또 생겼습니다. 이 오류는 pip가 현재 시스템에 설치된 패키지를 고려하지 않고 종속성을 해결하려고 할 때 발생하는 문제입니다. 즉, 시스템에 설치된 패키지와 pip로 설치하려는 패키지 간에 충돌이 발생하는 경우에 이러한 종속성 충돌 오류가 발생할 수 있습니다.

이 문제를 해결하기 위해서는 spyder 패키지의 버전을 업그레이드하거나, pyqt5pyqtwebengine 패키지의 버전을 업그레이드해야 할 수 있습니다.

 

pip install --upgrade pyqt5 pyqtwebengine

 

위의 명령어를 실행하여 pyqt5pyqtwebengine를 최신 버전으로 업그레이드해 보세요.

 

pip install --upgrade spyder

 

또는, 위 명령어를 통해 spyder 패키지를 최신으로 업그레이드 합니다.

 

 

3. Airflow 설치

Apache Airflow는 Python 패키지로 제공됩니다. 따라서, pip를 사용하여 쉽게 설치할 수 있습니다.

아래의 명령어를 실행하면, 현재 디렉토리에서 apache-airflow-2.5.3.tar.gz 파일을 다운로드하고 설치할 수 있습니다.

 

pip install apache-airflow-2.5.3.tar.gz

 

저는 서버에 설치한 anaconda의 pip를 기준으로 airflow를 설치했기 때문에, anaconda/bin/airflow 에 airflow 바이너리 파일이 생성되었습니다.

 

 

4. Airflow 초기화

Airflow를 사용하기 전 초기화 과정을 거쳐야 합니다. 이 과정에서 데이터베이스를 설정하고 초기 사용자를 만듭니다.

 

airflow db init
airflow users create --username admin --firstname FIRST_NAME --lastname LAST_NAME --email admin@example.com --password PASSWORD --role Admin

 

--username -> airflow에서 사용할 계정 명

--firstname -> 사용자의 이름

--lastname -> 사용자의 성

--email -> 사용자의 이메일 주소

--password -> airfliow에서 사용할 계정 비밀번호

--role -> 생성할 사용자의 역할을 설정합니다. ( Admin, User, Op )

Admin 은 모든 기능에 대한 액세스 권한을 가집니다.

User 는 특정 기능에 대한 액세스 권한을 가집니다.

Op 는 실행 및 모니터링과 같은 기능을 제한적으로 사용할 수 있는 액세스 권한을 가집니다.

 

 

user admin에 role이 admin 인 계정을 생성하였습니다. 성공적으로 생성되면 위 사진과 같이 결과가 출력되게 됩니다.

 

 

5. webserver 실행

 

airflow webserver

 

 

명령어를 실행했을 때, 위 사진과 같이 출력되면 정상적으로 airflow가 실행 된 것입니다.

airflow를 백그라운드에서 실행하려면 nohup 명령어를 사용하면 됩니다.

 

nohup airflow webserver > (로그경로)/airflow.log 2>&1 & ( stdout을 airflow.log에 출력 )
nohup airflow webserver > /dev/null 2>&1 & ( stdout을 무시하고 실행 )

 

stdout 출력을 기준으로 위 두 명령어 중 하나를 선택하여 실행하면 airflow가 백그라운드에서 실행될 것입니다.

 

 

 

 

실행 후 Airflow 웹 페이지에 접속하면 위 사진처럼 Airflow 메인페이지가 나오게 됩니다.