1. airflow 테스트 환경 구축

- 간단한 테스트 환경 구축을 위해 airflow에서 제공하는 docker compose yaml파일을 사용한다.

- 아래의 스크린샷과 같은 부분에서 다운받을 수 있다.

- 링크 : https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html

curl로 다운하는 것도 가능하다

2. airflow에서 사용할 파이썬 라이브러리 추가 방법

- docker compose 파일에 간단하게 라이브러리를 추가하는 방법이 있다.

- airflow에서 pymysql이 기본으로 제공되지 않는데, pymysql을 설치하려면 아래와 같이 내용을 수정하고 저장하자.

## docker compose 파일에서 추가로 설치할 python module을 등록하는 경우
## 아래와 같은 environment 찾아서 수정 후 docker compose up -d
_PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:- pymysql}

## module을 여러개 설치해야하는 경우는 아래와 같이 공백으로 구분하여 추가한다
_PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:- pymysql pandas numpy}

3. airflow를 실행하자

- docker compose 파일이 있는 폴더에서 docker compose up -d으로 airflow 환경을 구축한다.

- airflow에서 사용하려는 port를 이미 사용하고 있는 경우 yaml에서 port 번호를 바꿔주도록 하자.

- 공식적으로 제공하는 파일에서는 id와 password는 모두 airflow이므로 변경이 필요하면 yaml에서 바꿔주자.

- localhost:8080 으로 접속해서 아래와 같은 창이 뜨면 테스트 환경 구축에 성공한 것이다.

 

'데이터 시스템 구축 정보 공유 > airflow' 카테고리의 다른 글

1. Airflow란?  (0) 2022.07.31

1. 일반적인 자동화 작업에서 발생하는 문제는 무엇일까?

- 데이터 분석이나 모델링 영역에서 주기적인 자동화 작업을 해야하는 경우가 빈번하게 발생한다.

- 데이터 분석을 위해 특정 시간 단위의 데이터를 연산하여 데이터를 적재하는 과정도 있고

- 특정 기간마다 자동으로 서빙 중인 모델을 다시 학습해서 서빙을 하는 경우도 있다.

 

 

 

2. 이런 과정에서 발생할 수 있는 문제는 무엇이 있을까?

- 이런 과정을 하나의 코드로 관리하기도 어렵고, 그렇게 할 수도 없다.

- 그렇다고 특정 작업보다 우선시 되는 작업을 특정 시간동안 기다리도록 작업을 단순하게 정할 수도 없고

- 그렇다고 특정 작업이 모두 완료되기 전까지 다른 후속 작업을 기다리는 방법은 너무 비효율적이다.

- 하지만 작업의 우선 순위를 설정하거나, 동기/비동기 작업으로 설정하는 코딩을 하기에는 작업량이 많고 복잡하고 변경 사항에 따라 유지보수가 반드시 뒤따른다.

- 게다가 에러가 발생할 경우 직접 에러가 남도록 로깅을 해서 이유를 찾거나, 에러를 확인할 수 있는 시스템을 구축하여 확인해야한다.

- 또한 빠른 문제 해결을 위해 자동화 작업에 문제가 발생하면 alert을 보내는 방법도 고려해야한다.

 

 

 

3. 이런 작업을 Airflow에서는 쉽게 할 수 있다.

- Shell이나 Python으로 작성된 스케쥴을 작성하고, 스케쥴들의 종속성과 작업 순서를 설정할 수 있다.

- 자동화 작업이 잘 진행되었는지 문제는 어디서 발생했는지를 웹UI에서 확인할 수 있다.

- 작업이 중간에 잘못된 경우 발생한 에러를 웹UI에서 확인할 수 있고, 문제가 발생한 지점부터의 재실행도 웹UI에서 실행할 수 있다.

- slack에 alert을 보내는 기능 등을 설정할 수 있다.

 

 

 

4. 결론적으로 복잡한 스케쥴의 자동화 작업을 편리하게 작성하고 관리할 수 있는 플랫폼이다.

- 데이터 영역에서 ETL과 모델훈련/서빙 등의 자동화를 한다면 꼭 사용해보자.

- 본 블로그에서는 어려운 용어 정의는 생략하고 실질적으로 사용하는 예제를 중심으로 내용을 설명하도록 하겠다!

+ Recent posts