Data Engineering/AirFlow

[Airflow] 1-1. Apache Airflow 살펴보기

쟈누이 2023. 11. 13. 22:48
반응형
  • airflow은 유연한 파이썬 프레임워크를 사용쉽게 데이터 파이프라인을 구축가능
  • 최신 기술 환경에서 접하게 되는 서로 다른 기술들을 연결할 수 있는 다양한 빌딩 블록을 제공하는 것
  • 에어플로우는 거미줄의 거미와 같이 데이터 프로세스 과정에서 중요한 역할을 하며 다양한 시스템에서 발생하는 작업을 조율
  • 직접적으로 데이터 처리 작업을 수행하지 않지만, 데이터 처리를 위한 다양한 구성 요소들을 조정

1. 데이터 파이프라인 소개

  • 데이터 파이프라인은 원하는 결과를 얻기 위해 실행되는 여러 태스크 또는 동작으로 구성

1.1 데이터 파이프라인 그래프

  • 태스크 간의 의존성을 명확하게 확인하는 방법 중 하나는, 데이터 파이프라인을 그래프로 표현하는 것
  • 태스크는 노드로 표시되고 태스크 간의 의존성은 태스크 노드간의 방향으로 표시
  • 이러한 형태의 그래프는 방향성을 가지기 때문에 방향성 그래프 라고 한다
  • 이런 형태의 그래프는 방향성 비순환 그래프(DAG) 라고 부름
  • 그래프는 화살표 방향성의 끝점을 포함하되 반복이나 순환을 허용하지 않는다.(비순환)
  • 비순환 속성은 태스크 간의 순환 실행을 방지하기 때문에 매우 중요
  • 그래프를 실행할 때 순환 의존성이 문제를 발생시킬 수 있다. 예를 들어 태스크 3이 완료된 후에만 태스크 2가 실행되는데, 태스크 3은 태스크 2가 완료된 후에 실행되기 때문이다. 이런 논리적 오류는 교착상태(dead lock) 으로 이어지며, 태스크 2와 태스크 3이 모두 실행될 수 없기 대문에 그래프가 동작하지 않는다.
  • Airflow 에서는 DAG 의 비순환 속성은 태스크 그래프를 효율적으로 해결하고 실행하기 위해 사용된다.

1.2 파이프라인 그래프 실행

  • DAG (Directed Acyclic Graph) 는 파이프라인 시행을 위한 단순한 알고리즘을 제공한다는 이점
  • DAG 알고리즘 설명
    1. 그래프 안에 태스크는 각각 개방된 상태(미완료) 이며 다음과 같은 단계를 수행→ 태스크가 완료되면 다음에 실행해야 할 태스크를 대기열에 추가
    2. → 각강의 화살표 끝점은 태스크를 향하며 다음 태스크로 향하기 전에 이전 태스크가 완료되었는지 확인
    3. 실행 대기열에 있는 태스크를 실행하고 태스크 수행이 완료되면 완료 표시
    4. 그래프의 모든 태스크가 완료되면 프로세스 종료

1.3 그래프 파이프라인의 장점

  • **실행 알고리즘(그래프 진행 순서/방법)**을 적용하면 태스크를 병렬로 실행 가능
  • 이로 인해, 가용 컴퓨팅 리소스를 더욱 효율적으로 활용 가능
  • 덕분에, 태스크의 순차적 실행 때보다 전체 파이프라인 실행 시간을 줄일 수 있음
  • 전체를 하나의 단일 스크립트 또는 프로세스가 아닌 작은 점진적인 태스크로 분리할 수 있음
  • 단일 스크립트에 반해, 실패한 태스크만 재 실행하면 되므로 전체 스크립트(파이프라인)를 재 실행할 필요 없음

1.4 워크플로 매니저를 이용한 파이프라인 실행

  • 의존성 있는 그래프 태스크 실행에 대한 어려움은 기존에도 계속 있었음[클린 아키텍처] 의존성 순환 (cyclic dependency) 의 문제와 해결방안
  • → 해당 부분은 아래 링크 참고
  • 과거 수년간 이 문제를 해결하기 위해 ‘워크플로 매니지먼트’ 솔루션이 다양하게 개발
  • 일반적으로 태스크 그래프를 워크 플로 또는 파이프라인으로 정의하고 실행
  • 아래는 몇몇 유명한 워크플로 관리시스템에 대한 요약본

→ 위 워크플로들의 주요 기능은 의존성이 있는 다수 태스크가 포함된 파이프라인을 정의하고 실행하는 것

→ 이 도구들의 중 차이점 중 하나는 워크플로 정의방식 Oozie 는 정적(xml)파일을 사용하여 워크플로를 정의하기 때문에 읽기 쉽지만 유연하지 않으며, Luigi 및 Airflow 와 같은 도구는 워크 플로를 코드로 정의하기에 좀 더 유연하지만, 읽기 및 테스트는 어려울 수 있음

  • airflow은 유연한 파이썬 프레임워크를 사용쉽게 데이터 파이프라인을 구축가능
  • 최신 기술 환경에서 접하게 되는 서로 다른 기술들을 연결할 수 있는 다양한 빌딩 블록을 제공하는 것
  • 에어플로우는 거미줄의 거미와 같이 데이터 프로세스 과정에서 중요한 역할을 하며 다양한 시스템에서 발생하는 작업을 조율
  • 직접적으로 데이터 처리 작업을 수행하지 않지만, 데이터 처리를 위한 다양한 구성 요소들을 조정

 

반응형