1.1 데이터 파이프라인 소개
1.1.1 데이터 파이프라인 그래프
- 방향성 비순환 그래프 DAG
- 앞선 태스크가 완료되어야 뒤의 태스크 실행 가능
- 순환 그래프의 경우, 상호 의존성이 있어 명확한 실행 경로 파악 불가
1.1.2 파이프라인 그래프 실행
- 그래프 안 태스크는 각각 개방된 상태, 이전 태스크가 완료되었는지 확인
- 태스크 완료되면 다음 태스크를 대기열 추가
- 그래프의 모든 태스크가 완료될 때 까지 실행
1.1.3 그래프 파이프라인과 절차적 스크립트 파이프라인 비교
- 개별적인 태스크로 병렬 구성이 가능하기 때문에, 가용 컴퓨팅 리소스를 효율적으로 활용 가능
- 절차적 (모놀리식) 스크립트의 경우 중간 태스크가 실패하면 전체를 재실행 해야함.
1.4 워크플로 매니저를 이용한 파이프라인 실행
- 워크플로 관리 시스템의 주요 차이
- 정의 방식
- Oozie : 정적 (XML) 파일을 사용하여 워크플로 정의
- Luigi, Airflow : 코드로 정의
- 워크플로 관리자 제공 기능
- Make, Luigi : 워크플로 스케줄 기능 없음. 반복 실행하려면 Cron과 같은 추가 도구 사용
- Airflow : 스케줄, 모니터링, 웹 인터페이스 등 제공
- 정의 방식
1.2 Airflow 소개
1.2.1 파이썬 코드로 유연한 파이프라인 정의
- 파이썬으로 DAG 파일 정의
1.2.2 파이프라인 스케줄링 및 실행
Airflow 구성요소
- 스케줄러 : DAG 분석하고 현재 시점에서 DAG의 스케줄이 지난 경우 워커에 DAG의 태스크 예약
- 워커 : 예약된 태스크를 선택하고 실행
- 웹 서버 : DAG를 시각화하고 실행과 결과를 확인하는 인터페이스 제공
순서 요약
- DAG 워크플로 작성하면 -> 파일 분석하고 -> 태스크와 의존성 및 예약주기 확인
- 스케줄러가 마지막 DAG까지 내용 확인 후 예약 주기가 경과했는지 확인. 예약 주기가 현재 시간 이전이라면 실행되도록 예약
- 예약된 각 태스크에 대해 의존성 확인. 의존성 태스크가 완료되지 않으면 실행 대기열에 추가
- 스케줄러는 1단계로 다시 돌아간 후 새로운 루프를 잠시 동안 대기
1.2.3 모니터링과 실패 처리
- 웹 인터페이스 제공
- 실패 처리
- 실패시에 재시도(실행 간격을 설정할 수 있음)
- 재시도 실패시 알림 설정 가능
- 로그 확인하며 디버깅 가능
- 트리 뷰에서 개별 태스크 결과 삭제하고, 종속된 태스크를 모두 재실행할 수 있음.
1.2.4 점진적 로딩 및 백필
- 최종 시점 및 예상되는 다음 스케줄 주기를 알려줄 수 있음
- 매번 전체 데이터 셋을 다시 처리할 필요가 없고 부분 실행 가능. (시간 비용 절감)
- 백필 : 특정 옵션(기간) 기준으로 다시 실행할 수 있는 기능.
1.3 언제 Airflow를 사용해야 할까
1.3.1 적합
- 파이썬 사용
- 파이프라인을 정기적으로 실행하고 점진적(증분)처리를 통해 재실행 없는 파이프라인 구성 가능
- 다양한 DB, 클라우드 통합
- 백필 기능으로 코드 수정 후 재생성이 필요한 데이터 재처리 가능
- 웹 인터페이스로 모니터링, 오류 디버깅 편리
- 오픈소스
1.3.2 부적합
- 스트리밍 워크플로
- 추가, 삭제 태스크가 빈번한 동적 파이프라인의 경우
- 파이썬 사용하지 않는 팀
- 파이프라인 규모가 커지면 복잡해, 엄격한 관리 필요
1.4 이후 내용
- 구성 설명
- 동적 DAG
- 커스텀 오퍼레이터 구현
- 컨테이너화 된 태스크 실행
- 배포 패턴
- 모니터링
- 보안
- 클라우드 아키텍쳐
요약
- DAG
- 웹 서버, 스케줄러, 워커 프로세스
728x90
'데이터 어쩌구 > 기술 써보기' 카테고리의 다른 글
C3. Airflow의 스케줄링 (0) | 2024.06.02 |
---|---|
C2. Airflow DAG의 구조 (0) | 2024.06.02 |
[4주차] ReAct Agent 만들기 (1) | 2024.04.02 |
[paper] ImageBind : One Embedding Space To Bine Them All (0) | 2024.03.25 |
이미지 생성 모델 (2024. 02) (0) | 2024.02.27 |