💡Today I Learned
- 데이터 파이프라인과 Airflow에 대한 두 번째 수업을 진행했습니다.
- Airflow 설치 및 실습
1. 트랜잭션 이해하기
- 테이블 업데이트 (Full Refresh vs. Incremental Update)
TRUNCATE: 조건 x, 테이블의 모든 레코드 삭제, SQL 트랜잭션 무시
DELETE FROM: 조건에 맞는 레코드 삭제, SQL 트랜잭션 준수
- 트랜잭션이란?
: BEGIN ~ COMMIT/END or ROLLBACK
auto commit = True: 기본적으로 모든 SQL 문이 물리적인 테이블 공간에 바로 커밋됨, BEGIN~END로 바꿀 수 있음
auto commit = False: 모든 operation이 자동으로 커밋되지 않음, 모두 staging 상태로 존재함, 따라서 connection 객체의 .commit()과 .rollback() 함수로 커밋할지 말지 결정
2. Airflow 설치하기
- 설치 방법
1. 직접 설치/운영
: 도커 위에서 Airflow 이미지 - 컨테이너 설치
: AWS EC2 등의 리눅스 서버에 직접 설치 (제일 좋은 방법 = 리눅스 서버 위 > Docker Container > Airflow 띄우기)
2. 클라우드 사용 (실제 회사의 프로덕션 환경에서 선호됨)
: AWS, 구글 클라우드(Cloud Composer 사용), MS Azure
- *) 리눅스 데모
ssh: 리눅스 서버 로그인 프로그램 (private / public key pair)
sudo: 슈퍼유저 (관리자 권한)
apt-get: 프로그램 설치/삭제
su: substitute user, 현재 사용중인 사용자 계정 로그아웃 없이 다른 사용자의 권한 얻기
vi: 텍스트 에디터 (i, :wq!, dd, /, esc, :q! ...)
: Airflow 서버에 총 3개의 account 사용 (1. ubuntu_메인 슈퍼유저 2. postgres_postgres 메타DB 3. airflow_airflow 서비스 실행용)
: 슈퍼유저 권한으로 설치하지 x (보안 이슈, 서비스별로 계정을 따로 만들고 계정마다 필요한 권한을 줌)
3. Airflow 설치 using Docker
- Airflow 코드의 기본 구조
1. DAG 객체 만들기 (이름, 실행주기_crontab 문법, 실행날짜, owner, etc...)
2. DAG 구성하는 task들 만들기 (task별로 적합한 operator 선택)
3. 최종적으로 task들 간의 실행순서 결정
- DAG 설정
: catchup = False (시작 날짜 ~ 스케줄링 정책에 따라 밀린 만큼 따라잡기 비활성) → Incremental Update에서만 의미있음
- DAG 트리거 (터미널에서 실행)
: airflow tasks test/run [DAG이름] [Task 이름] [날짜]
: test와 run은 동일, run은 실행 결과가 메타데이터DB에 기록됨
- Docker 내에서 Airflow 스케줄러 로그인
$ docker ps --돌고있는 컨테이너 확인
$ docker exec -it [docker-scheduler 컨테이너 ID] sh --컨테이너 안에서 shell script 띄우기
: 연결 후 커맨드라인으로 Airflow 명령어 실행
- airflow dags list
- airflow tasks list dag_v1
- airflow tasks test dag_v1 ls 2020-08-09
- airflow dags test dag_v1 2019-12-08
- airflow dags backfill dag_v1 -s 2019-01-01 -e 2019-12-31
'데브코스 > TIL' 카테고리의 다른 글
[TIL] 10주차_Day44: 데이터 파이프라인, Airflow (4) (1) | 2023.12.23 |
---|---|
[TIL] 10주차_Day43: 데이터 파이프라인, Airflow (3) (1) | 2023.12.22 |
[TIL] 10주차_Day41: 데이터 파이프라인, Airflow (1) (1) | 2023.12.19 |
[TIL] 8주차_Day35: 데이터 웨어하우스 관리, 고급 SQL, BI 대시보드 (5) (1) | 2023.12.01 |
[TIL] 8주차_Day34: 데이터 웨어하우스 관리, 고급 SQL, BI 대시보드 (4) (0) | 2023.11.30 |