[airflow] 에어플로우에서 알아야할 중요한 파라미터들!

오현우·2022년 6월 10일
0

airflow

목록 보기
12/20

airflow.cfg 파일

airflow config 파일을 보면 아주 많은 파라미터들이 존재한다.

천줄이 넘어간다... 이게 맞냐??

이중에서 뭐 대부분은 그때 그때 구글링하면서 넘어갈 수 있겠지만 몇가지 알아두면 좋을 파라미터들만 소개하고자 한다.

parallelism parameter

위의 주석을 잘 읽어보면 알겠지만 airflow instance 가 동시 다발적으로 task를 수행할 수 있는 상한을 정하는 파라미터이다.

상한이 32 일때는 한번에 3개도 가능하다.

만약에 위의 상한이 1이게 된다면 어떻게 되는 것 일까?

한번해보자.

parallelism = 1 으로 설정 후 스케쥴러만 껏다가 다시 키자.

하나씩 순차적으로 진행된다. 이처럼 parallelism은 동시에 수행할 수 있는 task의 숫자의 상한을 걸어 놓게 되는 것이다. (at entire airflow instance)

조금 더 명확히 적어 놓으면 아래와 같다.

전체 airflow에서 동시에 수행될 수 있는 task의 갯수의 상한을 정하는 것이 parallelism 이다.

dag_concurrency parameter

우리는 하나의 dag를 여러번 수행할 수도 있다.
구체적으로 2022-01-01 에 중단한 파이프 라인 하나를 오늘 다시 가동시켜서 2022-06-09까지의 공백을 채우고자 한다. (catchup=True 인 경우)

이럴 때 우리는 매일 매일 순차적으로 task를 진행하되, 이전 날짜의 task1 가 끝나면 다음 날짜의 task1을 수행하고 순차적으로 task1들을 모두 끝내게 된다.

그런데 굳이 이럴 필요없이 의존성이 없는 해당 날짜들은 그냥 그대로 쭉 밀고나가면 되지 않나 라는 생각이 들 수도 있다.

이게 바로 dag_concurrency 의 개념이다.

dag_concurrency parameter를 1로 설정하고 catchup을 true로 주고 한번 실행시켜보자.

하나씩 느리게 진행된다.

동시 다발적으로 수행되고 있다.

이제 그럼 명확히 설명할 수 있다.

dag_concurrency parameter 란 하나의 dag에서 동시다발적으로 수행될 수 있는 상한을 정하는 것이다.

잠깐 퀴즈!!

parallelism > 4
dag_concurrency > 8 이면 dag에서 동시에 수행될 수 있는 task는 몇인가?

답은 4이다. dag_concurrency가 아무리 높아도 airflow instance가 수행할 수 있는 task의 상한은 4이기 때문이다.

이처럼 dag_concurrency는 parallelism에 종속된다.

여기까지 따라왔다면 정말 굿!

max_active_runs_per_dag

해당 파라미터는 위의 interval 별로 실행되는 dag의 갯수를 제한할 때 사용된다.
위의 column의 수는 정확히 16개이다. (동그라미 쳐져있는 것만)

켜놓지 않은 기간이 긴 dag가 너무 많은 리소스를 잡아먹을 때 사용하면 좋은 파라미터이다.

마지막으로 가장 꿀팁

위의 파라미터들은 cfg에서 컨트롤 하는 것보다 dag 객체를 선언할 때 같이 파라미터로 주는 것이 더 적절하다.

구체적으로 아래와 같이 수행하면 좋다.

profile
핵심은 같게, 생각은 다르게

0개의 댓글