본문 바로가기
Book & Lesson

[데엔스터디5] Airflow Deep Dive

by 카프리썬 2021. 9. 8.
728x90

데이터엔지니어링 스타터 키트 -5주차 후기

아래의 내용은 직접 유료강의를 수강하고, 배운점 및 추가로 공부한 내용을 기록한 내용입니다.

프로그래머스에서 진행하는 실리콘밸리에서 날아온 데이터엔지니어링 스타터키트 강의추전! 


트랜잭션

상태를 변화시키는 하나의 작업단위

 

- AutoCommit 이 True인 경우 

기본적으로 작성한 SQL 한줄한줄이 다 자동으로 커밋이 되서 DB에 바로바로 적용이 된다.

명시적으로 트랜잭션을 구현하기 위해선 BEGIN과 END구문 사이에 몇가지 쿼리를 넣는다.

그래서 그 몇가지 쿼리들을 하나의 작업단위(하나의 트랜잭션)으로 취급해서 다같이 성공해야 커밋이 되서 DB에 적용.

- AutoCommit이 False인 경우

한줄한줄이 다 트랜잭션이 되서 BEGIN~END구문이 필요하지 않음.

대신 직접 DB에 적용하기 위해선 명시적으로 COMMIT을 수행해야한다.

그 전까지 변경사항은 나한테만 적용되서 보이고 실제 DB에는 적용되지 않는다. 

 

2020.01.12 - 트랜잭션 특징(ACID) /Rollback /Commit

 

트랜잭션 특징(ACID) /Rollback /Commit

트랜잭션 데이터베이스의 상태를 변화시키는 하나의 작업단위를 의미합니다. DB의 상태는 딱! 2개 Rollback과 commit만 있음 그래서 두가지 상태를 작업하는 실행단위들 왜 트랜잭션이 필요할까? 왜

pearlluck.tistory.com

 

Airflow설치

https://pearlluck.tistory.com/678?category=939868 

 

AWS ec2(Ubuntu)에 Airflow2.0 설치하기

Ubuntu에서 airflow2.0 설치하는 방법 참고 https://github.com/keeyong/data-engineering-batch5/blob/main/docs/Airflow%202%20Installation.md GitHub - keeyong/data-engineering-batch5 Contribute to keeyon..

pearlluck.tistory.com

 

Airflow WEB UI 둘러보기

설치한 Airflow안에 DAG폴더안에 있는 스크립트를 가지고 생성한 DAG가 나타난다.

그중 하나의 DAG(my_first_dag)를 활성화(온오프 버튼 ON)시키고, 트리거를 실행시키면 (왼쪽에 있는 플레이버튼 클릭)

이렇게 Tree View나 Grap View로 DAG안에 task들의 현재상태를 시각적으로 볼 수 있다.

 

Airflow DAG 설정 둘러보기

그리고 DAG의 설정옵션도 이렇게 디테일하게 볼 수 있다.

그 중에서 몇가지 살펴보면 

- start_date : 가장 헷갈리는 개념인데, 처음 DAG가 실행되는 시간이 아니라 DAG가 COPY하기 시작한 시간이다.

 예를 들어 start_date가 7월 26일 오전1시고, 이 DAG는 daily 스케쥴을 가지고 있다면

 실제로 실행되는 시간은 7월 27일 오전1시이다. start_date와 다르다! 그래서 이 시간이 되면 자동으로 DAG가 활성화!

- catchup : backfill을 수행할 수 있는 옵션인데 

  catchup이 False이면 미래만 보고 실행해서 start_date기준으로 과거인 경우는 모두 무시한다.

  catchup이 True이면 과거까지 모두 생각해서 start_date기준으로 과거인 모든 경우에 다 실행을 하게 된다. 

  그래서 이전의 데이터를 한번에 가져와서 task를 수행하도록 하고 싶을때(backfill) 사용한다. 

- max_active_runs : DAG가 동시에 몇개 실행할 수 있는가

- concurrency : 하나의 DAG안에서 task가 동시에 몇개 실행할 수 있는가 

 

Airflow DAG 코드 둘러보기

Airflow 2.0에서는 DAG설정시 Tags를 지정할 수 있다. 그래서 DAG를 목적별로 구분하기 쉽다.

현재 예시 DAG는 매일 오전2시마다 스케쥴을 돈다. 

그리고 print_hello()와 print_goodbye() PythonOperator로 2개의 task를 생성했다. 

 

수업중에 한 Airflow DAG 복습해보고, 직접 API를 사용해서 DAG를 생성해서 airflow까지 돌려봐야겠다!

그리고 이걸 적용해서 내가 했던 음악추천챗봇까지 적용해보는게 나의 목표!

아 그리고 역시 수업이 점점 어려워지는것 같다..그런데 그럴수록 더 유용하고 유익한게 느껴진다.

다음수업땐 늦잠자지 말고 꼭 출석해야지............

반응형

$(document).ready(function() { var $toc = $("#toc"); $toc.toc({content: ".tt_article_useless_p_margin", headings: "h2,h3,h4"}); });