AWS Glue ジョブが 「Exit status:-100.Diagnostics: Container released on a *lost* node」で失敗するのはなぜですか?

所要時間2分
0

AWS Glue 1.0 または 0.9 ジョブが次のエラーで失敗しました: 「Exit status: -100.Diagnostics: Container released on a lost node」

解決方法

データソースが JDBC の場合は、「AWS Glue ジョブが、大規模なデータセットを Amazon RDS から Amazon S3 に移行中、ノードが欠損し処理が失敗します」を参照してください。 データソースが Amazon Simple Storage Service (Amazon S3) の場合は、次のいずれかの方法を使用して、ノードの欠損エラーを解決します。

注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

データ処理ユニット (DPU) を追加する

デフォルトでは、AWS Glue ジョブには 10 個の DPU があり、 標準ワーカータイプを使用します。1 つの DPU はアプリケーションマスター用に予約されています。DPU を追加する前に、以下の点を考慮してください。

  • DPU を追加すると、ジョブのワークロードが並列化されている場合にのみ役立ちます。データを適切にパーティショニングしていない場合、データは新しいノードに配信されず、ノード欠損エラーが発生します。詳細については、最適な DPU 容量を決定するを参照してください。
  • 場合によっては、大きなファイルがノード上のリソースを消費しすぎることがあり、ジョブのワークロードを並列化する効果が低下します。この問題を軽減するには、大きなファイルが分割可能な形式であることを確認してください。詳細については、 AWS Glue を使用して Apache Spark ジョブをスケールし、データをパーティション化するためのベストプラクティスを参照してください。
  • ジョブの実行時間が長くなるほど、ジョブがディスクに書き込むログが増えます。ログが原因でディスク容量の問題が発生している場合は、DPU を追加しても役に立ちません。場合によっては、過剰なログ記録とディスク溢れの両方が原因でノード欠損エラーが発生することがあります。
  • ログと glue.ALL.jvm.heap.usage Amazon CloudWatch メトリクス を確認して、メモリを消費する実行プログラムを特定します。一部の実行プログラムが他の実行プログラムよりも多くのメモリを消費している場合、データスキューが原因でエラーが発生している可能性があります。

ジョブ APIAWS コマンドラインインターフェイス (AWS CLI)、または AWS Glue コンソール を使用して、ジョブの作成時に DPU を追加します。

  • ジョブ API: CreateJob オペレーションを実行するときに NumberOfWorkers プロパティを設定します。
  • AWS CLI: create-job コマンドを実行するときに、ワーカー数 を設定します。
  • AWS Glue コンソール: [Configure the job properties] ページの [Security configuration, script libraries, and job parameters (optional)] で、[Maximum capacity] の値を増やします。これは、ジョブの DPU の数です。

CloudWatch メトリクスがジョブに対して有効になっていることを確認します。これらのメトリクスは、ジョブのパフォーマンスをモニタリングし、DPU を追加しなければならないかを判断するのに役立ちます。ジョブ APIAWS CLI、または AWS Glue コンソールを使用して、新規または既存のジョブのメトリクスを有効にします。

  • ジョブ API: CreateJob または UpdateJob オペレーションで DefaultArguments を定義するときは、 -enable-metrics 引数を使用します。
  • AWS CLI: -enable-metrics 引数を使用します。
  • AWS Glue コンソール: Monitoring options で、 Job metricsEnabled に設定します。

DPU ワーカータイプを変更する

データセットのサイズによっては、 標準ワーカータイプには、Spark アプリケーションでメモリ不足やディスクへの溢れを防ぐのに十分なリソースがない場合があります。この問題を解決するには、使用可能なリソースが多いワーカータイプを選択します。

  • 標準 (デフォルト): 各ワーカーは 1 DPU (4 個の vCPU、16 GB のメモリ) にマッピングされ、50 GB のディスク容量があります。
  • G.1X: 各ワーカーは 1 個の DPU (4 個の vCPU、16 GB のメモリ) にマッピングされ、64 GB のディスク容量があります。
  • G.2X: 各ワーカーは 2 個の DPU (8 個の vCPU、32 GB のメモリ) にマッピングされ、128 GB のディスク容量があります。

ジョブ APIAWS CLI、または AWS Glue コンソール を使用して、ジョブの作成時にワーカータイプを変更します。

  • ジョブ API: CreateJob オペレーションを実行するときに WorkerType プロパティを設定します。
  • AWS CLI: create-job コマンドを実行するときに worker-type プロパティを設定します。
  • AWS Glue コンソール: [Configure the job properties] ページの [Security configuration, script libraries, and job parameters (optional)] で、[Worker type] で別のオプションを選択します。

関連情報

AWS Glue でのジョブの追加

AWS公式
AWS公式更新しました 3年前