오늘의 업무

[Airflow] 설치하기 mac

gogoem 2024. 9. 9. 18:42
728x90

이번에 시작하는 프로젝트에서 Airflow를 사용하게 되었다.

세팅하는김에 정리 해 볼것임!

 

 

 

Airflow란?

복잡한 데이터 파이프라인(workflow)을 관리하고 자동화하는 Apache의 오픈 소스 플랫폼.

데이터 처리를 위한 다양한 작업을 스케줄링하고, 모니터링하며, 관리할 수 있게 도와준다.

주로 데이터 엔지니어링, 데이터 분석, 머신러닝 등의 분야에서 복잡한 워크플로우를 정의하고 실행하는 데 사용됨.

주요 기능:

더보기

1. DAG (Directed Acyclic Graph):

Airflow는 작업을 DAG 형태로 정의합니다. DAG는 노드(작업)들이 방향을 가진 비순환 그래프로 연결된 구조입니다. DAG 내의 각 작업(task)은 종속성을 설정해 어떤 작업이 먼저 실행되어야 하는지 정의할 수 있습니다.

2. 스케줄링:

Airflow는 작업을 정해진 시간에 자동으로 실행할 수 있도록 스케줄을 설정할 수 있습니다. 이로 인해 정기적으로 실행되는 데이터 파이프라인을 쉽게 구축할 수 있습니다.

3. 태스크 관리 및 종속성 처리:

태스크 간의 종속성(어떤 작업이 먼저 실행되고 그 이후에 어떤 작업이 실행되는지)을 명확하게 정의할 수 있습니다. 이를 통해 워크플로우의 순서를 제어하고 효율적으로 관리할 수 있습니다.

4. 모니터링 및 로그:

Airflow는 웹 UI를 통해 태스크의 상태(성공, 실패, 재시도 등)를 모니터링할 수 있으며, 각 작업의 로그를 확인할 수 있습니다.

5. 확장성:

Apache Airflow는 분산 환경에서 쉽게 확장 가능합니다. 다수의 작업을 병렬로 처리하거나 여러 서버에서 실행할 수 있습니다.

 

 

 

 

말이 조금 어려울 수 있지만 사실 하는 일은 간단하다.

프로그램에 존재하는 모듈을 조합해 순서대로 시행되게끔 해 주는 툴이라고 보면 된다.

 

 

예를 들어, 검색 결과 중에서 쓸만한 내용만 정리해서 사용자에게 전달하는 프로그램을 개발한다고 생각해보자.

 

우리는 크게

1. 검색결과를 크롤링하는 모듈

2. 크롤링 한 데이터를 파싱하는 모듈

3. 파싱한 데이터를 분석해 사용자가 원하는 정보를 뽑아내는 모듈

4. 완성된 데이터를 UI에 띄우는 모듈

을 만들 예정인데,

 

해당 기능을 가진 모듈들을 만들고 flow 툴을 사용하면

1번 모듈의 결과를 2번 모듈이 받아 작업을 수행하고,

2번 모듈의 결과를 3번 모듈이 받아 작업을 수행하고,

3번 모듈의 결과를 4번 모듈이 받아 사용자에게 노출시키는 순서대로 시행되게끔 자동화 할 수 있으며

또한 주기적으로 해당 작업의 흐름을 수행하도록 설정할 수도 있다.

 

 

 

 

 

 

Airflow 외에도 Kubeflow, Argo workflow등 비슷한 기능을 가진 프로그램이 여럿 있는데,

용도가 살짝씩 다르니 잘 고려해서 선택해야 한다.

 

 

 

 

 

 

일단 설치부터 해 보기로 했다.

공식문서에 설치 방법이 나와 있어서 참고했다.

https://airflow.apache.org/docs/apache-airflow/stable/start.html

 

Quick Start — Airflow Documentation

 

airflow.apache.org

 

 

 

 

해당 문서를 따라해주면 어려움 없이 진행이 가능하다.

python3.x 버전을 사용하는 사람이라면 센스있게 pip를 pip3로 바꾸어서 실행해주자.

 

 

 

~~~

순조롭게 따라하던 도중, airflow 설치 단계에서 가상 환경을 사용하라는 오류가 났다.

 

 

 

 

 

 

 

 

 

 

그럴땐 가상환경을 구성해주자~

$ python3 -m venv airflow_venv
	//airflow_venv라는 이름으로 가상환경 만들어주기
$ source airflow_venv/bin/activate
	//가상환경 활성화

 



 

 

마지막에 airflow를 실행하는 명령어가 있는데, 해당 명령어를 실행하기 전에 해야 할 일이 있다.

 

 

 

 

 

 

airflow는 python으로 조작할 수 있지만 GUI도 제공해 주는데,

8080 포트에서 뜨기 때문에 GUI를 사용하고 싶다면 airflow 실행 이전에 해당 포트가 비어있는지 확인해주어야 한다.

$ lsof -i :8080
	//결과가 있다면 pid를 복사
$ kill -15 {복사한 pid}
	//8080에서 돌고 있는 작업 종료
$ lsof -i :8080
	//잘 종료되었는지 한번 더 확인하고 종료되지 않았다면 아래 명령 수행
$ kill -9 {복사한 pid}
	//강제 종료 명령이기 때문에 위 명령으로 종료가 안 될 때만 사용하기

 

 

 

 

다 했다면 아래 명령어를 실행해 준다.

 

 

 

아래처럼  뭐가 막 나오면서 마지막에 실행이 되었다고 뜰 것이다.

빨간 밑줄 아래에 username과 password도 알려주는데, web 환경을 이용하기 위한 계정이다.

 

 

 

 

 

localhost:8080에 접속해서 알려준 username과 pw로 접속하면 Airflow가 아래와 같이 정상적으로 실행되는 것을 볼 수 있다.