airflow를 실행하려고 할 때 발생하는 Permission Denied 오류 해결 방법에 대해 설명하고자 한다. situation airflow-worker_1 | Traceback (most recent call last): airflow-worker_1 | File "/usr/local/lib/python3.7/logging/config.py", line 563, in configure airflow-worker_1 | handler = self.configure_handler(handlers[name]) airflow-worker_1 | File "/usr/local/lib/python3.7/logging/config.py", line 736, in configure_handler airflow..
situation airflow를 실행하기 위해 docker compose 를 작성했는데 Unsupported config option for services.airflow-cli: 'profiles' 오류가 났다. 이는 docker-compose 파일에 지원하지 않는 설정 옵션들이 포함되어 있을 때 발생한다. 즉, 'profiles'라는 옵션이 docker-compose의 이전 버전에서는 지원되지 않았던 옵션이기 때문에 발생한 오류이다. solution 먼저, docker 버전을 확인한다. docker-compose --version 만약 1.29버전 보다 낮다면 업그레이드를 시켜준다. # docker-compose 파일 위치 확인 whereis docker-compose # 보통 /usr/bin/do..
TaskGroup이란 태스크 그룹은 여러 개의 task를 하나의 그룹으로 묶어 관리하는 airflow 기능이다. 이를 통해 코드의 재사용성을 높이고 복잡한 워크플로우를 더 구조화된 방식으로 작성할 수 있게 된다. 예시 코드 태스크 그룹으로 설정하는 코드는 매우 간단하다 ! with TaskGroup(group_id='GROUP_ID', dag=dag) as GROUP_ID_PYTHON : 그룹 ID를 지정해주고 들여쓰기를 통해 태스크들을 묶어주면 된다. GROUP_ID는 웹 UI상에서 보는 이름이고 as 뒤에 GROUP_ID_PYTHON은 python에서 사용하는 명칭이다. from airflow.utils.task_group import TaskGroup # 기본 dag 설정 default_args ..
이런 오류가 떴다면 필요한 python 라이브러리를 정의하지 않았거나 설치하지 않았다는 뜻이다. Airflow의 DAG를 Docker 컨테이너 내에서 실행시키려면 requirements.txt파일에 필요한 Python 패키지를 정의하고, 그 패키지들을 Docker 컨테이너 내에 설치해야 한다. 이렇게 해야 DAG가 필요한 모듈 및 라이브러리를 올바르게 사용할 수 있다. 1. requirements.txt 작성 예를 들어, 위와 같은 오류 메세지가 뜬 경우 xmltodict라는 라이브러리를 설치하도록 requirements.txt를 작성해주면 된다. 라이브러리만 작성할 경우 최신버전으로 설치되니 특정 버전을 설치하고 싶다면 ==1.4.0 과 같이 지정해주면 된다. 2. Dockerfile 작성 이제 doc..
Dag를 실행하는 방법 주기적 실행: schedule로 지정 다른 Dag에 의해 트리거 Explicit Trigger: Dag A가 분명하게 Dag B를 트리거 (TriggerDagOperator) Reactive Trigger: Dag B가 Dag A가 끝나기를 대기(ExtrnalTaskSensor) 알아두면 좋은 상황에 따라 다른 태스크 실행 방식들 조건에 따라 다른 태스크로 분기 (BranchPythonOperator) 과거 데이터 Backfill시에는 불필요한 태스크 처리 (LatestOnlyOperator) 앞단 태스크들의 실행상황 어떤 경우에는 앞단이 실패해도 동작해야 하는 경우가 있을 수 있음 Explicit trigger vs Reactive trigger Explicit trigger T..
데이터 처리의 일반적인 단계 데이터 수집 (Data Collection) 데이터 저장 (Data Storage) 데이터 처리 (Data Processing) 이 과정에서 서비스 효율을 높이거나 의사결정을 더 과학적으로 하게 됨 데이터 처리의 고도화 처음에는 배치로 시작 처리할 수 있는 데이터의 양이 중요 (얼마나 큰 데이터를 한꺼번에 처리할 수 있는가) 서비스가 고도화되면서 실시간 처리 요구가 생기기 시작 Realtime 처리 vs Semi Realtime 처리 동일 데이터 소비가 필요한 케이스 증가: 다수의 데이터 소비자 등장 처리량(Throughput) vs 지연시간(Latency) 처리량(Throughput): 주어진 단위 시간 동안 처리할 수 있는 데이터의 양 클수록 처리할 수 있는 데이터의 양이..