본문 바로가기
Database

Airflow Web을 통한 Dag 핸들링

by BTC_최총무 2023. 7. 5.

베하~~ 안녕하세요!!

 

인사통의 BTC_김회장, 최총무입니다!!

오늘은 Airflow Web에서 Dag를 조작해볼 시간입니다!!

 

아마 가장 실무에서 많이 다룰 부분이기도 하니 함께 살펴보시죠~

 

지난번에 포스팅한 대로 Airflow는 버전별로 UI가 다르기때문에 저는 2.6.2 버전을 사용함을 알려드립니다!!

혹시 버전별 UI 차이가 궁금하시다면 아래 포스팅을 참고해주세요~

 

Airflow 버전별 Web UI 및 기능 활용

베하!! 모두 반갑습니다!! 인사통의 BTC_김회장, 최총무입니다!! 오늘 함께 배워볼 주제는 Airflow 버전별 Web UI 및 기능 활용에 대한 부분입니다!! 차근차근 같이 진행해보자구요!! 개요 Airflow 버전별

btcd.tistory.com

 

개요

  • Task 작업 상태
  • Task Clear 및 옵션

1. Task 작업상태

이전에 함께했던 Web UI 비교편에서 DAG를 클릭한 내부 화면 기억 나시나요??

해당 화면에서 DAG 내부의 Task의 작업상태을 한번에 확인할 수 있고, 상황에 따라 Task 실행을 조작할 수 있습니다!!

 

Tutorial dag를 기준으로 Task의 작업상태에 대해 먼저 설명드리겠습니다!!

여기에서 주목하실 부분은 우측에 있는 이 상태 목록들입니다!!

해당 상태들 중 대표적으로 볼 수 있는 상태들에 대해서 간략히 설명드리겠습니다!

 

1. queued : task가 executor에 할당되어 실행되기를 기다리는 상태입니다.

2. running : task 실행중으로, 처리중인 상태입니다.

3. failed : 작업 인스턴스가 실패했음을 의미합니다.

4. success : 작업 인스턴스가 성공적으로 완료되었음을 의미합니다.

5. up_for_retry : task가 실패하였으나 재시도 횟수 설정으로 재스케쥴 할 예정인 상태입니다.

6. up_for_reschedule : 작업자의 reschedule 설정에 의해 reschedule 대기중인 상태입니다.

7. skipped : 특정 조건으로 인해 작업을 건너뛴 상태입니다.

 

이외에도 상태가 많지만 제가 많이 본 상태는 위와 같습니다!!

 

이렇게 상태에 대한 의미를 파악해두면 조치가 필요한 상황인지 기다리면 해결될지 알 수 있겠죠?


2. Task Clear 및 옵션

Task의 진행 상태를 파악했다면 조치를 해야겠죠?

 

Airflow의 Job 특성 상 한 task가 멈추게 되면 이를 선행으로 바라보고 있는 모든 task들에 영향이 가게 됩니다!!

그렇기 때문에 빠르게 오류를 해결해준 뒤 다시 정상화 시켜야합니다.

 

만약  failed나 의도치 않은 skipped 상태가 나와 후속 작업들이 다 멈춘다면 큰일이겠죠?

 

 

 

왼쪽 그래프를 통해 해당 dag는 print_date, sleep, templated 3가지 task로 이루어진 dag임을 확인할 수 있습니다!

이 창에서 간단하게 task를 조작해보도록 하겠습니다.

 

해당 dag의 경우 print date task 실행 후 sleep과 templated가 같이 실행되어야 하나 Print_date가 fail이 된 상황입니다.

이런 에러 발생 시 로그 탭에서 에러 내용을 확인해서 에러 원인을 수정해야겠죠?

 

그러면 수정 이후에는 어떻게 해야 할까요?

이럴때 사용하는것이 이 우측 박스들입니다!

위 상황에 맞는 선택은 바로 Clear task입니다.

Clear를 진행하게 되면 해당 task를 처음부터 다시 실행하게 됩니다.

 

Clear 버튼을 누르면 clear 옵션을 고를 수 있습니다!!

이 옵션들은 잘쓰면 편리하지만 실수하게 되면 큰 파장을 일으킬 수 있습니다.

 

간단히 설명드리면 아래와 같습니다.

 

Past : 해당 task의 과거 task를 함께 clear합니다.

Future : 해당 task의 미래 task를 함께 clear합니다.

Upstream : 해당 task의 의존성 상위 task를 함께 clear합니다.

Downstream : 해당 task에 직접 종속된 task를 함께 clear합니다.

Recursive : 해당 task의 모든 하위 작업을 clear합니다.

Only Failed : Failed로 처리된 항목만 clear합니다.

 

이 옵션들은 여러개 섞어서 사용할 수 있습니다.

예를들어 Past와 Only Failed를 함께 쓰면 해당 Task의 처음부터 지정한 곳까지 fail된 모든 task를 clear하겠죠?

 

 

그러면 이 상황에서 우리가 선택해야할 옵션은 뭘까요?

바로 downstream 옵션입니다!

그러면 직접 종속되어있는 sleep과 templated까지 함께 clear가 된것을 확인 할 수 있습니다!!

 

Clear는 실제로 운영을 하게되면 정말 많이 하게됩니다.

하지만 옵션에 대한 개념을 모르고 후행 task clear를 위해 future 옵션을 사용하거나 하면 큰 파장이 일어날 수 있어요!!

 

특히 Airflow는 데이터쪽과 관련된 업무에 많이 활용하기때문에 잘못 clear 시켰다가 데이터가 덮어씌워지는 일이 생길수 있으니 조심해야합니다.

 

오늘은 함께 Airflow의 Task 상태와 clear에 대해 알아보았습니다.

이 내용은 실무에서 정말 많이 사용하는 부분이므로 꼭 익혀두자구요!!

 

그럼 다음시간에는 더욱 유용한 정보를 가지고 돌아오겠습니다!!

 

다음 이시간까지 베빠!!!

댓글