개요기존 AWS에서 CeleryExecutor 를 활용하여 EC2 기반으로 Airflow 를 운영하였고 이번에 DevOps 팀에서 EKS를 구축하게 되면서 이를 기회 삼아 KubernetesExecutor 를 활용하여 EKS 기반으로 Airflow 를 구축하고 기존 Airflow 의 DAG 들의 이관을 계획하게 되었습니다. 이번 포스팅에서 기존 방식은 어떤 문제가 있었고 어떻게 EKS에 Airflow 를 구축하였고 EKS 기반으로 옮기게 되면서 얻게 된 장단점에 대해 써보겠습니다.기존 방식과 문제점기존에는 Airflow 가 제공하는 CeleryExecutor 를 통해 여러 EC2 인스턴스를 활용하여 Master-Worker 구조의 클러스터를 구축했었습니다. 먼저, CeleryExecutor 의 방식에 대..
Data/Airflow
개요 Airflow 의 성능을 높이기 위해서 설정 해야 하는 여러 가지 옵션들이 있다. airflow.cfg 파일에서 사용할 수 있는 해당 옵션들에 대해서 알아보고 정리하는 시간을 가져보려고 한다. Airflow 환경 Level [core] parallelism Airflow 환경 내에서 동시에 실행할 수 있는 최대 Task의 수 이다. 예를 들어 32로 설정되어 있다면 Airflow 환경 내에서 동시에 실행될 수 있는 Task의 수는 최대 32개라는 뜻이다. (default : 32) max_active_tasks_per_dag DAG당 한 번에 스케줄링되는 최대 Task의 수를 결정한다. 즉, 하나의 DAG에서 동시에 실행될 수 있는 Task의 수를 말한다. (default :16) Airflow에 ..
개요현재 회사에서 Workflow Management 툴로 Airflow를 도입하였고 DAG를 통해 ETL과 같은 Job을 관리하고 있다. 데이터 플랫폼 구축의 초기 단계이기 때문에 하나의 Repository에서 모든 DAG를 관리하였고 배포도 직접 서버에 접속해서 수동으로 배포하고 있었고 이번에 DW로 BigQuery를 선정하게 되면서 원본 데이터들을 ETL을 통해 DW로 적재하거나 DM을 만드는 DAG가 점점 늘어날 것이고 DAG를 개발하는 인원도 점차 늘어날 것이라고 판단해서 이번에 Airflow DAG에 대한 CI/CD를 구축하기로 결정하게 되었고 CI/CD를 구축하기까지의 여정에 대해 포스팅 해보려고 한다.CI/CD란?보통 개발이 끝난 application이 있다면 이를 실제 서버에 배포하는 것..
개요 airflow가 DAG의 로그를 기록할 때, 로그 라인의 시간 정보의 시간대가 UTC로 나타나는 문제. 로그가 기록될 때 생성되는 파일 이름에서 시간을 지정하면 UTC로 나타나는 문제. 해결 방법 로그 라인 시간대 UTC 문제 # airflow.cfg ... [logging] ... log_format = [%%(asctime)s] {%%(filename)s:%%(lineno)d} %%(levelname)s - %%(message)s ... log_format이 남기는 로그의 포맷인데 asctime이 UTC로 나오게 된다. airflow는 base_log_folder로 로그를 저장하는데 worker들이 task를 실행하고 남기는 로그들의 타임스탬프가 UTC로 되어 있어서 이를 현지 시간대(KST)로..
Airflow 설치에 대한 포스팅은 다음에서 확인할 수 있다. 혹시 설치를 아직 안 했다면 다음 포스팅을 참고하자. [Airflow] Apache Airflow 설치하기 데이터 파이프라인을 구축할 때 이 Workflow를 관리하기 위한 많은 오픈 소스 플랫폼들이 있는데 그중 인기 있고 많은 기업에서 사용 중인 Apache Airflow를 설치를 한 번 해보겠다. 현재 Airflow는 윈도 mungiyo.tistory.com Airflow에서는 파이프라인을 정의하기 위해서 DAG를 사용한다. DAG란 Directred Acyclic Graph의 약자로 방향성 있는 비순환 그래프라고 불린다. 각각의 Task들의 Workflow를 만들 수 있는데 예를 들어, ETL 파이프라인을 구축한다고 한다면 각각의 Tas..
데이터 파이프라인을 구축할 때 이 Workflow를 관리하기 위한 많은 오픈 소스 플랫폼들이 있는데 그중 인기 있고 많은 기업에서 사용 중인 Apache Airflow를 설치를 한 번 해보겠다. 현재 Airflow는 윈도우에서의 설치를 지원하지 않아 윈도우의 WSL을 활용하여 설치해보겠다. 실행 환경 Python 3.8.x Windows 10 WSL2 가상 환경 만들기 # airflow를 설치할 디렉토리 생성 $ mkdir airflow-project # 디렉토리로 이동 $ cd airflow-project # 가상 환경 생성 $ python -m venv .venv # 가상 환경 활성화 $ source .venv/bin/activate # 활성화 완료 시 (.venv) $ Apache Airflow 설..