작업 지연 문제 해결

이 페이지에서는 Managed Service for Apache Spark 작업 예약이 지연되는 일반적인 원인과 이를 방지하는 데 도움이 되는 정보가 나열되어 있습니다.

개요

다음은 Managed Service for Apache Spark 작업이 지연(제한)되는 일반적인 이유입니다.

  • 실행 중인 작업이 너무 많음
  • 시스템 메모리 사용량이 많음
  • 사용 가능한 메모리 부족
  • 비율 제한 초과

일반적으로 작업 지연 메시지는 다음 형식으로 제공됩니다.

Awaiting execution [SCHEDULER_MESSAGE]"

다음 섹션에서는 특정 작업 지연 시나리오에 대한 가능한 원인과 해결 방법에 대해 다룹니다.

실행 중인 작업이 너무 많음

스케줄러 메시지:

Throttling job ### (and maybe others): Too many running jobs (current=xx max=xx)

원인:

마스터 VM 메모리를 기반으로 하는 최대 동시 작업 수를 초과했습니다 (작업 드라이버는 Managed Service for Apache Spark 클러스터 마스터 VM에서 실행됨). 기본적으로 Managed Service for Apache Spark는 애플리케이션에 대해 3.5GB 메모리를 예약하고 GB당 1개의 작업을 허용합니다.

예시: n1-standard-4 머신 유형에 15GB 메모리가 있습니다. 오버헤드용으로 3.5GB가 예약되면 11.5GB가 남습니다. 11GB로 동시에 작업할 수 있는 작업의 개수는 정수로 내림하면 최대 11개입니다.

해결책:

  1. CPU 사용량 및 메모리와 같은 로그 측정항목을 모니터링하여 작업 요구사항을 추정합니다.

  2. 작업 클러스터를 만들 때 다음과 같이 하세요.

    1. 클러스터 마스터 VM에 대해 큰 메모리 머신 유형을 사용합니다.

    2. 작업당 1GB가 필요한 것보다 많은 경우 dataproc:dataproc.scheduler.driver-size-mb 클러스터 속성1024 미만으로 설정합니다.

    3. dataproc:dataproc.scheduler.max-concurrent-jobs 클러스터 속성을 작업 요구사항에 적합한 값으로 설정합니다.

시스템 메모리가 많거나 여유 메모리가 충분하지 않음

스케줄러 메시지:

Throttling job xxx_____JOBID_____xxx (and maybe others): High system memory usage (current=xx%)

Throttling job xxx_____JOBID_____xxx (and maybe others): Not enough free memory (current=xx min=xx)

원인:

기본적으로 Managed Service for Apache Spark 에이전트는 메모리 사용량이 90% (0.9))에 도달하면 작업 제출을 제한합니다. 이 한도에 도달하면 새 작업을 예약할 수 없습니다.

클러스터에서 다른 작업을 예약하는 데 필요한 사용 가능한 메모리양이 충분하지 않습니다.

솔루션:

  1. 클러스터를 만들 때 다음과 같이 하세요.

    1. dataproc:dataproc.scheduler.max-memory-used 클러스터 속성 값을 늘립니다. 예를 들어 0.90 이상의 기본값을 0.95로 설정하세요.
    2. dataproc.scheduler.min-free-memory.mb 클러스터 속성 값을 늘립니다. 기본값은 256MB입니다.

작업 비율 제한 초과

스케줄러 메시지:

Throttling job xxx__JOBID___xxx (and maybe others): Rate limit

원인:

Managed Service for Apache Spark 에이전트가 작업 제출 비율 제한에 도달했습니다.

해결책:

  1. 기본적으로 Managed Service for Apache Spark 에이전트 작업 제출은 1.0 QPS로 제한됩니다. 이 값은 클러스터를 만들 때 dataproc:dataproc.scheduler.job-submission-rate 클러스터 속성을 사용하여 다른 값으로 설정할 수 있습니다.

작업 상태 보기

작업 상태 및 세부정보를 보려면 작업 모니터링 및 디버깅을 참고하세요.