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 수를 확인하려면 다음 단계를 완료하십시오.
- AWS Glue 콘솔을 엽니다.
- 탐색 창에서 작업(Jobs)을 선택합니다.
- 작업을 선택한 다음 HIstory(기록) 탭을 선택합니다.
- 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 수를 줄이려면 다음 단계를 완료하십시오.
- AWS Glue 콘솔을 엽니다.
- 탐색 창에서 Jobs(작업)를 선택한 다음 작업을 선택합니다.
- Action(작업) 드롭다운 목록을 선택한 다음 Edit job(작업 편집)을 선택합니다.
- 보안 구성, 스크립트 라이브러리 및 작업 파라미터(선택 사항) 목록을 확장합니다.
- Maximum capacity(최대 용량) 필드에 작업에서 사용할 수 있는 최대 DPU 수를 더 낮은 값으로 입력합니다.
- 변경 사항을 저장한 다음 작업을 다시 실행합니다.
사용 가능한 IP 주소 수 확인 및 미사용 네트워크 인터페이스 삭제
먼저 서브넷에서 사용 가능한 IP 주소의 수를 확인합니다.
다음 단계를 완료하십시오.
- AWS Glue 콘솔을 엽니다.
- 탐색 창에서 Connections(연결)를 선택합니다.
- 작업에서 사용하는 연결을 선택합니다.
- Action(작업) 드롭다운 목록을 선택한 다음 View details(세부 정보 보기)를 선택합니다.
- 서브넷을 기록해 둡니다.
- Amazon VPC 콘솔을 엽니다.
- 탐색 창에서 Subnets(서브넷)을 선택합니다.
- Subnet(서브넷) 드롭다운 목록에서 AWS Glue 연결이 사용하는 서브넷을 선택합니다.
- Description(설명) 탭에서 Available IPv4 Addresses(사용 가능한 IPv4 주소) 필드를 확인하여 서브넷에서 사용할 수 있는 IP 주소 수를 확인합니다.
- 서브넷에 AWS Glue 작업에 필요한 것보다 더 많은 사용 가능한 IP 주소가 있는지 확인하십시오.
서브넷에 사용 가능한 IP 주소가 충분하지 않은 경우 미사용 네트워크 인터페이스를 모두 삭제하십시오.
사용 가능한 IP 주소가 더 많은 서브넷 생성 및 사용
기존 서브넷에 IP 주소가 충분하지 않은 경우 Amazon VPC에 새 서브넷을 생성하십시오. 원본 CIDR 블록을 사용하거나 새 블록을 추가하여 범위를 확장할 수 있습니다. 그런 다음 새 서브넷이 원래 서브넷과 동일한 라우팅 테이블 및 네트워크 액세스 제어 목록(네트워크 ACL) 규칙을 사용하는지 확인합니다. 예를 들어, 이전 서브넷에 인터넷 게이트웨이에 대한 기본 경로가 있는 경우 새 서브넷은 인터넷 게이트웨이로 라우팅해야 합니다.
새 서브넷을 사용하도록 AWS Glue 연결 업데이트
다음 단계를 완료하십시오.
- AWS Glue 콘솔을 엽니다.
- 탐색 창에서 Connections(연결)를 선택합니다.
- AWS Glue 작업에서 사용하는 연결을 선택합니다.
- Action(작업) 드롭다운 목록에서 Edit connection(연결 편집)을 선택합니다.
- Setup your connection's properties(연결 속성 설정) 페이지에서 Next(다음)를 선택합니다.
- Setup access to your data store(데이터 스토어에 대한 액세스 설정) 페이지의 Subnet(서브넷) 드롭다운 목록에서 새 서브넷을 선택합니다.
- Next(다음)를 선택하고 Finish(완료)를 선택합니다.
- 작업을 다시 실행합니다.
관련 정보
Spark 작업의 작업 속성 정의
AWS Glue에서 Amazon RDS 데이터 스토어로의 JDBC 연결에 대한 Amazon VPC 설정