☀️ Ch7. Airflow 외부 시스템과 통신하기
#️⃣ 1. Airflow 일반적인 사용 사례
1-1. 머신러닝 모델 학습
Airflow 워크플로는 일반적으로 오프라인 부분(:데이터 셋으로 학습하고 결과를 저장) 담당함
- 모델 학습 부분 : 데이터 로드하고 모델에 적합한 형식으로 전처리하여 모델 학습하는것
- 주기적으로 모델 재학습하는 것은 Airflow 배치 프로세스 기능에 적합함
1-2. 시스템 간 데이터 이동
Airflow 일반적인 사용 사례는 정기적인 ETL 작업이다.
- 프로덕션 데이터베이스 같은 곳에서 매일 데이터 다운로드하고 다른곳에서 변환
- 이때 스토리지 저장 공간은 증가하고, 모든 데이터를 처리하기 위해서는 분산 처리가 필요하게 됨
#️⃣ 2. Airflow 단일 태스크 실행 명령어
airflow db init
- AIRFLOW_HOME에 로컬 SQLite 데이터베이스를 초기화함(로그 저장하기 위함)
airflow tasks test
- 미리 지정된 실행 날짜에 단일 태스크 실행 가능함 (데이터베이스에 상태 기록 X)
#️⃣ 3. Airflow 적절한 사용법
Airflow를 태스크 트리거 시스템으로만 사용해야된다는 생각으로, Airflow가 자체적으로 실제 작업을 수행해서는 안된다고 주장한다.
그래서 Airflow가 실제 작업을 하기보다는 Apache Spark와 같은 데이터 처리 시스템에서 수행해야된다고 한다.
또한, Airflow가 시스템 리소스를 모두 차지할 만큼 매우 큰 작업을 하고 있다면, 이는 작업을 다른곳에서 수행하고 Airflow는 작업이 시작되고 완료될때까지 대기하는 것이 좋다.
#️⃣ 4. 기타 (실습에 쓰인 오퍼레이터)
- S3CopyObjectOperator
- s3hook.load_file_obj
- 옵션 replace=True로 하면 파일이 이미 있는 경우, 기존 파일을 대체해 멱득성 보장함
- MongoToS3Operator
- 중간 저장소 : 메모리
- S3ToSFTPOperator
- 중간 저장소 : 로컬 파일 시스템 (디스크)
- DockerOperator
- 옵션 auto_remove=True이면 완료 후 컨테이너 삭제
참고 : [책] Apache Airflow 기반의 데이터 파이프라인
'#️⃣ Data Engineering > Airflow' 카테고리의 다른 글
Ch9. Airflow 무결성 및 단위 테스트, 환경 구성 (0) | 2023.12.19 |
---|---|
Ch8. Airflow 커스텀 컴포넌트 빌드 (3) | 2023.12.12 |
Ch6. Airflow 워크플로 트리거 (0) | 2023.12.04 |
Ch5. Airflow 태스크 간 의존성 (0) | 2023.11.22 |
Ch4. Airflow 태스크 템플릿 및 XCom (0) | 2023.11.16 |