Amazon EMR に作業を送信するときに複数のステップを並行して実行する際の考慮事項
Amazon EMR に作業を送信するときに複数のステップを並行して実行するには、リソース計画とクラスターの動作に関する期待に関する予備的な決定が必要です。これらについて、ここで詳しく説明します。
-
並行して実行されるステップは任意の順序で完了する可能性がありますが、キューに保留中のステップは、送信された順序で実行状態に移行します。
-
クラスターのステップ同時実行レベルを選択するときは、プライマリノードインスタンスタイプがユーザーワークロードのメモリ要件を満たしているかどうかを考慮する必要があります。メインステップのエグゼキュータープロセスは、各ステップのプライマリノードで実行されます。複数のステップを並行して実行するには、一度に 1 つのステップを実行するよりも、プライマリノードからのメモリと CPU の使用率が増えます。
-
同時ステップの複雑なスケジューリングとリソース管理を実現するには、
FairScheduler
やCapacityScheduler
などの YARN スケジューリング機能を使用できます。たとえば、queueMaxAppsDefault
セットでFairScheduler
を使用すると、特定の数を超えるジョブが一度に実行されないようにできます。 -
ステップの同時実行レベルは、リソースマネージャの設定によって異なります。たとえば、YARN が
5
の並列処理のみで設定されている場合、StepConcurrencyLevel
が10
に設定されていても、並列して実行できる YARN アプリケーションは 5 つだけです。リソースマネージャーの設定に関する詳細は、「Amazon EMR リリースガイド」の「アプリケーションの設定」を参照してください。 -
クラスターのステップ同時実行レベルが 1 より大きいときは、CONTINUE 以外の
ActionOnFailure
を使用してステップを追加することはできません。 -
クラスターのステップ同時実行レベルが 1 より大きい場合、ステップの
ActionOnFailure
機能はアクティブになりません。 -
クラスターのステップ同時実行レベルが
1
であるが、複数の実行ステップがある場合、TERMINATE_CLUSTER ActionOnFailure
はアクティブにできますが、CANCEL_AND_WAIT ActionOnFailure
はできません。このエッジケースは、クラスターステップの同時実行レベルが 1 より大きいが、複数ステップの実行中に下げられたときに発生します。 -
EMR 自動スケーリングを使用し、YARN リソースに基づいてスケールアップおよびスケールダウンして、リソースの競合を防止できます。詳細については、「Amazon EMR 管理ガイド」の「カスタムポリシーによる自動スケーリングをインスタンスグループに使用する」を参照してください。
-
ステップの同時レベルを下げると、EMR で、ステップ数を減らす前に実行中のすべてのステップを完了できます。クラスターで実行されている同時ステップが多すぎるためにリソースがなくなった場合は、実行中のステップを手動でキャンセルして、リソースを解放することをお勧めします。