對日誌中的 AWS Glue for Ray 錯誤進行疑難排解 - AWS Glue

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

對日誌中的 AWS Glue for Ray 錯誤進行疑難排解

AWS Glue 可讓您存取 Ray 程序在任務執行期間所發出的日誌。如果您在 Ray 任務中遇到錯誤或非預期的行為,請先從日誌中收集資訊,用以判斷失敗的原因。我們還為互動式工作階段提供類似的日誌。工作階段日誌帶有 /aws-glue/ray/sessions 字首。

當您的任務執行時,日誌行會即時傳送至 CloudWatch。列印陳述式會在執行完成後附加至 CloudWatch 日誌中。任務執行後,日誌會保留兩週。

檢查 Ray 任務日誌

如果任務失敗,請收集任務名稱和任務執行 ID。您可以在 AWS Glue 主控台中找到這些資訊。瀏覽至任務頁面,然後找到 Runs (執行) 索引標籤。Ray 任務日誌會存放在下列專用的 CloudWatch 日誌群組中。

  • /aws-glue/ray/jobs/script-log/ – 存放 Ray 主指令碼發出的日誌。

  • /aws-glue/ray/jobs/ray-monitor-log/ – 存放 Ray 自動縮放器程序發出的日誌。這些日誌是針對前端節點產生,而不是針對其他工作節點產生。

  • /aws-glue/ray/jobs/ray-gcs-logs/:存放由 GCS (全域控制存放) 程序發出的日誌。這些日誌是針對前端節點產生,而不是針對其他工作節點產生。

  • /aws-glue/ray/jobs/ray-process-logs/:存放在前端節點上執行的其他 Ray 程序 (主要是儀表板代理) 發出的日誌。這些日誌是針對前端節點產生,而不是針對其他工作節點產生。

  • /aws-glue/ray/jobs/ray-raylet-logs/:存放每個 raylet 程序發出的日誌。系統會將這些日誌收集在每個工作節點的單一串流中,包括前端節點。

  • /aws-glue/ray/jobs/ray-worker-out-logs/:將每個工作者的 stdout 日誌存放在叢集中。這些日誌會針對每個工作節點 (包括前端節點) 產生。

  • /aws-glue/ray/jobs/ray-worker-err-logs/:將每個工作者的 stderr 日誌存放在叢集中。這些日誌會針對每個工作節點 (包括前端節點) 產生。

  • /aws-glue/ray/jobs/ray-runtime-env-log/:存放有關 Ray 設定程序的日誌。這些日誌會針對每個工作節點 (包括前端節點) 產生。

對 Ray 任務錯誤進行故障診斷

若要了解 Ray 日誌群組的組織,並尋找可協助您針對錯誤進行故障診斷的日誌群組,取得 Ray 架構的背景資訊會很有幫助。

在 AWS Glue ETL 中,工作者會與執行個體相對應。在為 AWS Glue 任務設定工作者時,您可以設定任務專用的執行個體類型和數目。Ray 對 worker (工作、工作者) 一詞的使用方式有所不同。

Ray 使用前端節點工作節點來區分 Ray 叢集中執行個體的責任。Ray 工作節點可以託管多個執行者程序,這些程序會執行計算以實現分佈式計算的結果。執行函數複本的執行者稱為複本。複本執行者也可以稱為工作者程序。複本也可以在前端節點 (稱為前端) 上執行,因為該節點會執行額外的程序來協調叢集。

參與計算的每個執行者會產生自己的日誌串流。這為我們提供了一些見解:

  • 發出日誌的程序數目可能大於配置給任務的工作者數目。通常,每個執行個體上的每個核心都有一個執行者。

  • Ray 前端節點會發出叢集管理和啟動日誌。相對地,Ray 工作節點只會針對在其上執行的工作發出日誌。

如需有關 Ray 架構的詳細資訊,請參閱 Ray 文件中的 Architecture Whitepapers (架構白皮書)。

問題領域:Amazon S3 存取

檢查任務執行的失敗訊息。如果提供的資訊不足,請查閱 /aws-glue/ray/jobs/script-log/

問題領域:PIP 相依性管理

檢查 /aws-glue/ray/jobs/ray-runtime-env-log/

問題領域:檢查主程序中的中繼值

從主指令碼中寫入 stderrstdout,並從 /aws-glue/ray/jobs/script-log/ 擷取日誌。

問題領域:檢查子程序中的中繼值

remote 函數寫入 stderrstdout。然後,從 /aws-glue/ray/jobs/ray-worker-out-logs//aws-glue/ray/jobs/ray-worker-err-logs/ 擷取日誌。函數可能已在任何複本上執行,因此您可能必須檢查多個日誌才能找到預期的輸出。

問題領域:解譯錯誤訊息中的 IP 地址

在某些錯誤情況下,您的任務可能會發出包含 IP 地址的錯誤訊息。這些 IP 地址是暫時的資訊,叢集會用於識別節點並在節點之間進行通訊。節點的日誌會發布至日誌串流,其具有以 IP 地址為基礎的唯一字尾。

在 CloudWatch 中,您可以透過識別此字尾來篩選日誌,以檢查特定於此 IP 地址的日誌。例如,假設為 FAILED_IPJOB_RUN_ID,您可以透過以下方式識別字尾:

filter @logStream like /JOB_RUN_ID/ | filter @message like /IP-/ | parse @message "IP-[*]" as ip | filter ip like /FAILED_IP/ | fields replace(ip, ":", "_") as uIP | stats count_distinct by uIP as logStreamSuffix | display logStreamSuffix