본문 바로가기
미분류

airflow 시작해보기 1 - 설치

by 혜리루 2019. 12. 12.

1. 서론

 

Apache Airflow는 오픈 소스 워크 플로우 관리 플랫폼입니다.

말그대로 일련의 작업들의 흐름을 관리해주는 플랫폼인데요, cron만으로 하기 어려운 분기를 한다거나 예외처리를 하는 등의 복잡한 로직을 쉽게 만들 수 있습니다. 최근에는 주로 빅데이터 분석 등의 작업에 많이 사용되는 듯 합니다.

 

airflow 공식 웹페이지에서 설명하는 airflow의 특징은 다음과 같습니다.


1. 순수한 파이썬 코드로 사용이 가능합니다. cmd나 xml코드 없이 복잡한 workflow도 쉽게 빌드할 수 있습니다.

2. web ui를 제공합니다. 

3. 다양한 plug-and-play operator 들을 제공합니다. Google Cloud Platform, Amazon Web Services, Microsoft Azure등을 이용한 다양한 task들을 airflow로 관리할 수 있습니다.

4. 사용이 쉽습니다. 또 적용범위의 제한이 없어 ml 모델을 만들거나, 데이터를 transfer하거나 인프라를 관리하는 등 어떤 작업에도 사용할 수 있습니다.

5. 오픈소스 프로젝트입니다.


 

저도 airflow에 대한 얘기는 굉장히 자주 들었었는데요, 워크플로우를 관리한다는 추상적인 개념만 알고 있었지 구체적으로 이 녀석이 어떤 식으로 사용이 되는지는 잘 몰랐습니다. 이 기회에 web hook으로 슬랙메시지를 보내는 간단한 예제를 코딩해보면서 학습해보려고 합니다.

 

 

2. airflow 설치하기

 

air flow의 홈 디렉토리 디폴트 값은 ~/airflow입니다. 아래처럼 필요에 따라 수정도 가능합니다.

export AIRFLOW_HOME=~/airflow

apache-airflow는 python pip로 간단하게 설치할 수 있습니다.

 

이게 끝입니다. 정말 최고네요.

하지만 apache-airflow 패키지는 airflow를 시작하기 위해 필요한 것들만 들어있는 기본 패키지입니다. 필요에 따라 아래처럼 다양한 서브패키지들도 설치할 수 있습니다.

 

all

pip install 'apache-airflow[all]'

All Airflow features known to man

all_dbs

pip install 'apache-airflow[all_dbs]'

All databases integrations

async

pip install 'apache-airflow[async]'

Async worker classes for Gunicorn

celery

pip install 'apache-airflow[celery]'

CeleryExecutor

cloudant

pip install 'apache-airflow[cloudant]'

Cloudant hook

crypto

pip install 'apache-airflow[crypto]'

Encrypt connection passwords in metadata db

devel

pip install 'apache-airflow[devel]'

Minimum dev tools requirements

devel_hadoop

pip install 'apache-airflow[devel_hadoop]'

Airflow + dependencies on the Hadoop stack

druid

pip install 'apache-airflow[druid]'

Druid related operators & hooks

gcp

pip install 'apache-airflow[gcp]'

Google Cloud Platform

github_enterprise

pip install 'apache-airflow[github_enterprise]'

GitHub Enterprise auth backend

google_auth

pip install 'apache-airflow[google_auth]'

Google auth backend

hdfs

pip install 'apache-airflow[hdfs]'

HDFS hooks and operators

hive

pip install 'apache-airflow[hive]'

All Hive related operators

jdbc

pip install 'apache-airflow[jdbc]'

JDBC hooks and operators

kerberos

pip install 'apache-airflow[kerberos]'

Kerberos integration for Kerberized Hadoop

kubernetes

pip install 'apache-airflow[kubernetes]'

Kubernetes Executor and operator

ldap

pip install 'apache-airflow[ldap]'

LDAP authentication for users

mssql

pip install 'apache-airflow[mssql]'

Microsoft SQL Server operators and hook, support as an Airflow backend

mysql

pip install 'apache-airflow[mysql]'

MySQL operators and hook, support as an Airflow backend. The version of MySQL server has to be 5.6.4+. The exact version upper bound depends on version of mysqlclient package. For example, mysqlclient 1.3.12 can only be used with MySQL server 5.6.4 through 5.7.

oracle

pip install 'apache-airflow[oracle]'

Oracle hooks and operators

password

pip install 'apache-airflow[password]'

Password authentication for users

postgres

pip install 'apache-airflow[postgres]'

PostgreSQL operators and hook, support as an Airflow backend

qds

pip install 'apache-airflow[qds]'

Enable QDS (Qubole Data Service) support

rabbitmq

pip install 'apache-airflow[rabbitmq]'

RabbitMQ support as a Celery backend

redis

pip install 'apache-airflow[redis]'

Redis hooks and sensors

s3

pip install 'apache-airflow[s3]'

S3KeySensor, S3PrefixSensor

samba

pip install apache-airflow[samba]'

airflow.operators.hive_to_samba_operator.Hive2SambaOperator

slack

pip install 'apache-airflow[slack']

airflow.operators.slack_operator.SlackAPIOperator

ssh

pip install 'apache-airflow[ssh]'

SSH hooks and Operator

vertica

pip install 'apache-airflow[vertica]'

Vertica hook support as an Airflow backend

 

3. db init하기

 

에어플로우는 task를 실행하기 위해 db를 사용하는데요, 따로 db 설정을 하지않는다면 디폴트로 sqlite를 사용합니다. 저는 airflow를 학습하는 단계기때문에 다른 db를 설치하지 않고 간단하게 sqlite를 이용했습니다.  airflow initdb 명령으로 간단하게 db설치, initialize를 할 수 있습니다.

 

따로 설정 없이도 홈 디렉토리의 airflow 디렉토리에 airflow db파일이 생성되었습니다.

 

sqlite가 아닌 다른 db를 세팅하고싶다면  Initializing a Database Backend 를 확인 해보세요.

 

이제 바로 airflow 서버를 실행할 수 있습니다. 디폴트 포트번호는 8080입니다.

airflow webserver -p 8080

 

이런 화면이 뜨면 성공입니다. 예제 DAG들이 많이 보이네요.

 

4. DAG

 

DAG라,,, 알고리즘이나 자료구조시간에 본듯 제법 낯이 익은데요,,, 오래 되어서 기억이 잘 안나니 다시 찾아보았습니다.

 

유향 비순환 그래프(directed acyclic graph), 방향 비순환 그래프(방향 비사이클 그래프, 방향성 비사이클 그래프)는 수학, 컴퓨터 과학 분야의 용어의 하나로서 방향 순환이 없는 무한 유향 그래프이다.

 

유향 그래프 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

말이 조금 어렵지만 풀어서 쓰자면 DAG는 방향성이 있지만 순환하지 않는 그래프를 말합니다. 때문에 DAG에는 노드들간에 선후관계가 존재합니다.

 

airflow에서는 DAG로 각각의 워크플로우를 구성합니다.

 

다음 포스팅에서는 실제 워크플로우를 생성하고 슬랙 메시지를 통해 작동을 시켜보겠습니다.

 

출처: https://airflow.apache.org/docs/stable/

댓글