이미지 출처는 링크 or 아이펠 교육 자료입니다.
현재 노드에서는 강의 자료 github에 Airflow 사용 가이드가 올라와 있어, clone 진행
- docker-compose.yaml로 한번에 설치 예정
x-airflow-common
$ docker compose up # 이후, -d 옵션으로 백그라운드 실행하기
별도 설정을 하지 않았을 경우
사용할 DAG
bq_query_task
)from airflow import DAG
from airflow.utils.dates import days_ago
from airflow.contrib.operators.bigquery_operator import BigQueryOperator
default_args = {
"owner": "airflow",
"depends_on_past": False,
"start_date": days_ago(1),
"email_on_failure": False,
"email_on_retry": False,
"retries": 1,
}
dag = DAG(
"bigquery_airflow_example",
default_args=default_args,
description="A simple BigQuery Airflow example",
schedule_interval="@daily",
)
bq_query_task = BigQueryOperator(
task_id="bq_query_example",
sql="""SELECT * FROM `bigquery-public-data.samples.github_nested`""",
use_legacy_sql=False,
dag=dag,
)
용어 정리
- DAG: Airflow의 최상위 작업으로 정의
- task를 단위로 가짐(==노드)
- Operator: task 정의
- 이외에도,
@task
어노테이션을 통해 커스터마이징 가능- operator 자체가 task를 의미
- Hook
- task로 인정되지는 않으나, task안에서 실행될 수 있는 내용
Google Cloud
iam
검색
서비스 계정
클릭
서비스 계정 만들기
만들고 계속하기
클릭BigQuery 관리자
선택만든 계정에 접속 > 키
클릭 > 키 추가
> 새 키 만들기
JSON으로 되어있는지 확인 후, 완료 버튼 클릭
키가 컴퓨터 내부에 저장됨!
Airflow로 돌아와서 JSON 정보를 Keyfile JSON
항목에 붙여넣기
google cloud의 프로젝트 ID -> Project Id
에 붙여넣기
Save 후, 다시 DAG run
Last run
클릭하여 상태 확인
정보 교체: connectionID를 google_cloud_default
로 교체
Auto-refresh가 켜져 있어 업데이트 될 예정(기다리기)
Your default credentials were not found. 에러 발생 시
- ConnectionId를 바꾸면서 keyfile JSON 정보가 초기화되어 발생한 문제
- 다시 붙여넣어 해결
- 또한, Google cloud IAM 설정이
BigQuery 관리자
로 잘되어 있는지도 재확인
$ docker compose down --volumes
Settings
> Access Tokens
클릭
Create new token
클릭
설정
mlops_quicklab
토큰이 발급되면, 노출되지 않도록 잘 관리할 것
@task
, @dag
형태로 바로 사용 가능함Airflow 구동 후, Admin > Variables 접속
허깅 페이스 토큰 추가하기
이렇게 등록하면, 실제 토큰값이 보이지 않아 안전
HF_USERNAME도 추가
huggingface_hub
를 환경변수에 넣어줘야 함!$ echo "_PIP_ADDITIONAL_REQUIREMENTS=huggingface_hub" >> .env
$ docker compose down --volumes
$ docker compose up -d
raise AirflowNotFoundException(f"The conn_id `{conn_id}` isn't defined")
이미 저장했는데요?
- docker compose down 시
--volumes
옵션을 사용했기 때문에 모두 날아간 상태!- 다시 등록할 것
Not found: Table...
에러가 날 것임gcod
만들기does not have storage.objects.create access to the Google Cloud Storage object
버킷 만들기 클릭
이름 설정 : mlops_airflow_2
리전 : Multi-region
확인 클릭 후 기다리기
버킷 이름을 코드에 업데이트할 것
Airflow에서 적용 확인 가능
추가 설정: 권한 설정에서 storage 접근 권한 부여 필요
에러: KeyError: 'Variable HF_USERNAME does not exist'
- docker를 다시 올리는 과정에서 Variable 설정이 초기화되었기 때문
HF_API_TOKEN
, HF_USERNAME
데이터 품질 향상
데이터 거버넌스 강화
데이터 민주화
분석 속도 향상
비용 절감
데이터 신뢰도 향상
https://www.databricks.com/kr/glossary/medallion-architecture
Bronze
Silver
Gold
구성 요소
데이터 레이크 : 원시 데이터 저장 공간
데이터 레이크하우스 : 데이터 레이크 + 테이블, ACID 트랜잭션, 스키마 관리 등 제공
데이터 처리 엔진
데이터 카탈로그: 메타 데이터 관리 및 검색
데이터 거버넌스 도구: 데이터 접근 제어, 데이터 품질 관리, 데이터 lineage 등을 추적
오케스트레이션 도구: 데이터 파이프라인의 자동화 & 관리
BI 및 분석 도구: 데이터 시각화 및 분석
Runner 분산에 최적화되지 않은 상태
Streamming 미지원
Task 사이의 데이터 전송이 효율적이지 않음
데이터 보안에 약함
참고 자료