728x90
반응형

airflow db 구성

airflow 에서 사용할 DB 를 구성해준다.
아래와 같이 테이블을 생성해주고 유저를 생성하고 권한 설정을 해준다.

CREATE DATABASE airflow CHARACTER SET UTF8mb3 COLLATE utf8_general_ci;
CREATE USER 'airflow'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON airflow.* TO 'airflow' @localhost;
CREATE USER 'airflow'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON airflow.* To 'airflow'@'%';
flush privileges;

 

파이썬 가상 환경에서 airflow 설치하기

1. 파이썬 가상 환경 생성

파이썬 가상 환경을 생성해준다.

virtualenv [가상환경 이름]

 

2. 가상환경 접속

가상 환경으로 접속한다.

source [가상환경 이름]/bin/activate

 

3. apache airflow 설치

apache-airflow 설치

pip install apache-airflow

 

 

4. airflow db init

airflow db 를 초기 설정을 해준다.
airflow 는 기본적으로 sqlite 를 사용한다고 한다.
db init 을 하게 되면 내 노트북의 home 디렉토리에 airflow 디렉토리가 생성된다.

airflow db init

홈 디렉토리의 airflow 내의 airflow.cfg 파일을 아래와 같이 변경해주었다.
기본으로 적용되는 sqlite 가 아닌 mysql db 로 설정해보았다.

# DAG 업데이트 시간 조정하기 (UI), 이 시간을 0으로 둘 경우 아주 많은 CPU를 사용하게 된다.
min_file_process_interval = 60
dag_dir_list_interval = 30

# 데이터베이스 연결하기
sql_alchemy_conn = mysql://airflow:1234@127.0.0.1:3306/airflow?charset=utf8

# Executor 설정하기
# SequentialExecutor(Default)를 사용하면 한 번에 하나의 작업만 처리할 수 있다.
executor = LocalExecutor

mysql 로 변경하고 적용하니 다음과 같은 에러가 발생했다.

(airflow)  ✘ jaynam@MacBook-Pro  ~/workspace/airflow/airflow  airflow webserver --port 8080
Traceback (most recent call last):
  File "/Users/jaynam/workspace/airflow/airflow/bin/airflow", line 5, in <module>
    from airflow.__main__ import main
  File "/Users/jaynam/workspace/airflow/airflow/lib/python3.8/site-packages/airflow/__init__.py", line 46, in <module>
    settings.initialize()
  File "/Users/jaynam/workspace/airflow/airflow/lib/python3.8/site-packages/airflow/settings.py", line 573, in initialize
    configure_orm()
  File "/Users/jaynam/workspace/airflow/airflow/lib/python3.8/site-packages/airflow/settings.py", line 276, in configure_orm
    engine = create_engine(SQL_ALCHEMY_CONN, connect_args=connect_args, **engine_args)
  File "<string>", line 2, in create_engine
  File "/Users/jaynam/workspace/airflow/airflow/lib/python3.8/site-packages/sqlalchemy/util/deprecations.py", line 309, in warned
    return fn(*args, **kwargs)
  File "/Users/jaynam/workspace/airflow/airflow/lib/python3.8/site-packages/sqlalchemy/engine/create.py", line 548, in create_engine
    dbapi = dialect_cls.dbapi(**dbapi_args)
  File "/Users/jaynam/workspace/airflow/airflow/lib/python3.8/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 163, in dbapi
    return __import__("MySQLdb")
ModuleNotFoundError: No module named 'MySQLdb'

문서를 찾아보니 mariaDB 는 지원을 하지 않는다고 한다. ㅠㅠ
그래서 그냥 sqlite 를 사용하는 걸로! ㅎㅎ.. airflow.cfg 파일을 원래대로 돌려주었다.

https://airflow.apache.org/docs/apache-airflow/stable/howto/set-up-database.html

 

Set up a Database Backend — Airflow Documentation

 

airflow.apache.org

 

5. airflow 계정 생성

# 계정 생성 명령어 (\ 앞에 띄어쓰기 있어야함)
$ airflow users create \ 
> --username {Login_ID} \
> --firstname {First_NAME} \ 
> --lastname {Last_NAME} \
> --role Admin \                        # 해당 부분은 고정
> --password {Password} \
> --email {Email}

# 한줄 명령어
$ airflow users create --username {Login_ID} --firstname {First_NAME} --lastname {Last_NAME} --role Admin --password {Password} --email {Email}

 

 

6. airflow webserver 실행

airflow webserver --port 8080

 

7. airflow 스케줄러 실행

airflow scheduler

 

이렇게 local 에 설치 완료!

이제 사용해보면서 익숙해지면 될 것 같다.

 

 

- 참고 사이트 - 

https://data-engineer-tech.tistory.com/30

 

[Airflow] 에어플로우 시작하기: 개념 및 설치

개요 Airflow는 복잡한 워크플로우를 프로그래밍 방식으로 작성해서, 스케줄링하고 모니터링할 수 있는 플랫폼이다. 데이터 파이프라인을 이루고 있는 ETL 스크립트들을 스케줄링 할 때 crontab, clou

data-engineer-tech.tistory.com

https://velog.io/@insutance/Airflow-Airflow-간단하게-설치하기

 

Airflow 간단하게 설치하기

Airflow 를 로컬에서 간단하게 설치하고 Webserver 까지 띄어보자.

velog.io

 

728x90
반응형
복사했습니다!