我執行了 AWS Glue 擷取、轉換和載入 (ETL) 作業。但作業失敗了,我收到一則錯誤訊息,指出子網絡中沒有足夠的可用 IP 位址。
簡短描述
執行 AWS Glue ETL 作業時,您可能會收到下列其中一個錯誤:
- 「指定的子網路沒有足夠的可用位址來滿足請求。(服務: AmazonEC2; 狀態碼: 400;錯誤代碼: InsufficientFreeAddressesInSubnet; 請求 ID: my_request_id)」
- 「呼叫 o70.getDynamicFrame 時發生錯誤。作業 0 已取消,原因是 SparkContext 已關閉,因為啟動後執行程式失敗的次數達到閾值」
出現上述錯誤的原因如下:
- AWS Glue 作業使用的資料處理單位 (DPU) 數量超過了可用的 IP 位址數量。
- 其他 AWS 服務正在使用相同子網路中的 IP 位址。
- 作業完成後,您沒有分離彈性網路介面。
解決方法
確認作業使用了多少個 DPUS,並減少 DPU 的數量
確認作業已完成。然後,確認作業使用了多少個 DPU,並確定可以移除的 DPU 數量。
若要檢查作業使用了多少個 DPU,請完成下列步驟:
- 開啟 AWS Glue console (AWS Glue 主控台)。
- 在導覽窗格中,選擇 Jobs (作業)。
- 選取作業,然後選擇 History (歷史記錄) 索引標籤。
- 檢查 Maximum capacity (最大容量) 欄中的 DPU 數量。
然後,確定要從作業中移除的 DPU 數量。
DPU 的數量不等於網路介面的數量。
每個工作者都需要一個網路介面,除了下列工作者類型,這些工作者都需要額外的網路介面:
- 標準工作者類型 (每個工作者 1 個 DPU)
- G1.X 工作者類型 (每個工作者 1 個 DPU)
- G2.X 工作者類型 (2 個 DPU)
例如,如果您在 G.2x 上執行包含 20 個工作者的作業,請使用下列計算來計算 IP 位址的數量:
AWS Glue 2.0/3.0/4.0: 40 個 DPU = 19 個工作者 (執行程式) + 1 個驅動程式 = 20 個 IP 位址 (AWS Glue 2.0/3.0/4.0 中沒有任務執行程式)
若要減少 DPU 數量,請完成下列步驟:
- 開啟 AWS Glue console (AWS Glue 主控台)。
- 在導覽窗格中,選擇 Jobs (作業),然後選取作業。
- 選擇 Actions (動作) 下拉式清單,然後選擇 Edit job (編輯作業)。
- 展開 Security configuration, script libraries, and job parameters (optional) (安全組態、指令碼程式庫和作業參數 (選用)) 清單。
- 在 Maximum capacity (最大容量) 欄位中,輸入一個較小的數字,作為該作業可以使用的最大 DPU 數量。
- 儲存變更,然後再次執行作業。
檢查可用的 IP 位址數量,並刪除未使用的網路介面
首先,檢查子網路中可用 IP 地址的數量。
請完成下列步驟:
- 開啟 AWS Glue console (AWS Glue 主控台)。
- 在導覽窗格中,選擇 Connections (連線)。
- 選取您作業使用的連線。
- 選擇 Action (動作) 下拉式清單,然後選擇 View details (檢視詳細資訊)。
- 記下子網路。
- 開啟 Amazon VPC console (Amazon VPC 主控台)。
- 在導覽窗格中,選擇 Subnets (子網路)。
- 在 Subnet (子網路) 下拉式清單中,選擇 AWS Glue 連線使用的子網路。
- 在 Description (描述) 索引標籤上,檢查可用的 IPv4 位址欄位,以查看子網路中有多少個可用的 IP 位址。
- 確認子網路的可用 IP 位址數量是否比 AWS Glue 作業所需的數量多。
如果子網路沒有足夠的可用 IP 位址,請刪除所有未使用的網路介面。
建立並使用具有更多可用 IP 位址的子網路
如果現有子網路沒有足夠的 IP 位址,請在 Amazon VPC 中建立新的子網路。您可以使用原始 CIDR 區塊,也可以新增 CIDR 區塊來擴展範圍。然後,確認新子網路是否使用與原始子網路相同的路由表和網路存取控制清單 (網路 ACL) 規則。例如,如果您之前的子網路具有到網際網路閘道的預設路由,則新的子網路必須路由到網際網路閘道。
更新 AWS Glue 連線以使用新的子網路
請完成下列步驟:
- 開啟 AWS Glue console (AWS Glue 主控台)。
- 在導覽窗格中,選擇 Connections (連線)。
- 選取您 AWS Glue 作業所使用的連線。
- 在 Action (動作) 下拉式清單中,選擇 Edit connection (編輯連線)。
- 在 Setup your connection's properties (設定連線的屬性) 頁面上,選擇 Next (下一步)。
- 在 Setup access to your data store (設定資料存放區存取權) 頁面的 Subnet (子網路) 下拉式清單中,選取新的子網路。
- 選擇 Next (下一步),然後選擇 Finish (完成)。
- 再次執行作業。
相關資訊
定義 Spark 作業的作業屬性
設定 Amazon VPC,以從 AWS Glue 透過 JDBC 連線到 Amazon RDS 資料存放區