0. 실행 환경
- Centos 7
- MySQL 5.7
1. 필요한 패키지 설치
1) MySQL 설치, Database 생성
# MySQL 접속
mysql --user={계정} --password={password} --host={host}
# database 생성
create database airflow;
# 유저에 airflowDB 권한 부여
grant all privileges on airflow.* to '{계정}'@'%';
2) 가상환경 생성 및 실행
# 가상환경 생성
python -m venv venv
# 가상환경 실행
source venv/bin/activate
3) airflow 설치
# pip upgrade
pip install --upgrade pip
# airflow 설치
pip install apache-airflow
# mysql 사용하기위해 설치
pip install mysqlclient
# DB 초기화 (Home Directory에 airflow 폴더 생성)
airflow db init
4) airflow.cfg 수정 (환경 설정 파일)
cd ~/airflow
vi airflow.cfg
# 아래내용 수정
dags_folder = {dag 디렉토리 위치}
default_timezone = Asia/Seoul
executor = LocalExecutor
sql_alchemy_conn =mysql://{계정}:{계정]@{host}:{port}/{database} # 뒤에서 이부분은 수정된다
load_examples = False
load_default_connections = False
default_ui_timezone = Asia/Seoul
catchup_by_default = False
5) 설정 파일 반영
airflow db init
이때 에러가 발생했다.
Using cached mysqlclient-2.0.0.tar.gz (87 kB)
Preparing metadata (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/var/tmp/pip-install-dq_69ga1/mysqlclient_ffb37203d53c4ad88f8a65ed4070eb21/setup.py'"'"'; __file__='"'"'/var/tmp/pip-install-dq_69ga1/mysqlclient_ffb37203d53c4ad88f8a65ed4070eb21/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /var/tmp/pip-pip-egg-info-_sphd1es
cwd: /var/tmp/pip-install-dq_69ga1/mysqlclient_ffb37203d53c4ad88f8a65ed4070eb21/
Complete output (12 lines):
/bin/sh: 1: mysql_config: not found
/bin/sh: 1: mariadb_config: not found
/bin/sh: 1: mysql_config: not found
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/var/tmp/pip-install-dq_69ga1/mysqlclient_ffb37203d53c4ad88f8a65ed4070eb21/setup.py", line 15, in <module>
metadata, options = get_config()
File "/var/tmp/pip-install-dq_69ga1/mysqlclient_ffb37203d53c4ad88f8a65ed4070eb21/setup_posix.py", line 65, in get_config
libs = mysql_config("libs")
File "/var/tmp/pip-install-dq_69ga1/mysqlclient_ffb37203d53c4ad88f8a65ed4070eb21/setup_posix.py", line 31, in mysql_config
raise OSError("{} not found".format(_mysql_config_path))
OSError: mysql_config not found
----------------------------------------
airflow.cfg에서 sql_alchemy_conn을 아래와 같이 바꿔주었다.
mysql+pymysql://
그리고 init을 다시 시도하자, 새로운 에러가 발생했다.
Exception: Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql

MySQL 8 이상 버전에는 default=1(ON)이지만, 현재 사용중인 5 버전에서는 별도로 mysql database에 설정이 필요하다.
SET GLOBAL explicit_defaults_for_timestamp = 1;
init db를 했을 때 아래와 같이 나오면 성공적으로 셋팅이 완료된다.

2. Airflow 실행
1) Airflow 관리자 계정을 생성한다
airflow users create -e {email@email.com} -f airflow -l airflow -r Admin -p airflow -u airflow

2) Scheduler, Web server 데몬 실행
# scheduler 실행
nohup airflow scheduler > logs/scheduler.log &
# 18090 포트로 web server 실행
nohup airflow webserver -p 18090 > logs/webserver.log &


반응형
'Study > Server' 카테고리의 다른 글
[Jenkins] (2) Mac 로컬에서 Maven 프로젝트 GitHub 연동 및 자동 빌드하기 (0) | 2024.08.21 |
---|---|
[Jenkins] (1) Jenkins란? Mac 로컬에 설치하기 (0) | 2024.08.21 |
[Elasticsearch] Kibana 설치하기 (0) | 2023.12.04 |
Home Server (6) - DHCP 이란 (0) | 2020.08.24 |
Home Server (5) - Dynamic&Static IP address 유동/고정 아이피 (0) | 2020.08.24 |