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

2024. 7. 18. 15:28·Minding's Programming/Airflow
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

'Minding's Programming > Airflow' 카테고리의 다른 글

[Airflow] Email 오퍼레이터 사용해보기 (Gmail 서버 사용)  (0) 2024.07.19
[Airflow] Bash Operator로 쉘 스크립트 파일 실행하기  (0) 2024.07.19
[Airflow] DAG 내 task 연결하기 (순서 지정)  (0) 2024.07.19
[Airflow/Cron] Cron 스케줄 개념 정리  (0) 2024.07.19
[Airflow] Airflow DAG 만들기 & DAG 디렉토리 셋팅  (0) 2024.07.19
'Minding's Programming/Airflow' 카테고리의 다른 글
  • [Airflow] Bash Operator로 쉘 스크립트 파일 실행하기
  • [Airflow] DAG 내 task 연결하기 (순서 지정)
  • [Airflow/Cron] Cron 스케줄 개념 정리
  • [Airflow] Airflow DAG 만들기 & DAG 디렉토리 셋팅
Minding
Minding
  • Minding
    Today's Minding
    Minding
  • 전체
    오늘
    어제
    • 울고넘는 딥러닝 (278)
      • Minding's Baseball (57)
        • MLB Statcast (29)
        • 머신러닝으로 홈런왕 예측하기 (3)
        • 야구칼럼 (12)
        • 야구 규칙, 용어 (1)
        • 2022-23 질롱 코리아 (8)
        • 류현진 등판경기 (4)
      • Minding's Programming (185)
        • 프로그래머스 코딩테스트 (21)
        • Knowledge (44)
        • Numpy & Pandas (6)
        • Excel (3)
        • Git (1)
        • Pygame (11)
        • CV (3)
        • Tensorflow tutorial (4)
        • Kaggle and Dacon (4)
        • 에러 코드 (8)
        • FastAPI (8)
        • Airflow (29)
        • Crawling (6)
        • Django (14)
        • AWS (18)
        • Spark (5)
      • Minding's Reading (30)
        • 머신러닝 딥러닝에 필요한 기초 수학 with 파이.. (2)
        • 칼만필터는 어렵지 않아 (11)
        • 밑바닥부터 시작하는 딥러닝 (6)
        • 메이저리그 야구 통계학 2e (8)
        • 논문읽기 (2)
        • 빅데이터를 지탱하는 기술 (1)
      • Minding's Life (5)
        • 주식 (4)
        • 각종 소식 (1)
  • 블로그 메뉴

    • 홈
    • Baseball
    • Programming
    • Reading
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    MLB
    딥러닝
    메이저리그
    에어플로우
    칼만필터는어렵지않아파이썬
    칼만필터는어렵지않아
    KBO
    머신러닝
    질롱코리아
    넘파이
    pygame
    칼만필터는어렵지않아python
    프로그래머스
    mlb stats api
    파이썬게임개발
    KalmanFilter
    FastAPI
    게임개발
    AWS
    Airflow
    데이터 엔지니어
    django python
    django
    파이썬
    코딩테스트
    파이게임
    데이터분석
    칼만필터
    야구
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Minding
[Airflow] Airflow 알아보기 및 설치 방법 (입문)
상단으로

티스토리툴바