AWS Glue의 "The specified subnet does not have enough free addresses to satisfy the request" 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 7월 26일

내 AWS Glue 추출, 변환, 로드(ETL) 작업이 다음 오류 중 하나를 반환합니다.

"지정된 서브넷에 요청을 만족시킬 만큼의 무료 주소가 없습니다 (Service: AmazonEC2; Status Code: 400; Error Code: InsufficientFreeAddressesInSubnet; Request ID: my_request_id)"

-또는-

"An error occurred while calling o70.getDynamicFrame. Job 0 cancelled because SparkContext was shut down caused by threshold for executors failed after launch reached"

간략한 설명

이 오류는 AWS Glue 작업에 사용할 수 있는 IP 주소가 부족할 때 발생합니다. 이 오류가 발생하는 두 가지 일반적인 이유는 다음과 같습니다.

  • Virtual Private Cloud(VPC) 서브넷에서 작업을 실행하면 AWS Glue에서 작업을 VPC의 다른 리소스로 안전하게 연결할 수 있는 탄력적 네트워크 인터페이스가 설정됩니다. 각 탄력적 네트워크 인터페이스가 프라이빗 IP 주소를 가져옵니다. 탄력적 네트워크 인터페이스가 예상에 따라 릴리스되지 않으면 작업에 사용할 수 있는 IP 주소가 부족해질 수 있습니다. 이 오류를 해결하려면 작업에서 사용한 DPU 개수를 확인합니다. 그런 다음, DPU 수를 줄이고 작업을 다시 실행합니다. 또는 사용하지 않는 탄력적 네트워크 인터페이스를 삭제합니다.
  • 여러 AWS 서비스가 동일한 서브넷을 사용하고 있습니다. 이 서비스들이 서브넷의 사용 가능한 IP 주소를 여러 개 사용하고 있을 수 있습니다. 이 오류를 해결하려면 더 많은 IP 주소를 사용할 수 있는 다른 서브넷을 AWS Glue 작업에 사용하세요.

해결 방법

이 오류를 해결하려면 다음 방법 중 하나를 사용합니다.

작업에 대한 데이터 처리 단위(DPU) 수 줄이기

작업 실행이 완료되면 작업에서 사용한 DPU가 몇 개인지 확인합니다.

  1. AWS Glue 콘솔을 엽니다.
  2. 탐색 창에서 작업을 선택합니다.
  3. 작업을 선택한 다음, 기록 탭을 선택합니다.
    최대 용량 열에 작업에 사용된 DPU 개수가 표시됩니다.

작업에 대한 DPU 수를 줄이려면 다음을 수행합니다.

  1. 작업에서 DPU를 몇 개 제거할지 결정합니다. DPU 개수가 탄력적 네트워크 인터페이스 수와 같지 않다는 것을 기억하세요. 언제나 탄력적 네트워크 1개가 각 작업자에 연결됩니다. 그러나 각 작업에 추가적인 탄력적 네트워크 인터페이스도 필요합니다.
    표준 작업자 유형(작업자당 DPU 1개): 추가 탄력적 네트워크 인터페이스 1개 필요
    G1.X 작업자 유형(작업자당 DPU 1개): 추가 탄력적 네트워크 인터페이스 2개 필요
    G2.X 작업자 유형(DPU 2개): 추가 탄력적 네트워크 인터페이스 2개 필요

    예를 들면 다음과 같습니다.
    20개의 DPU로 작업을 실행하는 경우 다음과 같이 IP 주소 수를 계산할 수 있습니다.
    AWS Glue 0.9/1.0을 사용하는 경우: 20DPU = 작업자(실행자) 19개 + 마스터(드라이버) 1개 + 작업 실행기 1개 = IP 주소 21개
    AWS Glue 2.0을 사용하는 경우: 20DPU = 작업자(실행자) 19개 + 마스터(드라이버) 1개 = IP 주소 20개(AWS Glue 2.0에서는 작업 실행기 없음)

  2. 탐색 창에서 작업을 선택합니다.
  3. 작업 드롭다운 목록을 선택한 다음, 작업 편집을 선택합니다.
  4. 보안 구성, 스크립트 라이브러리 및 작업 파라미터(선택 사항) 목록을 확장합니다.
  5. [Maximum capacity] 필드에 더 낮은 숫자를 입력합니다. 이 필드는 작업에서 사용할 수 있는 DPU의 최대 개수를 설정합니다.
  6. 변경 사항을 저장한 다음, 작업을 다시 실행합니다.

사용하지 않는 탄력적 네트워크 인터페이스 삭제

다음을 수행해 서브넷에서 사용 가능한 IP 주소 개수를 확인합니다.

  1. AWS Glue 콘솔을 엽니다.
  2. 탐색 창에서 연결을 선택합니다.
  3. 확인하려는 연결을 선택합니다.
  4. 작업 드롭다운 목록에서 세부 정보 보기를 선택합니다. 서브넷을 메모합니다.
  5. Amazon VPC 콘솔을 엽니다.
  6. 탐색 창에서 [Subnets]를 선택합니다.
  7. [Subnet] 드롭다운 목록에서 AWS Glue 연결에 사용 중인 서브넷을 선택합니다.
  8. [Description] 탭에서 [Available IPv4 Addresses] 필드를 확인합니다. 이 필드에는 서브넷에서 사용 가능한 IP 주소 개수가 표시되어 있습니다.

사용 가능한 IP 주소 수가 AWS Glue 작업에 필요한 IP 주소 수보다 많은지 확인하세요.

사용 가능한 IP 주소 수가 AWS Glue 작업을 실행하는 데 필요한 것보다 적은 경우 사용되지 않는 탄력적 네트워크 인터페이스를 삭제합니다.

사용 가능한 IP 주소가 더 많은 서브넷 생성 및 사용

새 서브넷을 생성하려면 다음을 수행합니다.

  1. VPC에 새 서브넷을 생성합니다.
    참고: VPC의 원본 CIDR 블록을 사용하여 새 서브넷을 생성하거나 새 서브넷에 사용할 추가 CIDR 블록을 VPC에 추가합니다.
  2. 이전 서브넷과 연결된 라우팅 테이블ACL(액세스 제어 목록) 규칙을 검토하고 새 서브넷이 동일한 방식으로 트래픽을 라우팅하는지 확인합니다. 예를 들어 이전 서브넷이 기본 경로를 인터넷 게이트웨이로 구성했다면, 새 서브넷에 유사한 기본 경로가 있는지 확인합니다.

다음을 수행하여 새 서브넷에 사용할 수 있도록 AWS Glue 연결을 수정합니다.

  1. AWS Glue 콘솔을 엽니다.
  2. 탐색 창에서 연결을 선택합니다.
  3. AWS Glue 작업에서 사용 중인 연결을 선택합니다.
  4. 작업 드롭다운 목록에서 연결 편집을 선택합니다.
  5. [Set up your connection’s properties] 페이지에서 [Next]를 선택합니다.
  6. [Set up access to your data store] 페이지의 [Subnet] 드롭다운 목록에서 새 서브넷을 선택합니다.
  7. [Next]을 선택한 다음, [Finish]를 선택합니다.
  8. 작업을 다시 실행합니다.

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?