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
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
https://velog.io/@insutance/Airflow-Airflow-간단하게-설치하기
'데이터 엔지니어링 > Airflow' 카테고리의 다른 글
3. 공공데이터포털 데이터 전처리하기(2) (0) | 2023.01.02 |
---|---|
2. 공공데이터포털 데이터 전처리하기 (1) (0) | 2022.12.31 |
1. 공공데이터포털 데이터 가져오기 (0) | 2022.12.25 |
0. Airflow 데이터 파이프라인 만들어보기 (토이 프로젝트) (0) | 2022.12.25 |
[Error] airflow.exceptions.AirflowException: The webserver is already running under PID (0) | 2022.11.18 |