베하~~ 안녕하세요!!
인사통의 BTC_김회장, 최총무입니다!!
오늘은 Airflow Web에서 Dag를 조작해볼 시간입니다!!
아마 가장 실무에서 많이 다룰 부분이기도 하니 함께 살펴보시죠~
지난번에 포스팅한 대로 Airflow는 버전별로 UI가 다르기때문에 저는 2.6.2 버전을 사용함을 알려드립니다!!
혹시 버전별 UI 차이가 궁금하시다면 아래 포스팅을 참고해주세요~
개요
- 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에 대해 알아보았습니다.
이 내용은 실무에서 정말 많이 사용하는 부분이므로 꼭 익혀두자구요!!
그럼 다음시간에는 더욱 유용한 정보를 가지고 돌아오겠습니다!!
다음 이시간까지 베빠!!!
'Database' 카테고리의 다른 글
Class를 활용한 Custom Operator 생성 (0) | 2023.07.13 |
---|---|
빅쿼리 보안 (0) | 2023.07.07 |
일괄 처리(Batch processing) & 스트림 처리(Stream processing) (0) | 2023.06.23 |
Airflow 버전별 Web UI 및 기능 활용 (0) | 2023.06.22 |
빅쿼리 개념 및 특징 (0) | 2023.06.22 |
댓글