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

4분 분량
0

AWS Glue 추출, 전환, 적재(ETL) 작업을 실행했습니다. 하지만 실패했고 서브넷에 사용 가능한 IP 주소가 충분하지 않다는 오류 메시지를 받았습니다.

간략한 설명

AWS Glue ETL 작업을 실행할 때 다음 오류 중 하나가 발생할 수 있습니다.

  • "The specified subnet does not have enough free addresses to satisfy the request. (Service: AmazonEC2; Status Code: 400; Error Code: InsufficientFreeAddressesInSubnet; Request ID: my_request_id)"
  • "An error occurred calling o70.getDynamicFrame. Job 0 cancelled because SparkContext was shut down caused by threshold for executors failed after launch reached"

위 오류는 다음과 같은 이유로 발생합니다.

  • AWS Glue 작업이 사용 가능한 IP 주소보다 많은 DPU(Data Processing Unit, 데이터 처리 장치)를 사용합니다.
  • 다른 AWS 서비스가 동일한 서브넷의 IP 주소를 사용하고 있습니다.
  • 작업이 완료된 후 탄력적 네트워크 인터페이스를 분리하지 않았습니다.

해결 방법

작업에 사용되는 DPU 수 확인 및 DPU 수 줄이기

작업이 완료되었는지 확인하십시오. 그런 다음 작업에 사용된 DPU 수를 확인하고 제거할 수 있는 DPU 수를 결정하십시오.

작업에 사용된 DPU 수를 확인하려면 다음 단계를 완료하십시오.

  1. AWS Glue 콘솔을 엽니다.
  2. 탐색 창에서 작업(Jobs)을 선택합니다.
  3. 작업을 선택한 다음 HIstory(기록) 탭을 선택합니다.
  4. Maximum capacity(최대 용량) 열에서 DPU 수를 확인합니다.

그런 다음 작업에서 제거할 DPU 수를 결정합니다.

DPU의 수는 네트워크 인터페이스의 수와 동일하지 않습니다.

각 작업자는 하나의 네트워크 인터페이스를 필요로 하지만, 다음 작업자 유형은 예외로, 각각 추가 네트워크 인터페이스를 필요로 합니다.

  • 표준 작업자 유형(작업자당 DPU 1개)
  • G1.X 작업자 유형(작업자당 DPU 1개)
  • G2.X 작업자 유형(DPU 2개)

예를 들어 G.2x에서 작업자 20명으로 작업을 실행하는 경우 다음 계산을 사용하여 IP 주소 수를 계산합니다.

AWS Glue 2.0/3.0/4.0: 40 DPU = 작업자(실행자) 19명 + 드라이버 1개 = IP 주소 20개(AWS Glue 2.0/3.0/4.0에 태스크 러너 없음)

DPU 수를 줄이려면 다음 단계를 완료하십시오.

  1. AWS Glue 콘솔을 엽니다.
  2. 탐색 창에서 Jobs(작업)를 선택한 다음 작업을 선택합니다.
  3. Action(작업) 드롭다운 목록을 선택한 다음 Edit job(작업 편집)을 선택합니다.
  4. 보안 구성, 스크립트 라이브러리 및 작업 파라미터(선택 사항) 목록을 확장합니다.
  5. Maximum capacity(최대 용량) 필드에 작업에서 사용할 수 있는 최대 DPU 수를 더 낮은 값으로 입력합니다.
  6. 변경 사항을 저장한 다음 작업을 다시 실행합니다.

사용 가능한 IP 주소 수 확인 및 미사용 네트워크 인터페이스 삭제

먼저 서브넷에서 사용 가능한 IP 주소의 수를 확인합니다.

다음 단계를 완료하십시오.

  1. AWS Glue 콘솔을 엽니다.
  2. 탐색 창에서 Connections(연결)를 선택합니다.
  3. 작업에서 사용하는 연결을 선택합니다.
  4. Action(작업) 드롭다운 목록을 선택한 다음 View details(세부 정보 보기)를 선택합니다.
  5. 서브넷을 기록해 둡니다.
  6. Amazon VPC 콘솔을 엽니다.
  7. 탐색 창에서 Subnets(서브넷)을 선택합니다.
  8. Subnet(서브넷) 드롭다운 목록에서 AWS Glue 연결이 사용하는 서브넷을 선택합니다.
  9. Description(설명) 탭에서 Available IPv4 Addresses(사용 가능한 IPv4 주소) 필드를 확인하여 서브넷에서 사용할 수 있는 IP 주소 수를 확인합니다.
  10. 서브넷에 AWS Glue 작업에 필요한 것보다 더 많은 사용 가능한 IP 주소가 있는지 확인하십시오.

서브넷에 사용 가능한 IP 주소가 충분하지 않은 경우 미사용 네트워크 인터페이스를 모두 삭제하십시오.

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

기존 서브넷에 IP 주소가 충분하지 않은 경우 Amazon VPC에 새 서브넷을 생성하십시오. 원본 CIDR 블록을 사용하거나 새 블록을 추가하여 범위를 확장할 수 있습니다. 그런 다음 새 서브넷이 원래 서브넷과 동일한 라우팅 테이블네트워크 액세스 제어 목록(네트워크 ACL) 규칙을 사용하는지 확인합니다. 예를 들어, 이전 서브넷에 인터넷 게이트웨이에 대한 기본 경로가 있는 경우 새 서브넷은 인터넷 게이트웨이로 라우팅해야 합니다.

새 서브넷을 사용하도록 AWS Glue 연결 업데이트

다음 단계를 완료하십시오.

  1. AWS Glue 콘솔을 엽니다.
  2. 탐색 창에서 Connections(연결)를 선택합니다.
  3. AWS Glue 작업에서 사용하는 연결을 선택합니다.
  4. Action(작업) 드롭다운 목록에서 Edit connection(연결 편집)을 선택합니다.
  5. Setup your connection's properties(연결 속성 설정) 페이지에서 Next(다음)를 선택합니다.
  6. Setup access to your data store(데이터 스토어에 대한 액세스 설정) 페이지의 Subnet(서브넷) 드롭다운 목록에서 새 서브넷을 선택합니다.
  7. Next(다음)를 선택하고 Finish(완료)를 선택합니다.
  8. 작업을 다시 실행합니다.

관련 정보

Spark 작업의 작업 속성 정의

AWS Glue에서 Amazon RDS 데이터 스토어로의 JDBC 연결에 대한 Amazon VPC 설정

AWS 공식
AWS 공식업데이트됨 한 달 전
댓글 없음

관련 콘텐츠