본문 바로가기
Minding's Programming/Airflow

[Airflow] Airflow 알아보기 및 설치 방법 (입문)

by Minding 2024. 7. 18.
728x90
반응형

데이터 엔지니어링 분야에서 각광받고 있는 플랫폼인 Airflow는 2014년 Airbnb 엔지니어링 팀에서 개발한 오픈소스 워크플로우 관리 플랫폼이다. 프로그래밍으로 ETL과 같은 워크플로우를 작성하고 예약 및 모니터링 할 수 있다.

 

Airflow 왜 배워야할까?

1. Automation: Extractaction > Transformation > Loading에 이르기까지 모든 과정을 자동화할 수 있다.

 

2. Orchestration: 데이터 추출, 가공, 저장, 분석 등의 파이프라인 관리용으로 가장 인기 많은 오픈소스 솔루션으로, Spark, Hadoop, Python, R 등 여러 플랫폼과 언어를 오가며 사용할 수 있다. (솔루션 간의 연계성이 좋음) 또한 공식적으로 지원하지 않는 플랫폼에 대해서도 직접 커스터마이징하여 사용할 수 있다. (확장성)

 

3. 워크플로우 제어 및 스케줄링하는 플랫폼 중 가장 인기가 많다.

 

4. 데이터 엔지니어의 필수 역량은 데이터 파이프라인 구성과 관리 = Airflow는 그 과정을 다루기에 좋은 도구이자 플랫폼이다. (Python, SQL, Cloud, Spark, HDFS 등..)

 

 

Airflow의 특징

  • 파이썬으로 제작된 도구인만큼, 워크플로우 생성 시에도 파이썬으로 구현해야 함
  • 하나의 워크플로우는 DAG(Directed Acyclic Graph)이라 부르며 DAG 안에는 1개 이상의 Task가 존재함.
  • Task 간 선후행 연결이 가능하되 순환되지 않고 방향성을 가짐
  • Cron 기반의 스케줄링 (주기적 실행)
  • 모니터링 및 실패 작업에 대한 재실행 기능이 간편

 

Docker를 활용하여 Airflow 설치하기

우선 Docker 설치는 공식 페이지를 참고하자.

https://docs.docker.com/engine/install/ubuntu/

 

Install Docker Engine on Ubuntu

Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.

docs.docker.com

* 만약 'Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?' 과 같은 에러가 난다면, Windows Powershell에서 아래 명령어를 입력해 wsl 업데이트를 해보자. systemctl을 최신 버전의 wsl에서만 지원해주기 때문에 생긴 에러일 가능성이 크다.

wsl --update

 

이후 Airflow 설치는 아래 공식 문서를 따르면 된다.

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

 

Running Airflow in Docker — Airflow Documentation

 

airflow.apache.org

 

먼저 docker-compose.yaml 파일을 다운로드 받는다.

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.9.3/docker-compose.yaml'

 

그 뒤 airflow 관련 권한 설정을 위해 몇 개의 폴더를 만든 뒤 airflow uid를 설정해주는 작업을 아래 코드를 통해서 해준다.

# 권한설정
mkdir -p ./dags ./logs ./plugins ./config
echo -e "AIRFLOW_UID=$(id -u)" > .env

 

다음으로는 DB 설정 초기화(initialize)를 진행한다.

docker compose up airflow-init

# 완료 시 아래와 같은 메시지가 출력된다.
airflow-init_1       | Upgrades done
airflow-init_1       | Admin user airflow created
airflow-init_1       | 2.9.3
start_airflow-init_1 exited with code 0

 

위 설정까지 마쳤다면, airflow를 실행해볼 것이다. 아래 명령어로 airflow를 실행한다.

docker compose up

위 코드를 실행하면 http와 관련된 메시지가 쭉 올라오는 시점이 있는데, 그 시점에 airflow가 정상적으로 설치되었는지 확인할 수 있다. 주의할 점은 해당 터미널은 실행시킨 채로 다른 터미널을 열어 확인해야한다는 것이다. 아래 명령어로 확인할 수 있다.

 

docker ps

# 아래와 같이 메시지가 노출되면 정상이다.
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS                    PORTS                              NAMES
247ebe6cf87a   apache/airflow:2.9.3   "/usr/bin/dumb-init …"   3 minutes ago    Up 3 minutes (healthy)    8080/tcp                           compose_airflow-worker_1
ed9b09fc84b1   apache/airflow:2.9.3   "/usr/bin/dumb-init …"   3 minutes ago    Up 3 minutes (healthy)    8080/tcp                           compose_airflow-scheduler_1
7cb1fb603a98   apache/airflow:2.9.3   "/usr/bin/dumb-init …"   3 minutes ago    Up 3 minutes (healthy)    0.0.0.0:8080->8080/tcp             compose_airflow-webserver_1
74f3bbe506eb   postgres:13            "docker-entrypoint.s…"   18 minutes ago   Up 17 minutes (healthy)   5432/tcp                           compose_postgres_1
0bd6576d23cb   redis:latest           "docker-entrypoint.s…"   10 hours ago     Up 17 minutes (healthy)   0.0.0.0:6379->6379/tcp             compose_redis_1

각 서비스와 연결된 '컨테이너'들이 보일 것이다.

 

에어플로우 서비스 접속

Airflow 설치까지 확인했다면, http://localhost:8080/ 도메인에 접속해 해당 서비스에 접속해볼 수 있다.

해당 도메인으로 접속한다면 아래와 같은 로그인 화면이 노출된다.

기본적으로 ID와 PW는 'airflow'로 동일하다. 입력해서 로그인하면,

 

위와 같은 화면이 노출된다. 아래의 리스트는 샘플로 만들어놓은 DAG리스트다. 리스트 중 하나의 샘플을 선택해보자.

 

선택하여 접속하면 해당 DAG에 대한 자세한 정보를 알 수 있다. 해당 페이지에 관해서는 추후 실습을 통해 더 자세히 기록하도록 하겠다.

728x90
반응형

댓글