Cloud SA's This and That

[Big Data] - Airflow 서버 구축 & DB 연동 본문

Big Data

[Big Data] - Airflow 서버 구축 & DB 연동

뽀삐누냐 2023. 7. 21. 13:44
SMALL

[AirFlow] - workflow management tool

목적 : 전체 Flow 파악 / 배치 파이프라인 모니터링 및 스케줄링 / 각 Task 병렬 처리 / 유연한 DAG 작성

 

다양한 워크플로우 매니지먼트 툴이 존재하며 대표적으로는 Airflow, oozie, Azkaban이 있다.

 

<AirFlow>

-실제로 데이터 처리가 이루어지는 것은 아님 / workflow 작성 및 모니터링 작업을 프로그래밍을 도와주는 플랫폼

-파이썬 기반으로 코드를 작성해 워크플로우 관리 / 콘솔을 통해서도 관리 가능

-다양한 벤더들과 호환 가능

>Airflow webserver : 웹 UI 표현 / workflow 상태표시 및 실행

>Airflow Scheduler : 작업 기준 충족 여부 확인 / 종속 작업이 성공 완료 및 예약 간격이 주어지면 실행 가능작업인지 실행 조건 충족 체크

>충족 체크가 DB에 기록되면 Task들이 Worker에게 선택되어 작업을 실행

 

>파이썬 기반으로 데이터 분석하는 분들에게 쉽게 코드 작성 가능

>Airflow 콘솔이 따로 존재해서 task 관리를 서버에 들어가 관리할 필요가 없음

>각각의 작업별 소요시간을 체크할 수 있어서 Bottleneck을 찾을 때 유용

>다양한 vendor들의 service들과도 쉽게 연계가 가능

 

 

[Airflow 서버 구축 및 DB 연동] - 간단히만 테스트 해보았다.

Os : linux (ubuntu 18.04)

 

1. Airflow 설치

 

$ apt install python3-pip  # python과 pip 세팅 (python 버전이 3이여야 함)

$ pip3 install apache-airflow # pip을 통해 Airflow 패키지 설치

$ pip3 install cryptography psycopg2-binary boto3 botocore  # 부가적으로 필요한 패키지 설치

 

$pip list

 > 설치 확인

 

2. MySQL 설정

 

> MySQL에 Airflow를 위한 데이터베이스 생성

> airflow 데이터베이스 사용자 생성

 

3. Airflow 초기화

 

>Airflow 기본 디렉터리 생성 후 이동

>dags 디렉터리 생성

 

>환경변수 설정

 

$ airflow db init  # 초기화 진행

 >초기화 후 airflow 홈디렉터리에 생성된 파일들

 

 

/var/lib/airflow/airflow.cfg 수정 -> MySQL 연결

 

[변경 전]

 

 

[변경 후]

 

$ apt install libmysqlclient-dev -y.  # Airflow에 MySQL을 연결하기 위해 필요한 패키지 추가 설치

$ pip3 install mysqlclient

 

$ airflow db init   # 변경된 설정을 적용

 

**에러발생

에러 원인 : MySQL 전역변수 explicit_defaults_for_timestamp가 설정되지 않아서 발생

 

MySQL 설정 수정 (/etc/mysql/mysql.conf.d/mysqld.cnf)

 

$ systemctl restart mysql

 

다시 $ airflow db init 

>설정 적용 성공

 

 

 

4. Airflow Scheduler & Webserver 실행

 

Airflow scheduler 실행

 

Airflow webserver 실행

 

Airflow Webserver 실행 후 Web 화면

 

 

+ <Apache Airflow - DAG>

 그래프는 노드와 엣지로 표현하는데 방향이 있는 Directed Graph와 방향이 없는 Undirected Graph가 있다.

 방향이 있는 Directed Graph에서 루프가 하나도 없다면 Directed Acyclic Graph(=DAG)이다.

 즉 한쪽으로의 방향성만 가지는 특징을 가진다.

 

Airflow는 DAG를 잘 구성하여 원하는 형태의 DAG가 잘 실행되는지 살펴보는 워크플로우 툴이다.

LIST