TobeSteady

[Airflow] 개념정리02. - Task와 Operator의 차이 본문

Apache/Airflow

[Airflow] 개념정리02. - Task와 Operator의 차이

NKUT 2023. 3. 3. 21:17

프로젝트를 하면서 정리한 내용입니다.

사실과 다를 수 있으니 주의해주시고, 

혹시나 잘 못된 내용일 경우 댓글로 알려주시면 감사하겠습니다.

 

처음 Airflow Dag를 생성했을때, 헷갈리던 것이 있다.

바로 Task와 Operator.

많은 참고 자료들에서 Task와 Operator을 혼용해서 더욱 초기 개념 잡기가 어려웠다.

 

아래의 코드를 확인하면, Task이름이 "update_start"이고 그 안에 BashOperator가 정의된다는 것을 알 수 있다.

 

우선 Task는 Airflow에서의 기본 실행단위로 "DAG안에서 실행되어야 하는 작업의 순서를 표현하기 위해서 존재하는 실행단위"이다.

이때, Operator DAG와 Task를 빠르게 만들기 위해 미리 정의된 작업 템플릿이다.

Operator와 같은 레벨에서 Sensors와 Decorator이 있다. 

- Sensors조금 특별한 Operator로 특정 작업이 발생했는지 여부를 확인할 때 사용된다.

- Decorator의 경우 "@task"로 사용되는데, 이는 작업자가 이전에 정의한 Task라고 생각하면 된다.

 

즉, Operator의 입장에서 Task는 작업의 올바른 실행을 보장하기 위한 오퍼레이터의 래퍼(wrapper) 또는 매니저(manager)인 것이고, 사용자는 오퍼레이터를 활용해 수행할 작업에 집중하고, airflow는 태스크를 통해 작업을 올바르게 실행할 수 있다. 

 

Operator

  • 단일 작업 수행 역할을 함.
    • bash(bash스크립트를 실행하는데 사용됨),  python(파이썬 함수를 실행하는데 사용됨)와 같이 일반적인 작업을 수행.
    • email(이메일 발송에 사용됨), simpleHTTP(HTTP 엔드포인트 호출)와 같이 특수한 목적을 위한 작업 수행.
    • DAG는 오퍼레이터 집합에 대한 실행을 오케스트레이션(Orchestraion,조정, 조율)하는 역할을 함.
      • Operator의 시작과 정지, Operator가 완료되면 연속된 다음 Task의 시작, 그리고 Operator간의 의존성을 보장함.

 

Bash Operator

: Bash Shell 스크립트를 실행하는 Operator.

  • 리눅스 명령어 실행과 프로그램 실행 가능.
# airflow.operators.bash

class BashOperator(
	bash_command: str,
   	env: Optional[Dict[str, str]] = None,
   	output_encoding: str = "utf-g",
   	skip_exit_code: int = 99,
	cwd: str = None,
	**kwargs)
  타입 기본값 내용설명
bash_operator str   실행할 Bash 명령어
env Optional[Dict[str, str]] None Dict 형태의 환경 변수 전달
output_encoding str "utf-8" Bash 명령어 출력값 인코딩 방식
skip_exit_code int 99 명령어 결과인 exit_code로 성공여부 확인.
None이면 0이 아닌 모든 값은 실패로 간주.
cwd str None 명령어가 실행될 경로 지정
None이면 임시경로에서 실행.
procide_context bool False True로 설정되면 Task인스턴스의 attribute들을 kwargs로 사용가능.
BashOperator에 정의되어 있음.

 


Reference

https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/tasks.html

 

Tasks — Airflow Documentation

 

airflow.apache.org

airflow.operators — Airflow Documentation (apache.org)

 

airflow.operators — Airflow Documentation

 

airflow.apache.org

AirFlow의 Operator 이해하기 (bearpooh.com)

'Apache > Airflow' 카테고리의 다른 글

[Airflow] 개념정리 01.  (0) 2023.03.03