도커 컨테이너 생성
docker run -it -d --restart always -p 11080:8080 -e LC_ALL=C.UTF-8 -v /home/bsh/docker-temp/airflow:/home/share --name airflow ubuntu:18.04
컨테이너 접속
docker exec -it airflow bash
설치 후 실행
Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh
docker restart 후 다시 접속한다
gcc를 설치해야한다.
apt-get update
apt-get install gcc
apt-get install nano
그 후 conda를 업데이트하고 airflow를 설치해준다.
conda update --all -y
conda install -y airflow
버전 에러가 나기 떄문에 airflow를 업그레이드 해줘야 한다.
pip install --upgrade apache-airflow
기본 우분트로 실행하다보니 pip 조차 설치되어 있지 않았다. 우분투 기본 설정을 해준다.
apt-get install software-properties-common
apt-get install python3.8
apt-get install python-pip
python3 인지 확인해준다.
기본 설정을 위해 db를 초기화 해준다
airflow db init
airflow db init
airflow 설치
pip install apache-airflow
airflow 폴더 구조
airflow
- airflow.cfg : airflow 환경설정 파일
- airflow.db : 데이터베이스(SQLite) 파일
- dags : DAG를 저장하는 디렉토리
- dag.py : DAG 정의 파이썬 파일
- logs : 로그파일을 저장하는 디렉토리
airflow.cfg 파일에서 dags와 logs 파일의 위치를 수정할 수 있다.
Airflow는 기본값으로 sqlite를 사용한다. sqlite에서는 SequentialExecutor만 설정가능하기에 DAG내에서 task의 병렬실행이 불가능하다. 병렬실행을 가능하게 하려면 LocalExecutor나 CeleryExecutor를 사용해야하는데 그러기위해선 Database를 Sqlite가 아닌 다른 Database를 사용해야 한다.
nano /root/airflow/airflow.cfg 에서 설정 수정하기
sql_alchemy_conn 에서 localhost 로 적으면 해당 컨테이너를 찾아가지 못해서
host 의 ip 혹은 postgres 컨테이너의 ip를 넣는것이 좋다
sql_alchemy_conn= postgresql + psycopg2 : //db_user_name : db_password @ localhost : 5432 /db_name
example을 보고싶지 않다면 airflow.cfg에서 load_examples = False로 설정하면 된다
[core]
dags_folder = /home/share/dags
base_log_folder = /home/share/logs
plugins_folder=/home/share/plugins
hostname_callable = socket.getfqdn
default_timezone = Asia/Seoul
executor = LocalExecutor
#sql_alchemy_conn = sqlite:////root/airflow/airflow.db
sql_alchemy_conn = postgresql+psycopg2://postgres:password@192.xx.xx.xx/airflow
sql_engine_encoding = utf-8
[webserver]
default_timezone = Asia/Seoul
데이터 베이스가 새로 생성되다 보니
새로운 데이터베이스 이름으로 다시 연결해주었다. (DBeaver 사용)
airflow initdb명령어를 통해 DB초기화 해주면 이제 sqlite가 아닌 postgres를 사용할 수 있다.
설정 수정이 끝나면 db에 table이 생성된 것을 확인할 수 있다.
airflow db init
ModuleNotFoundError: No module named 'psycopg2'
으로 에러가 난다면
pip install psycopg2-binary
설치 후 다시 db init을 실행한다
airflow webserver를 실행한다
airflow webserver -p 8080 &
nohup airflow scheduler &
로그인할 계정을 생성할 명령어 입력 후 비밀번호를 치면 계정생성이 된다.
# create an admin user
airflow users create \
--username admin \
--firstname Peter \
--lastname Parker \
--role Admin \
--email spiderman@superhero.org
ps -ef 명령어로 실행중인 프로세스를 확인할 수 있다.
ps -ef
airflow 버전 확인
airflow version
airflow dags list 로 task 확인가능하다.
다른 블로그 보면 airflow list_dags의 명령어로 나와있는데 나는 아래 명령어로 해야 보였다.
airflow dags list
airflow 설치 후 webserver 를 실행하면 다음과 같은 경고를 만난다면 아래 링크를 참고하면된다.
WARNING: No user yet created, use flask fab command to do it.
https://bsssss.tistory.com/575
'프로그래밍 언어 > Linux' 카테고리의 다른 글
linux 파일 버전 확인(spark, hadoop, java,pip) (0) | 2021.06.17 |
---|---|
[airflow] WARNING: No user yet created, use flask fab command to do it (0) | 2021.06.17 |
centos 7 에 htop 설치하기 (0) | 2021.06.14 |
“E: Unable to locate package python-pip” on Ubuntu 18.04 [duplicate] (0) | 2021.06.11 |
리눅스 top 명령어 옵션 내용 (0) | 2021.06.11 |