SlideShare a Scribd company logo
1 of 15
Airflow
01
Airflow 소개
02
Airflow Architecture
04
Airflow QuickStart (StandAlone)
05
Airflow Clustering (Celery)
목차
CONTENTS
03
Airflow 특징
01
Airflow소개
Airflow?
에어비앤비(Airbnb)에서 만든 파이썬 기반의 데이터 워크플로우 작성, 모니터링, 스케줄링 플랫폼
Airflow시작History
2014.10 2015.06 2016.03 2019.01
Github도입,
발표
Apache Software
Foundation
인큐베이팅 프로젝트
참여
Apache Airflow
Top-Level-
Project 승격
02
AirflowArchitecture
Airflow Architecture
03
Airflow특징
Airflow 특징
ㆍDynamic
- 파이프라인(동작순서, 방식)을 파이썬 코드를 이용하여 구성하기 때문에 동적인 구성이 가능
ㆍExtensible
- python 이용하여 Operator, executor를 사용하여 사용자의 환경에 맞게 확장하여 구성하는 것이 가능함
ㆍElegant
- 진자 템플릿(jinja template)을 이용하여 파라미터화 된 데이터를 전달하는 것이 가능
ㆍScalable
- 분산구조와 메시지큐를 이용하여 많은 수의 워커간의 협업을 지원하고, 스케일 아웃이 가능함
03
Airflow특징
DAG
Directed Acyclic Graph(방향성 비순환 그래프) 작업의 순서 혹은 관계의 종속성을 가지며
반복하는 싸이클이 없는 일방향성만을 가진 구조를 표현한 그래프
Directed Graph Acyclic Graph Directed Acyclic Graph
03
Airflow특징
Operators
Task에서 실행되는 실제 작업 방식을 결정한다.
각 Task들은 Operator클래스를 인스턴스화해서 만든다.
ㆍBashOperator - Bash 명령 실행
ㆍPythonOperator - Python 함수 실행
ㆍEmailOperator - 이메일 전송
ㆍSimpleHttpOperator - HTTP 요청 전송
03
Airflow특징
Executors
Executor는 task 수행에 필요한 worker process를 실행한다
ㆍSequentialExector (default)
- 한번에 하나의 Task intance를 실행 / SQLite3를 backend로 설정
ㆍLocalExecutor
- Task 병렬 처리 가능 / MySQL이나 PostgreSQL을 backend로 설정
ㆍCeleryExecutor
- Task를 여러 서버(node)에 분산 처리 가능 (cluster) / Celery backend (RabbitMQ, Redis, …) 설정이 필요
ㆍDaskExecutor
- Celery와 같은 역할이지만 Dask로 처리 / Dask 클러스터는 Single Machine 또는 원격 네트워크에서 실행
04
AirflowQuickStart
(StandAlone)
설치
Airflow 기본 설치
pip install apache-airflow
pip install apache-airflow[all]
Airflow extra package 설치
04
AirflowQuickStart
(StandAlone)
실행
airflow initdb
airflow scheduler
airflow webserver –p 8080
04
AirflowQuickStart
(StandAlone)
Example Code
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
default_args = {
'owner': 'airflow’,
'depends_on_past': False,
'start_date': datetime(2015, 6, 1),
'email': ['airflow@example.com’],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5)
}
dag = DAG( 'tutorial', default_args=default_args, schedule_interval=timedelta(days=1))
t1 = BashOperator( task_id='print_date', bash_command='date', dag=dag)
t2 = BashOperator( task_id='sleep', bash_command='sleep 5', retries=3, dag=dag)
templated_command = """
{% for i in range(5) %}
echo "{{ ds }}“
echo "{{ macros.ds_add(ds, 7)}}"
echo "{{ params.my_param }}"
{% endfor %}
""“
t3 = BashOperator(
task_id='templated’,
bash_command=templated_command,
params={'my_param': 'Parameter I passed in’},
dag=dag)
t2.set_upstream(t1)
t3.set_upstream(t1)
DAG 생성
Operator로 Task 생성
DAG 설정
Jinja
Template
upstream으로 Task간 관계를 정의
05
AirflowClustering
(Celery)
1. Web server –> Workers - Task 실행 로그를 가져온다
2. Web server –> DAG files - DAG 구조 공개
3. Web server –> Database - Task 상태 가져오기
4. Workers –> DAG files - DAG구조 공개하고 Task 실행
5. Workers –> Database - Connection configuration, variables, XCOM 정보를 가져오고 저장
6. Workers –> Celery’s result backend - Task 상태 저장
7. Workers –> Celery’s broker - 실행명령 저장
8. Scheduler –> Database - DAG 실행 및 관련 Task 저장
9. Scheduler –> DAG files - DAG구조 공개하고 Task 실행
10. Scheduler –> Celery’s result backend - 완료된 Task의 상태정보를 가져온다.
11. Scheduler –> Celery’s broker - 실행할 작업명령을 넣습니다.
Clustering Architecture - 1
05
AirflowClustering
(Celery)
Clustering Architecture - 2
05
AirflowClustering
(Celery)
Clustering 구성 방법
1. Celery 설치
2. Redis 혹은 RabbitMQ 설치
3. airflow.cfg 설정
executor = CeleryExecutor
sql_alchemy_conn = mysql://{DB user}:{DB pw}@{DB host}:{DB port}/{database}
broker_url = redis://:{Redis pw}@{Redis Host}:{Redis port}/0
result_backend = db+mysql://{DB user}:{DB pw}@{DB host}:{DB port}/{database}
4. Dags폴더 Sync를 위한 git repository 혹은 volume mount
5. 각 노드에 커맨드를 실행
pip install apache-airflow[celery]
airflow scheduler
airflow webserver
airflow worker
감사합니다.
THANK YOU.

More Related Content

What's hot

Kubernetes autoscaling 201808
Kubernetes autoscaling 201808Kubernetes autoscaling 201808
Kubernetes autoscaling 201808철구 김
 
4.1 단일호스트의 부하
4.1 단일호스트의 부하4.1 단일호스트의 부하
4.1 단일호스트의 부하Mungyu Choi
 
2. Application - Sqoop Import
2. Application - Sqoop Import2. Application - Sqoop Import
2. Application - Sqoop Importmerry7
 
Apache Zeppelin으로 데이터 분석하기
Apache Zeppelin으로 데이터 분석하기Apache Zeppelin으로 데이터 분석하기
Apache Zeppelin으로 데이터 분석하기SangWoo Kim
 
OpenStack Heat Orchestration
OpenStack Heat OrchestrationOpenStack Heat Orchestration
OpenStack Heat OrchestrationWooKyun Jeon
 
1. Application - Pig
1. Application - Pig1. Application - Pig
1. Application - Pigmerry7
 
18. Install - Spark Streaming Env.
18. Install - Spark Streaming Env.18. Install - Spark Streaming Env.
18. Install - Spark Streaming Env.merry7
 
카카오 전사 모니터링/로깅/알람플랫폼 KEMI
카카오 전사 모니터링/로깅/알람플랫폼 KEMI카카오 전사 모니터링/로깅/알람플랫폼 KEMI
카카오 전사 모니터링/로깅/알람플랫폼 KEMIissac lim
 
learning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and Debugginglearning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and DebuggingMungyu Choi
 
AWS SAM으로 서버리스 아키텍쳐 운영하기 - 이재면(마이뮤직테이스트) :: AWS Community Day 2020
AWS SAM으로 서버리스 아키텍쳐 운영하기 - 이재면(마이뮤직테이스트) :: AWS Community Day 2020 AWS SAM으로 서버리스 아키텍쳐 운영하기 - 이재면(마이뮤직테이스트) :: AWS Community Day 2020
AWS SAM으로 서버리스 아키텍쳐 운영하기 - 이재면(마이뮤직테이스트) :: AWS Community Day 2020 AWSKRUG - AWS한국사용자모임
 
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기AWSKRUG - AWS한국사용자모임
 
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지위키북스
 
Knative로 서버리스 워크로드 구현
Knative로 서버리스 워크로드 구현Knative로 서버리스 워크로드 구현
Knative로 서버리스 워크로드 구현Jinwoong Kim
 
Programming Cascading
Programming CascadingProgramming Cascading
Programming CascadingTaewook Eom
 
4. Application - Oozie Fork
4. Application - Oozie Fork4. Application - Oozie Fork
4. Application - Oozie Forkmerry7
 
Kubernetes object에 대하여
Kubernetes object에 대하여Kubernetes object에 대하여
Kubernetes object에 대하여Daniel Lim
 
7. Application - Hive Bucket
7. Application - Hive Bucket7. Application - Hive Bucket
7. Application - Hive Bucketmerry7
 

What's hot (17)

Kubernetes autoscaling 201808
Kubernetes autoscaling 201808Kubernetes autoscaling 201808
Kubernetes autoscaling 201808
 
4.1 단일호스트의 부하
4.1 단일호스트의 부하4.1 단일호스트의 부하
4.1 단일호스트의 부하
 
2. Application - Sqoop Import
2. Application - Sqoop Import2. Application - Sqoop Import
2. Application - Sqoop Import
 
Apache Zeppelin으로 데이터 분석하기
Apache Zeppelin으로 데이터 분석하기Apache Zeppelin으로 데이터 분석하기
Apache Zeppelin으로 데이터 분석하기
 
OpenStack Heat Orchestration
OpenStack Heat OrchestrationOpenStack Heat Orchestration
OpenStack Heat Orchestration
 
1. Application - Pig
1. Application - Pig1. Application - Pig
1. Application - Pig
 
18. Install - Spark Streaming Env.
18. Install - Spark Streaming Env.18. Install - Spark Streaming Env.
18. Install - Spark Streaming Env.
 
카카오 전사 모니터링/로깅/알람플랫폼 KEMI
카카오 전사 모니터링/로깅/알람플랫폼 KEMI카카오 전사 모니터링/로깅/알람플랫폼 KEMI
카카오 전사 모니터링/로깅/알람플랫폼 KEMI
 
learning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and Debugginglearning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and Debugging
 
AWS SAM으로 서버리스 아키텍쳐 운영하기 - 이재면(마이뮤직테이스트) :: AWS Community Day 2020
AWS SAM으로 서버리스 아키텍쳐 운영하기 - 이재면(마이뮤직테이스트) :: AWS Community Day 2020 AWS SAM으로 서버리스 아키텍쳐 운영하기 - 이재면(마이뮤직테이스트) :: AWS Community Day 2020
AWS SAM으로 서버리스 아키텍쳐 운영하기 - 이재면(마이뮤직테이스트) :: AWS Community Day 2020
 
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
 
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
 
Knative로 서버리스 워크로드 구현
Knative로 서버리스 워크로드 구현Knative로 서버리스 워크로드 구현
Knative로 서버리스 워크로드 구현
 
Programming Cascading
Programming CascadingProgramming Cascading
Programming Cascading
 
4. Application - Oozie Fork
4. Application - Oozie Fork4. Application - Oozie Fork
4. Application - Oozie Fork
 
Kubernetes object에 대하여
Kubernetes object에 대하여Kubernetes object에 대하여
Kubernetes object에 대하여
 
7. Application - Hive Bucket
7. Application - Hive Bucket7. Application - Hive Bucket
7. Application - Hive Bucket
 

Similar to Airflow introduce

코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable FunctionsJongin Lee
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리YoungHeon (Roy) Kim
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs기동 이
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10흥배 최
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine LearningJEEHYUN PAIK
 
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Bug sense 분석
Bug sense 분석Bug sense 분석
Bug sense 분석logdog
 
Data platform data pipeline(Airflow, Kubernetes)
Data platform data pipeline(Airflow, Kubernetes)Data platform data pipeline(Airflow, Kubernetes)
Data platform data pipeline(Airflow, Kubernetes)창언 정
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingAmazon Web Services Korea
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처Sunggon Song
 
[213]monitoringwithscouter 이건희
[213]monitoringwithscouter 이건희[213]monitoringwithscouter 이건희
[213]monitoringwithscouter 이건희NAVER D2
 
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 TestOkjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Testbeom kyun choi
 
Terraform을 이용한 Infrastructure as Code 실전 구성하기 :: 변정훈::AWS Summit Seoul 2018
 Terraform을 이용한 Infrastructure as Code 실전 구성하기 :: 변정훈::AWS Summit Seoul 2018 Terraform을 이용한 Infrastructure as Code 실전 구성하기 :: 변정훈::AWS Summit Seoul 2018
Terraform을 이용한 Infrastructure as Code 실전 구성하기 :: 변정훈::AWS Summit Seoul 2018Amazon Web Services Korea
 
Terraform을 이용한 Infrastructure as Code 실전 구성하기
Terraform을 이용한 Infrastructure as Code 실전 구성하기Terraform을 이용한 Infrastructure as Code 실전 구성하기
Terraform을 이용한 Infrastructure as Code 실전 구성하기JeongHun Byeon
 
KCSE 2015 Tutorial 빅데이터 분석 기술의 소프트웨어 공학 분야 활용 (...
KCSE 2015 Tutorial 빅데이터 분석 기술의  소프트웨어 공학 분야 활용 (...KCSE 2015 Tutorial 빅데이터 분석 기술의  소프트웨어 공학 분야 활용 (...
KCSE 2015 Tutorial 빅데이터 분석 기술의 소프트웨어 공학 분야 활용 (...Chanjin Park
 

Similar to Airflow introduce (20)

코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine Learning
 
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
Bug sense 분석
Bug sense 분석Bug sense 분석
Bug sense 분석
 
테스트
테스트테스트
테스트
 
Data platform data pipeline(Airflow, Kubernetes)
Data platform data pipeline(Airflow, Kubernetes)Data platform data pipeline(Airflow, Kubernetes)
Data platform data pipeline(Airflow, Kubernetes)
 
pgday-2023
pgday-2023pgday-2023
pgday-2023
 
Java8 람다
Java8 람다Java8 람다
Java8 람다
 
Nest js 101
Nest js 101Nest js 101
Nest js 101
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처
 
[213]monitoringwithscouter 이건희
[213]monitoringwithscouter 이건희[213]monitoringwithscouter 이건희
[213]monitoringwithscouter 이건희
 
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 TestOkjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
 
Terraform을 이용한 Infrastructure as Code 실전 구성하기 :: 변정훈::AWS Summit Seoul 2018
 Terraform을 이용한 Infrastructure as Code 실전 구성하기 :: 변정훈::AWS Summit Seoul 2018 Terraform을 이용한 Infrastructure as Code 실전 구성하기 :: 변정훈::AWS Summit Seoul 2018
Terraform을 이용한 Infrastructure as Code 실전 구성하기 :: 변정훈::AWS Summit Seoul 2018
 
Terraform을 이용한 Infrastructure as Code 실전 구성하기
Terraform을 이용한 Infrastructure as Code 실전 구성하기Terraform을 이용한 Infrastructure as Code 실전 구성하기
Terraform을 이용한 Infrastructure as Code 실전 구성하기
 
Gcd ppt
Gcd pptGcd ppt
Gcd ppt
 
KCSE 2015 Tutorial 빅데이터 분석 기술의 소프트웨어 공학 분야 활용 (...
KCSE 2015 Tutorial 빅데이터 분석 기술의  소프트웨어 공학 분야 활용 (...KCSE 2015 Tutorial 빅데이터 분석 기술의  소프트웨어 공학 분야 활용 (...
KCSE 2015 Tutorial 빅데이터 분석 기술의 소프트웨어 공학 분야 활용 (...
 

Airflow introduce

  • 2. 01 Airflow 소개 02 Airflow Architecture 04 Airflow QuickStart (StandAlone) 05 Airflow Clustering (Celery) 목차 CONTENTS 03 Airflow 특징
  • 3. 01 Airflow소개 Airflow? 에어비앤비(Airbnb)에서 만든 파이썬 기반의 데이터 워크플로우 작성, 모니터링, 스케줄링 플랫폼 Airflow시작History 2014.10 2015.06 2016.03 2019.01 Github도입, 발표 Apache Software Foundation 인큐베이팅 프로젝트 참여 Apache Airflow Top-Level- Project 승격
  • 5. 03 Airflow특징 Airflow 특징 ㆍDynamic - 파이프라인(동작순서, 방식)을 파이썬 코드를 이용하여 구성하기 때문에 동적인 구성이 가능 ㆍExtensible - python 이용하여 Operator, executor를 사용하여 사용자의 환경에 맞게 확장하여 구성하는 것이 가능함 ㆍElegant - 진자 템플릿(jinja template)을 이용하여 파라미터화 된 데이터를 전달하는 것이 가능 ㆍScalable - 분산구조와 메시지큐를 이용하여 많은 수의 워커간의 협업을 지원하고, 스케일 아웃이 가능함
  • 6. 03 Airflow특징 DAG Directed Acyclic Graph(방향성 비순환 그래프) 작업의 순서 혹은 관계의 종속성을 가지며 반복하는 싸이클이 없는 일방향성만을 가진 구조를 표현한 그래프 Directed Graph Acyclic Graph Directed Acyclic Graph
  • 7. 03 Airflow특징 Operators Task에서 실행되는 실제 작업 방식을 결정한다. 각 Task들은 Operator클래스를 인스턴스화해서 만든다. ㆍBashOperator - Bash 명령 실행 ㆍPythonOperator - Python 함수 실행 ㆍEmailOperator - 이메일 전송 ㆍSimpleHttpOperator - HTTP 요청 전송
  • 8. 03 Airflow특징 Executors Executor는 task 수행에 필요한 worker process를 실행한다 ㆍSequentialExector (default) - 한번에 하나의 Task intance를 실행 / SQLite3를 backend로 설정 ㆍLocalExecutor - Task 병렬 처리 가능 / MySQL이나 PostgreSQL을 backend로 설정 ㆍCeleryExecutor - Task를 여러 서버(node)에 분산 처리 가능 (cluster) / Celery backend (RabbitMQ, Redis, …) 설정이 필요 ㆍDaskExecutor - Celery와 같은 역할이지만 Dask로 처리 / Dask 클러스터는 Single Machine 또는 원격 네트워크에서 실행
  • 9. 04 AirflowQuickStart (StandAlone) 설치 Airflow 기본 설치 pip install apache-airflow pip install apache-airflow[all] Airflow extra package 설치
  • 11. 04 AirflowQuickStart (StandAlone) Example Code from airflow import DAG from airflow.operators.bash_operator import BashOperator from datetime import datetime, timedelta default_args = { 'owner': 'airflow’, 'depends_on_past': False, 'start_date': datetime(2015, 6, 1), 'email': ['airflow@example.com’], 'email_on_failure': False, 'email_on_retry': False, 'retries': 1, 'retry_delay': timedelta(minutes=5) } dag = DAG( 'tutorial', default_args=default_args, schedule_interval=timedelta(days=1)) t1 = BashOperator( task_id='print_date', bash_command='date', dag=dag) t2 = BashOperator( task_id='sleep', bash_command='sleep 5', retries=3, dag=dag) templated_command = """ {% for i in range(5) %} echo "{{ ds }}“ echo "{{ macros.ds_add(ds, 7)}}" echo "{{ params.my_param }}" {% endfor %} ""“ t3 = BashOperator( task_id='templated’, bash_command=templated_command, params={'my_param': 'Parameter I passed in’}, dag=dag) t2.set_upstream(t1) t3.set_upstream(t1) DAG 생성 Operator로 Task 생성 DAG 설정 Jinja Template upstream으로 Task간 관계를 정의
  • 12. 05 AirflowClustering (Celery) 1. Web server –> Workers - Task 실행 로그를 가져온다 2. Web server –> DAG files - DAG 구조 공개 3. Web server –> Database - Task 상태 가져오기 4. Workers –> DAG files - DAG구조 공개하고 Task 실행 5. Workers –> Database - Connection configuration, variables, XCOM 정보를 가져오고 저장 6. Workers –> Celery’s result backend - Task 상태 저장 7. Workers –> Celery’s broker - 실행명령 저장 8. Scheduler –> Database - DAG 실행 및 관련 Task 저장 9. Scheduler –> DAG files - DAG구조 공개하고 Task 실행 10. Scheduler –> Celery’s result backend - 완료된 Task의 상태정보를 가져온다. 11. Scheduler –> Celery’s broker - 실행할 작업명령을 넣습니다. Clustering Architecture - 1
  • 14. 05 AirflowClustering (Celery) Clustering 구성 방법 1. Celery 설치 2. Redis 혹은 RabbitMQ 설치 3. airflow.cfg 설정 executor = CeleryExecutor sql_alchemy_conn = mysql://{DB user}:{DB pw}@{DB host}:{DB port}/{database} broker_url = redis://:{Redis pw}@{Redis Host}:{Redis port}/0 result_backend = db+mysql://{DB user}:{DB pw}@{DB host}:{DB port}/{database} 4. Dags폴더 Sync를 위한 git repository 혹은 volume mount 5. 각 노드에 커맨드를 실행 pip install apache-airflow[celery] airflow scheduler airflow webserver airflow worker