기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon MWAA에서 Apache Airflow에 대한 성능 조정
이 주제에서는를 사용하여 Amazon Managed Workflows for Apache Airflow 환경의 성능을 조정하는 방법을 설명합니다Amazon MWAA에서 Apache Airflow 구성 옵션 사용.
Apache Airflow 구성 옵션 추가
다음 절차에서는 Airflow 구성 옵션을 환경에 추가하는 단계를 안내합니다.
-
Amazon MWAA 콘솔에서 환경 페이지를 엽니다.
-
환경을 선택합니다.
-
편집을 선택합니다.
-
다음을 선택합니다.
-
Airflow 구성 옵션 창에서 사용자 지정 구성 추가를 선택합니다.
-
드롭다운 목록에서 구성을 선택하고 값을 입력하거나, 사용자 정의 구성을 입력하고 값을 입력합니다.
-
추가하려는 각 구성에 대해 사용자 정의 구성 추가를 선택합니다.
-
저장(Save)을 선택합니다.
자세한 내용은 Amazon MWAA에서 Apache Airflow 구성 옵션 사용 섹션을 참조하십시오.
Apache Airflow 스케줄러
Apache Airflow 스케줄러는 Apache Airflow의 핵심 구성 요소입니다. 스케줄러에 문제가 있으면 DAGs 구문 분석과 작업 예약이 불가능할 수 있습니다. Apache Airflow 스케줄러 조정에 대한 자세한 내용은 Apache Airflow 문서 웹사이트의 스케줄러 성능 미세 조정을 참조하십시오.
파라미터
이 섹션에서는 Apache Airflow 스케줄러에 사용할 수 있는 구성 옵션과 해당 사용 사례에 대해 설명합니다.
- Apache Airflow v2
-
버전 |
구성 옵션 |
기본값 |
설명 |
사용 사례 |
v2
|
celery.sync_parallelism
|
1
|
Celery Executor가 작업 상태를 동기화하는 데 사용하는 프로세스 수입니다.
|
이 옵션을 사용하면 Celery Executor가 사용하는 프로세스를 제한하여 대기열 충돌을 방지할 수 있습니다. 기본적으로 값은 작업 로그를 CloudWatch 로그1 로 전송하는 데 오류가 발생하지 않도록 로 설정됩니다. 값을 0 으로 설정하는 것은 최대 프로세스 수를 사용하는 것을 의미하지만, 작업 로그 전달 시 오류가 발생할 수 있습니다.
|
v2
|
scheduler.idle_sleep_time
|
1
|
스케줄러 '루프'에서 연속 DAG 파일 처리 사이에 대기하는 초 수입니다.
|
이 옵션을 사용하면 CPU 구문 분석 결과 검색, 작업 찾기 및 대기열 지정, 실행기에서 대기열에 있는 작업 실행을 완료한 후 스케줄러가 대기하는 시간을 늘려 스케줄러에서 DAG 사용량을 늘릴 수 있습니다. 이 값을 늘리면 Apache Airflow v2용 scheduler.parsing_processes 와 Apache Airflow v1용 scheduler.max_threads 환경에서 실행되는 스케줄러 스레드 수가 소모됩니다. 이렇게 하면 스케줄러가 DAGs를 구문 분석하는 용량이 줄어들고 DAGs가 웹 서버에 표시되는 데 걸리는 시간이 늘어날 수 있습니다.
|
v2
|
scheduler.max_dagruns_to_create_per_loop
|
10
|
스케줄러당 DAGs를 생성할 최대 DagRuns 수 '루프'
|
이 옵션을 사용하여 스케줄러 '루프'에 대한 최대 DagRuns 수를 줄여 작업 예약을 위한 리소스를 확보할 수 있습니다.
|
v2
|
scheduler.parsing_processes
|
기본적으로 (2 * number of vCPUs) - 1 공식을 사용하여 를 설정합니다.
|
스케줄러가 DAGs를 예약하기 위해 병렬로 실행할 수 있는 스레드 수입니다.
|
이 옵션을 사용하면 스케줄러가 구문 분석 DAGs와 병렬로 실행하는 프로세스 수를 줄여 리소스를 확보할 수 있습니다. DAG 구문 분석으로 인해 작업 예약에 영향을 받는 경우이 숫자를 낮게 유지하는 것이 좋습니다. 환경의 vCPU 수보다 작은 값을 지정해야 합니다. 자세한 내용은 제한을 참조하십시오.
|
Limits
이 섹션에서는 스케줄러의 기본 파라미터를 조정할 때 고려해야 하는 제한에 대해 설명합니다.
- scheduler.parsing_processes, scheduler.max_threads
-
환경 클래스에 대해 vCPU당 두 개의 스레드가 허용됩니다. 환경 클래스의 스케줄러용으로 하나 이상의 스레드를 예약해야 합니다. 작업을 예약하는 데 지연이 발생하는 경우, 환경 클래스를 늘려야 할 수 있습니다. 예를 들어 대규모 환경에는 스케줄러에 대한 4개의 vCPU Fargate 컨테이너 인스턴스가 있습니다. 즉, 최대 7
개의 스레드를 다른 프로세스에 사용할 수 있습니다. 즉, 두 스레드에 4개의 Word를 곱하고, 스케줄러 자체에 4개의 vCPUs를 뺀 값입니다. scheduler.max_threads
및 scheduler.parsing_processes
에서 지정하는 값은 환경 클래스에 사용할 수 있는 스레드 수를 초과해서는 안 됩니다(아래 그림 참조).
-
mw1.small - 다른 프로세스의 경우 1
스레드를 초과해서는 안 됩니다. 나머지 스레드는 스케줄러용으로 예약되어 있습니다.
-
mw1.medium - 다른 프로세스의 경우 3
스레드를 초과해서는 안 됩니다. 나머지 스레드는 스케줄러용으로 예약되어 있습니다.
-
mw1.large - 다른 프로세스의 경우 7
스레드를 초과해서는 안 됩니다. 나머지 스레드는 스케줄러용으로 예약되어 있습니다.
DAG 폴더
Apache Airflow 스케줄러는 환경의 DAGs 폴더를 지속적으로 스캔합니다. 포함된 모든 plugins.zip
파일, 또는 ‘airflow’ 가져오기 명령문이 포함된 Python(.py
) 파일 그런 다음 결과 Python DAG 객체가 있는 경우 스케줄러가 처리할 해당 파일에 대해 DagBag에 배치되어 예약해야 할 작업이 있는지 확인합니다. Dag 파일 구문 분석은 파일에 실행 가능한 DAG 객체가 포함되어 있는지 여부에 관계없이 발생합니다.
파라미터
이 섹션에서는 DAGs 폴더에 사용할 수 있는 구성 옵션과 사용 사례를 설명합니다.
- Apache Airflow v2
-
버전 |
구성 옵션 |
기본값 |
설명 |
사용 사례 |
v2
|
scheduler.dag_dir_list_interval
|
300초
|
DAGs 폴더에서 새 파일을 스캔해야 하는 초 수입니다.
|
이 옵션을 사용하여 DAGs 폴더를 구문 분석하는 초 수를 늘려 리소스를 확보할 수 있습니다. 에서 구문 분석 시간이 긴 경우이 값을 늘리는 것이 좋습니다. total_parse_time metrics 이는 DAGs 폴더의 파일 수가 많기 때문일 수 있습니다.
|
v2
|
scheduler.min_file_process_interval
|
30초
|
스케줄러가 DAG를 구문 분석하고 DAG를 업데이트한 후의 초 수가 반영됩니다.
|
이 옵션을 사용하여 스케줄러가 DAG 구문 분석 전에 기다리는 초 수를 늘려 리소스를 확보할 수 있습니다. 예를 들어 값을 지정하면 30초마다 30 DAG 파일이 구문 분석됩니다. 환경에서 CPU 사용량을 줄이려면이 숫자를 높게 유지하는 것이 좋습니다.
|
DAG 파일
Apache Airflow 스케줄러 루프의 일부로 개별 DAG 파일을 구문 분석하여 DAG Python 객체를 추출합니다. Apache Airflow v2 이상에서는 스케줄러가 동시에 최대 수의 파싱 프로세스를 파싱합니다. 동일한 파일을 다시 파싱하려면 scheduler.min_file_process_interval
에 지정된 시간(초)이 경과해야 합니다.
파라미터
이 섹션에서는 Apache Airflow DAG 파일에 사용할 수 있는 구성 옵션과 사용 사례를 설명합니다.
- Apache Airflow v2
-
버전 |
구성 옵션 |
기본값 |
설명 |
사용 사례 |
v2
|
core.dag_file_processor_timeout
|
50초
|
DagFileProcessor DAG 파일 처리 시간이 초과되기 전의 초 수입니다.
|
이 옵션을 사용하면 DagFileProcessor 시간이 초과되기 전에 걸리는 시간을 늘려 리소스를 확보할 수 있습니다. DAG 처리 로그에 실행 가능한 DAGs가 로드되지 않는 제한 시간이 표시되는 경우이 값을 늘리는 것이 좋습니다.
|
v2
|
core.dagbag_import_timeout
|
30초
|
Python 파일을 가져오기하는 데 걸리는 시간이 초과되기 까지의 초 단위 시간입니다.
|
이 옵션을 사용하면 Python 파일을 가져와 DAG 객체를 추출하는 동안 스케줄러 제한 시간이 초과되기까지 걸리는 시간을 늘려 리소스를 확보할 수 있습니다. 이 옵션은 스케줄러 '루프'의 일부로 처리되며 core.dag_file_processor_timeout 에 지정된 값보다 작은 값을 포함해야 합니다.
|
v2
|
core.min_serialized_dag_update_interval
|
30
|
데이터베이스에서 직렬화된 DAGs가 업데이트되는 최소 초 수입니다.
|
이 옵션을 사용하면 데이터베이스에서 직렬화된 DAGs가 업데이트된 후 초를 늘려 리소스를 확보할 수 있습니다. DAGs 수가 많거나 복잡한 DAGs가 있는 경우이 값을 늘리는 것이 좋습니다. 이 값을 늘리면 DAGs가 직렬화됨에 따라 스케줄러 및 데이터베이스의 부하가 줄어듭니다.
|
v2
|
core.min_serialized_dag_fetch_interval
|
10
|
DagBag에 이미 로드된 경우 직렬화된 DAG가 데이터베이스에서 다시 가져오는 초 수입니다.
|
이 옵션을 사용하면 직렬화된 DAG를 다시 가져오는 초 수를 늘려 리소스를 확보할 수 있습니다. 데이터베이스 ‘쓰기’ 속도를 줄이려면 이 값이 core.min_serialized_dag_update_interval 에 지정된 값보다 커야 합니다. 이 값을 늘리면 DAGs가 직렬화될 때 웹 서버 및 데이터베이스에 대한 부하가 줄어듭니다.
|
업무
Apache Airflow 스케줄러와 작업자는 모두 대기열 생성 및 대기열 제거 작업에 관여합니다. 스케줄러는 파싱된 작업을 없음 상태에서 예약됨 상태로 전환하여 스케줄링할 수 있습니다. 실행기는 Fargate의 스케줄러 컨테이너에서도 실행되며, 해당 작업을 대기열에 넣고 상태를 대기 상태로 설정합니다. 작업자가 작업 용량을 확보하면, 대기열에서 작업을 가져와 상태를 실행 중으로 설정합니다. 그러면 작업의 성공 또는 실패 여부에 따라 상태가 성공 또는 실패로 변경됩니다.
파라미터
이 섹션에서는 Apache Airflow 작업에 사용할 수 있는 구성 옵션과 해당 사용 사례에 대해 설명합니다.
Amazon MWAA 재정의에 사용되는 기본 구성 옵션은에 표시되어 있습니다.red
.
- Apache Airflow v2
-
버전 |
구성 옵션 |
기본값 |
설명 |
사용 사례 |
v2
|
core.parallelism
|
(maxWorkers * maxCeleryWorkers) / schedulers * 1.5 를 기반으로 동적으로 설정합니다.
|
‘실행 중’ 상태를 가질 수 있는 작업 인스턴스의 최대 수입니다.
|
이 옵션을 사용하면 동시에 실행할 수 있는 작업 인스턴스 수를 늘려 리소스를 확보할 수 있습니다. 지정된 값은 가용한 작업자 수에 작업자의 작업 밀도를 ‘곱한’ 값이어야 합니다. 이 값은 ‘실행 중’ 또는 ‘대기 중’ 상태에서 멈춘 작업이 많은 경우에만 변경하는 것이 좋습니다.
|
v2
|
core.dag_concurrency
|
10000
|
각 DAG에 대해 동시에 실행할 수 있는 태스크 인스턴스 수입니다.
|
이 옵션을 사용하면 동시에 실행할 수 있는 작업 인스턴스 수를 늘려 리소스를 확보할 수 있습니다. 예를 들어 병렬 태스크가 100개 있는 DAGs가 있고 모든 DAGs를 동시에 실행하려는 경우 최대 병렬 처리를 사용 가능한 작업자 수로 계산하여의 작업자 작업 밀도를 '배'로 celery.worker_concurrency 나눈 다음 DAGs 수로 나눈 값(예: 100)을 계산할 수 있습니다.
|
v2
|
core.execute_tasks_new_python_interpreter
|
True
|
Apache Airflow가 상위 프로세스를 분기하여 작업을 실행할 것인지 아니면 새 Python 프로세스를 생성하여 작업을 실행할 것인지를 결정합니다. |
True 로 설정하면, Apache Airflow는 플러그인에 대한 변경 사항을 작업을 실행하기 위해 생성된 새로운 Python 프로세스로 인식합니다.
|
v2
|
celery.worker_concurrency
|
N/A
|
Amazon MWAA는이 옵션에 대한 Airflow 기본 설치를 재정의하여 자동 크기 조정 구성 요소의 일부로 작업자를 확장합니다.
|
Any value specified for this option is ignored.
|
v2
|
celery.worker_autoscale
|
mw1.micro - 3,0
mw1.small - 5,0
mw1.medium - 10,0
mw1.Large - 20,0
mw1.xlarge - 40,0
mw1.2xlarge - 80,0
|
작업자 태스크의 동시성
|
이 옵션을 사용하면 작업자의 maximum , minimum 태스크 동시성을 줄여 리소스를 확보할 수 있습니다. 작업자는 충분한 리소스가 있는지 여부에 관계없이 구성된 최대 maximum 개의 동시 태스크를 수락합니다. 리소스가 충분하지 않은 상태에서 태스크를 예약하면 작업이 즉시 실패합니다. 리소스를 많이 사용하는 태스크의 경우, 이 값을 기본값보다 작게 줄여 작업당 용량을 늘릴 수 있도록 변경하는 것이 좋습니다.
|