【トラブル】【AWS】Glue Job を並列で動かそうとしたら ConcurrentRunsExceededExceptionが発生

■ はじめに

久しぶりに、AWS Glue ネタ。

 でかいデータを処理しなければならず、
同じ Glue Job を条件を変えて
並列で動かそうとしようとしたらエラーになったので
その原因と解決案についてメモ。

目次

【1】トラブル概要
【2】エラーメッセージ
【3】原因
 1)ConcurrentRunsExceededException とは?
 2)今回の原因
 補足:Max concurrency (最大同時実行数)
【4】解決案

【1】トラブル概要

 Glue Job(G1.X, Number of Workers: 50)が実行されている状態で、
更に、同じGlue Jobを On-Demandトリガで動かそうとしたら、
ConcurrentRunsExceededExceptionが発生した。

【2】エラーメッセージ

{
  "service": "AWSGlue",
  "status Code": "400",
  "error": "ConcurrentRunsExceededException",
  "requestId": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxx",
  "cause": "Concurrent runs exceeded for one or jobs in xxxx-job",
  "type": "AwsServiceError"
}

【3】原因

1)ConcurrentRunsExceededException とは?

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-api-exceptions.html#aws-glue-api-exceptions-ConcurrentRunsExceededException

より抜粋
~~~~~~
ConcurrentRunsExceededException 構造

同時に実行されているジョブが多すぎます。
~~~~~~

2)今回の原因

* Max concurrency (最大同時実行数) が、デフォルトの 1 のままで、
 この閾値である 1 を超えてしまったため。

補足:Max concurrency (最大同時実行数)

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/add-job.html

より抜粋
~~~~~~~~~~~~~~~~~~
最大同時実行数

このジョブで許可される同時実行の最大数を設定します。

デフォルトは 1 です。

このしきい値に達すると、エラーが返されます。★これが今回のエラー★

指定できる最大値は、サービスの制限によってコントロールされます。

★まさに↓と同じことをしている、、、
たとえば、新しいインスタンスの開始時に前回のジョブがまだ実行されている場合、
同じジョブの 2 つのインスタンスが同時に実行されないようにエラーを戻すことができます。
~~~~~~~~~~~~~~~~~~

* 詳細は、以下の関連記事を参照のこと

AWS Glue ~ パフォーマンスチューニング ~
https://dk521123.hatenablog.com/entry/2022/12/03/000119

【4】解決案

* Max concurrency (最大同時実行数)  を 変更した
 => 例えば、 1 => 50

関連記事

AWS Glue ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/01/221926
AWS Glue ~ パフォーマンスチューニング ~
https://dk521123.hatenablog.com/entry/2022/12/03/000119
AWS Glue のトラブル ~ job編 [1] ~
https://dk521123.hatenablog.com/entry/2019/10/25/232155