반응형

최근에 airflow 웹상에 dag들이 올라오지 않아 고생한 부분을 정리하고자 합니다. 결론적으로 아래 발생한 현상은 모두 인코딩 문제로 간단하게? 해결할 수 있었습니다.

 

 

dag가 웹에 안보이는 케이스

1. 한글주석

아래와 같이 dag 파일 내에 한글 주석을 넣으면 dag가 웹상에 올라오지 않았습니다.

 

2. 스케쥴링

분과 시를 설정할 경우에는 dag들이 웹상에 잘 나왔지만 년월일 스케쥴링시 dag가 웹상에 올라오지 않았습니다.

특히 @daily는 가능하나 @monthly 및 @hourly등은 dag가 올라오지 않았습니다.

 

스케쥴링 에러를 확인하니 아래와 같은 에러가 계속해서 발생했습니다.

airflow unicodeencodeerror: 'charmap' codec can't encode characters in position 7-8: character maps to <undefined>

 

 

해결방법

아마 위의 에러는 mysql등 다른 디비와 연결하며 발생했을거라고 생각됩니다.

airflow.cfg 파일 sql_alchemy_conn에서 airflow뒤에 ?charset=utf8 추가 후 airflow 재시작하게 되면 위에 두가지 케이스일 때 dag가 정상적으로 올라오는 것을 볼 수 있습니다.

 

sql_alchemy_conn = mysql://root:password@127.0.0.1:3306/airflow?charset=utf8

 

 

반응형
반응형

에러

위 에러는 Airflow localexcuter설치 중 Mysql과 연동하는 과정에서 발생하였습니다.

해결

해결 방법은 간단합니다.

pip install mysqlclient 를 통해 설치하면 간단히 해결됩니다.

반응형
반응형

airflow설치 후 다양한 테스트 도중 아래와 같은 문구가 생겼습니다.

scheduler does not appear to be running 문구를 본다면 스케쥴러 데몬이 내려간 것처럼 보이지만 airflow 스케쥴을 정상적으로 작동하고 있는 상태였습니다.

 

이러한 문구가 보이는 이유는  Sequential Executor를 사용하기 때문입니다. 

 Sequential Executor란 기본 Executor로 sqlite와 함께 사용할 수 있으며, 한번에 하나의 task만 실행할 수 있어 병렬성을 가지지 않습니다.

 

따라서, 현재 task를 실행중인 상태에서는 heartbeat를 받을 수 없어 생성되는 문구라고 생각하면 됩니다.

반응형
반응형

airflow 설치 후 example dag를 삭제하고 싶으신 분들이 있을겁니다. 이번 포스팅은 example dag 삭제해보겠습니다.

 

airflow 스크립트 수정

conda activate test
cd airflow
#load_examples = True를 Fasle로 변경
vi airflow.cfg

vi로 airflow.cfg를 열어 load_examples=True를 load_examples=False로 변경해줍니다.

airflow db reset 및 webserver 재실행

# airflow 폴더에서 나옵니다.
cd

# airflow 프로세스가 살아있는지 확인 살아있을 경우 kill -9 프로세스아이디 를 통해 종료
ps -ef |grep 'air'
 
# db초기화
airflow db init

# webserver 및 scheduler 재실행
nohup airflow webserver -p 8080 &
nohup airflow scheduler &

airflow 확인

localhost:8080 접속하게 되면 example dag가 없어진걸 볼 수 있습니다.

 

반응형
반응형

아나콘다 설치

아나콘다 설치 후 airflow를 설치해보겠습니다. 아나콘다 설치가 안된분들은 아래 포스팅을 확인해주새요

https://taeguu.tistory.com/100

 

[Python] 리눅스 서버에 anaconda 설치

이번 포스팅은 리눅스 서버에 아나콘다를 설치하겠습니다. os는 우분투 18.04 lts에 설치해보도록 하겠습니다. 아나콘다 다운 https://www.anaconda.com/products/distribution#linux Anaconda | Anaconda Distrib..

taeguu.tistory.com

airflow 설치

# conda 가상환경 실행
# 가상환경이 없는경우 conda create -n test pip python=3.7 명령어 실행
conda activate test

# airflow 설치
pip install apache-airflow

# db init
airflow db init

# webserver 실행
airflow webserver -p 8080

airflow 웹서버 접속

웹서버를 실행하게 되면 아래와 같이 airflow 웹서버거 실행되며 localhost:8080을 url에 입력하여 접속합니다.

접속하면 아래 그림과 같이 로그인 창이 뜹니다. 이제 다시 커멘드창으로 이동하여 계정을 생성하겠습니다.

airflow 계정 생성

웹서버를 창은 그대로 두고 새로운 창을 열어 아래 명령어을 입력하게 되면 admin권한을 가지는 admin계정이 생성됩니다.

airflow users create  --username admin  --firstname admin  --lastname admin   --role Admin  --password admin  --email admin

airflow 계정접속

id / pw : admin / admin으로 접속하게 되면 sample dag가 보이며, 접속이 완료됐습니다.

airflow 둘러보기

특정 dag를 클릭하게 되면 dag안에 task들의 의존성 및 dag 코드를 확인할 수 있습니다.

 

task 의존성
dag 코드

반응형

+ Recent posts