Kimuksung
Kimuksung 안녕하세요. 분산처리에 관심이 많은 생각하는 주니어 Data Enginner입니다.

Data Pipeline with apache airflow Chatper2 (DAG, Operator, Task)

Data Pipeline with apache airflow Chatper2 (DAG, Operator, Task)

안녕하세요
오늘은 Airflow Dag 구조에 대해 설명하려고 합니다.

DAG

  • dag_id
  • start_date
1
2
3
4
5
dag = DAG( 
    dag_id = "DAG_NAME", 
    start_date = airflow.utils.dates.days_ago(n),
		schedule_interval = None,
)
Operator

  • 각 오퍼레이터는 하나의 Task 구성
  • Operator는 독립적으로 실행
  • 의존성(Dependency) - 순서를 정의하여서 사용 >>
1
2
3
4
5
cmd_ls3 = BashOperator(
	task_id='request_redshift_connect',
	bash_command='nc -zv wclub-data.cie4a1zjuetm.ap-northeast-2.redshift.amazonaws.com 5439',
	dag=dag
)
Task vs Operator

일반적으로 Operator와 Task라는 용어를 동일하게 사용하지만, 사용자 관점에서만 같은 의미

Task

  • 작업의 올바른 실행을 보장하기 위한 Operator 매니저
  • Operator 상태를 관리
  • 사용자에게 상태 변경(시작/완료) 알려주는 Airflow 내장 Component

Operator

  • 사용자는 DAG와 Operator를 이용
  • Operator는 단일 작업 수행 역할
  • DAG는 Operator set에 대한 실행을 Orchestration(조정,조율)하는 역할
  • Operator 시작과 정지, 완료 후 다음 Task 시작

https://ifh.cc/g/56nbyF.png

Airflow 실행

  • Python

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
      $ pip install apache-airflow
        
      $ airflow db init
      $ airflow users create --username "username" --password "pw" --firstname "name"
      --lastname "Admin" --role Admin --email "mail@co.kr"
        
      $ airflow webserver
      $ airflow scheduler
      $ cd ~/airflow/dags