翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EMR ノード割り当て戦略とシナリオを把握する
このセクションでは、Amazon EMR Managed Scaling で使用できるノード割り当て戦略と一般的なスケーリングシナリオの概要について説明します。
ノード割り当て戦略
Amazon EMR Managed Scaling は、次のスケールアップ戦略とスケールダウン戦略に基づいて、コアノードとタスクノードを割り当てます。
スケールアップ戦略
-
Amazon EMR リリース 7.2 以降では、マネージドスケーリングが最初にノードラベルとアプリケーションプロセス制限 YARN プロパティに基づいてノードを追加します。
-
Amazon EMR リリース 7.2 以降では、ノードラベルを有効にし、アプリケーションプロセスを
CORE
ノードに制限すると、アプリケーションプロセスの需要が増加し、エグゼキュターの需要が増加すると、Amazon EMR Managed Scaling によってコアノードとタスクノードがスケールアップされます。同様に、ノードラベルを有効にし、アプリケーションプロセスをON_DEMAND
ノードに制限すると、マネージドスケーリングではアプリケーションプロセスの需要が増加した場合にオンデマンドノードをスケールアップし、エグゼキュターの需要が増加するとスポットノードをスケールアップします。 -
ノードラベルが有効になっていない場合、アプリケーションプロセスの配置はノードまたは市場タイプに制限されません。
-
ノードラベルを使用することで、マネージドスケーリングでは同じサイズ変更オペレーションで異なるインスタンスグループとインスタンスフリートをスケールアップおよびスケールダウンできます。例えば、
instance_group1
にON_DEMAND
ノード、instance_group2
にSPOT
ノードがあり、ノードラベルが有効で、アプリケーションプロセスがON_DEMAND
ラベル付きのノードに制限されているシナリオです。マネージドスケーリングでは、アプリケーションプロセスの需要が減少し、エグゼキュターの需要が増加すると、instance_group1
スケールダウンし、instance_group2
をスケールアップします。 -
Amazon EMR で現在のインスタンスグループでスケールアップに遅延が発生すると、マネージドスケーリングを使用するクラスターは自動的に別のタスクインスタンスグループに切り替わります。
-
MaximumCoreCapacityUnits
パラメータが設定されている場合、Amazon EMR はコアユニットが最大許容制限に達するまで、コアノードをスケーリングします。残りの容量はすべてタスクノードに追加されます。 -
MaximumOnDemandCapacityUnits
パラメータが設定されている場合、Amazon EMR は、オンデマンドユニットが最大許容制限に達するまで、オンデマンドインスタンスを使用してクラスターをスケーリングします。残りの容量はすべて、スポットインスタンスを使用して追加されます。 -
MaximumCoreCapacityUnits
とMaximumOnDemandCapacityUnits
の両方のパラメータが設定されている場合、Amazon EMR はスケーリング中に両方の制限を考慮します。例えば、
MaximumCoreCapacityUnits
がMaximumOnDemandCapacityUnits
未満の場合、Amazon EMR はまず、コア容量の制限に達するまでコアノードの容量をスケールします。残りの容量については、Amazon EMR はまずオンデマンドインスタンスを使用してオンデマンドの制限に達するまでタスクノードをスケールし、次にスポットインスタンスを使用してタスクノードをスケールします。
スケールダウン戦略
-
スケールアップ戦略と同様に、Amazon EMR はノードラベルに基づいてノードを削除します。ノードラベルの詳細については、「Understand node types: primary, core, and task nodes」を参照してください。
-
ノードラベルを有効にしていない場合、EMR Managed Scaling は、タスクノードを削除し、次に目的のスケールダウン目標容量が達成されるまでコアノードを削除します。マネージドスケーリングでは、指定されたマネージドスケーリングポリシーの最小制約を下回ってクラスターがスケールダウンされることはありません。
-
Amazon EMR バージョン 5.34.0 以降、および Amazon EMR バージョン 6.4.0 以降では、Spark のシャッフルデータ (Spark が特定の操作を実行するためにパーティション間で再配布するデータ) を認識するマネージドスケーリングをサポートしています。シャッフル操作の詳細については、Spark のプログラミングガイド
を参照してください。マネージドスケーリングでは、使用率の高いシャッフルデータを含まない、使用率の低いインスタンスのみをスケールダウンします。このインテリジェントなスケーリングにより、意図しないシャッフルデータの損失を防ぐことができ、ジョブを再試行したり、中間データを再計算したりする必要がなくなります。 -
マネージドスケーリングでは、まずタスクノードを削除し、次に目的のスケールダウン目標容量が達成されるまでコアノードを削除します。クラスターのスケーリングは、指定されたマネージドスケーリングポリシーの最小制約を下回ることはありません。
-
Amazon EMR 5.x リリース 5.34.0 以降、および 6.x リリース 6.4.0 以降で起動されたクラスターの場合、Amazon EMR Managed Scaling は、Apache Spark 用の
ApplicationMaster
が実行されているノードをスケールダウンしません。これにより、ジョブの失敗や再試行が最小限に抑えられ、ジョブのパフォーマンスが向上し、コストが削減されます。クラスター内のどのノードでApplicationMaster
が実行されているかを確認するには、Spark 履歴サーバーにアクセスし、Spark アプリケーション ID の [Executors] タブでドライバーをフィルタリングします。
クラスターに負荷がない場合、Amazon EMR は前の評価で提案された新しいインスタンスの追加をキャンセルし、スケールダウン操作を実行します。クラスターの負荷が大きい場合、Amazon EMR はインスタンスの削除をキャンセルし、スケールアップ操作を実行します。
ノード割り当てに関する考慮事項
スポットの再利用時に HDFS データが失われないように、コアノードに対してオンデマンド購入オプションを使用することをお勧めします。タスクノードに対してスポット購入オプションを使用すると、タスクノードにスポットインスタンスを追加するときのコストが削減され、ジョブ実行が高速になります。
ノード割り当てシナリオ
最大、最小、オンデマンド制限、および最大コアノードの各パラメータをさまざまな組み合わせで、セットアップすることで、ニーズに基づいてさまざまなスケーリングシナリオを作成できます。
シナリオ 1: コアノードのみをスケーリングする
コアノードのみをスケーリングするには、マネージドスケーリングパラメータが次の要件を満たしている必要があります。
-
オンデマンド制限が最大限度と等しいこと。
-
最大コアノードが最大限度と等しいこと。
オンデマンド制限と最大コアノードのパラメータが指定されていないときは、両方のパラメータがデフォルトで最大限度に設定されます。
このシナリオは、ノードラベルでマネージドスケーリングを使用し、アプリケーションプロセスを CORE
ノードでのみ実行するように制限する場合には適用されません。マネージドスケーリングはエグゼキューターの需要に対応するためにタスクノードをスケーリングするからです。
コアノードのみをスケーリングするシナリオの例を次に示します。
クラスターの初期状態 | スケーリングパラメータ | スケーリングの動作 |
---|---|---|
インスタンスグループ コア:1 オンデマンド タスク:1 オンデマンドと 1 スポット |
|
オンデマンドタイプを使用して、コアノードで 1 ~ 20 個のインスタンスまたはインスタンスフリートユニットをスケーリングします。タスクノードのスケーリングはありません。 ノードラベルでマネージドスケーリングを使用し、アプリケーションプロセスを |
インスタンスフリート コア:1 オンデマンド タスク:1 オンデマンドと 1 スポット |
UnitType: InstanceFleetUnits
|
シナリオ 2: タスクノードのみをスケーリングする
タスクノードのみをスケーリングするには、マネージドスケーリングパラメータが次の要件を満たしている必要があります。
-
最大コアノードが最小限度と等しいこと。
タスクノードのみをスケーリングするシナリオの例を次に示します。
クラスターの初期状態 | スケーリングパラメータ | スケーリングの動作 |
---|---|---|
インスタンスグループ コア:2 オンデマンド タスク:1 スポット |
|
コアノードを 2 個に固定し、0 から 18 インスタンスまたはインスタンスフリートユニットの間のタスクノードのみをスケーリングします。最小限度と最大限度の間の容量が、タスクノードのみに追加されます。 ノードラベルでマネージドスケーリングを使用し、アプリケーションのプロクセスを ON_DEMAND ノードに制限すると、クラスターはコアノードを 2 に安定させ、需要のタイプに応じて、 |
インスタンスフリート コア:2 オンデマンド タスク:1 スポット |
|
シナリオ 3: クラスター内のオンデマンドインスタンスのみ
オンデマンドインスタンスのみを使用するには、クラスターとマネージドスケーリングパラメータが次の要件を満たしている必要があります。
-
オンデマンド制限が最大限度と等しいこと。
オンデマンド制限が指定されていないときは、パラメータ値がデフォルトで最大限度に設定されます。デフォルト値は、Amazon EMR がオンデマンドインスタンスのみをスケーリングすることを示します。
最大コアノードが最大限度未満の場合、最大コアノードパラメータを使用して、コアノードとタスクノード間で容量割り当てを分割できます。
インスタンスグループで構成されるクラスターでこのシナリオを有効にするには、初期構成時にクラスター内のすべてのノードグループがオンデマンドマーケットタイプを使用する必要があります。
このシナリオは、ノードラベルでマネージドスケーリングを使用し、アプリケーションプロセスを ON_DEMAND
ノードでのみ実行するように制限する場合には適用されません。マネージドスケーリングはエグゼキューターの需要に対応するために Spot
ノードをスケーリングするからです。
クラスター全体にオンデマンドインスタンスを持つシナリオの例を次に示します。
クラスターの初期状態 | スケーリングパラメータ | スケーリングの動作 |
---|---|---|
インスタンスグループ コア:1 オンデマンド タスク:1 オンデマンド |
|
オンデマンドタイプを使用して、コアノードで 1 ~ 12 個のインスタンスまたはインスタンスフリートユニットをスケーリングします。オンデマンドを使用して、タスクノードで残りの容量をスケーリングします。スポットインスタンスを使用したスケーリングはありません。 ノードラベルでマネージドスケーリングを使用し、アプリケーションプロセスを |
インスタンスフリート コア:1 オンデマンド タスク:1 オンデマンド |
|
シナリオ 4: クラスター内のスポットインスタンスのみ
スポットインスタンスのみを使用するには、マネージドスケーリングパラメータが次の要件を満たしている必要があります。
-
オンデマンド制限が 0 に設定されていること。
最大コアノードが最大限度未満の場合、最大コアノードパラメータを使用して、コアノードとタスクノード間で容量割り当てを分割できます。
インスタンスグループで構成されるクラスターでこのシナリオを有効にするには、コアインスタンスグループが初期設定時にスポット購入オプションを使用する必要があります。タスクインスタンスグループにスポットインスタンスがない場合、Amazon EMR Managed Scaling は、必要に応じてスポットインスタンスを使用してタスクグループを作成します。
このシナリオは、ノードラベルでマネージドスケーリングを使用し、アプリケーションプロセスを ON_DEMAND
ノードでのみ実行するように制限する場合には適用されません。マネージドスケーリングは、アプリケーションプロセスの需要に合わせて ON_DEMAND
ノードをスケーリングするからです。
クラスター全体にスポットインスタンスを持つシナリオの例を次に示します。
クラスターの初期状態 | スケーリングパラメータ | スケーリングの動作 |
---|---|---|
インスタンスグループ コア:1 スポット タスク:1 スポット |
|
スポットを使用して、コアノードで 1 ~ 20 個のインスタンスまたはインスタンスフリートユニットをスケーリングします。オンデマンドタイプを使用したスケーリングはありません。 ノードラベルでマネージドスケーリングを使用し、アプリケーションプロセスを |
インスタンスフリート コア:1 スポット タスク:1 スポット |
|
シナリオ 5: コアノードのオンデマンドインスタンスと、タスクノードのスポットインスタンスをスケーリングする
コアノードのオンデマンドインスタンスと、タスクノードのスポットインスタンスをスケーリングするには、マネージドスケーリングパラメータが次の要件を満たしている必要があります。
-
オンデマンドの制限が最大コアノードに等しいこと。
-
オンデマンド制限と最大コアノードの両方が最大限度未満であること。
インスタンスグループで構成されるクラスターでこのシナリオを有効にするには、コアノードグループがオンデマンド購入オプションを使用する必要があります。
このシナリオは、ノードラベルでマネージドスケーリングを使用し、アプリケーションプロセスを ON_DEMAND
ノードまたは CORE
ノードでのみ実行するように制限する場合には適用されません。
コアノードのオンデマンドインスタンスと、タスクノードのスポットインスタンスをスケーリングするシナリオの例を次に示します。
クラスターの初期状態 | スケーリングパラメータ | スケーリングの動作 |
---|---|---|
インスタンスグループ コア:1 オンデマンド タスク:1 オンデマンドと 1 スポット |
|
タスクノードにすでに 1 つのオンデマンドユニットがあり、オンデマンドの最大制限が 7 であるため、コアノードで 6 個のオンデマンドユニットまでスケールアップします。次に、タスクノードで 13 個のスポットユニットまでスケールアップします。 |
インスタンスフリート コア:1 オンデマンド タスク:1 オンデマンドと 1 スポット |
|
シナリオ 6: アプリケーションプロセスの需要に応じてCORE
インスタンスをスケールし、エグゼキュターの需要に応じて TASK
インスタンスをスケールします。
このシナリオは、ノードラベルでマネージドスケーリングを使用し、アプリケーションプロセスを CORE
ノードでのみ実行するように制限する場合にのみ適用できます。
アプリケーションプロセスの需要とエグゼキュターの需要に基づいて CORE
ノードと TASK
ノードをそれぞれスケーリングするには、クラスターの起動時に次の設定を行う必要があります。
-
yarn.node-labels.enabled:true
-
yarn.node-labels.am.default-node-label-expression: 'CORE'
ON_DEMAND
制限と最大 CORE
ノードのパラメータが指定されていないときは、両方のパラメータがデフォルトで最大限度に設定されます。
最大 ON_DEMAND
ノードが最大限度未満の場合、マネージドスケーリングでは、最大 ON_DEMAND
ノードパラメータを使用して、ON_DEMAND
ノードと SPOT
ノード間で容量割り当てを分割できます。最大 CORE
ノードパラメータを最小容量パラメータ以下に設定すると、CORE
ノードは最大コア容量で静的のままになります。
アプリケーションプロセスの需要に応じて CORE インスタンスを、エグゼキューターの需要に応じて TASK インスタンスををスケーリングするシナリオの例を次に示します。
クラスターの初期状態 | スケーリングパラメータ | スケーリングの動作 |
---|---|---|
インスタンスグループ コア:1 オンデマンド タスク:1 オンデマンド |
|
オンデマンドまたはスポット市場タイプを使用して、クラスターのアプリケーションプロセスの需要に基づいて 1~20 ノードの リクエストされた |
インスタンスフリート コア:1 オンデマンド タスク:1 オンデマンド |
|
シナリオ 7: アプリケーションプロセスの需要に応じてON_DEMAND
インスタンスをスケールし、エグゼキュターの需要に応じて SPOT
インスタンスをスケールします。
このシナリオは、ノードラベルでマネージドスケーリングを使用し、アプリケーションプロセスを ON_DEMAND
ノードでのみ実行するように制限する場合にのみ適用できます。
アプリケーションプロセスの需要とエグゼキュターの需要に基づいて ON_DEMAND
ノードと SPOT
ノードをそれぞれスケーリングするには、クラスターの起動時に次の設定を行う必要があります。
-
yarn.node-labels.enabled:true
-
yarn.node-labels.am.default-node-label-expression: 'ON_DEMAND'
ON_DEMAND
制限と最大 CORE
ノードのパラメータが指定されていないときは、両方のパラメータがデフォルトで最大限度に設定されます。
最大 CORE
ノードが最大限度未満の場合、マネージドスケーリングでは、最大 CORE
ノードパラメータを使用して、CORE
ノードと TASK
ノード間で容量割り当てを分割できます。最大 CORE
ノードパラメータを最小容量パラメータ以下に設定すると、CORE
ノードは最大コア容量で静的のままになります。
アプリケーションプロセスの需要に応じてオンデマンドインスタンスを、エグゼキューターの需要に応じてスポットインスタンスををスケーリングするシナリオの例を次に示します。
クラスターの初期状態 | スケーリングパラメータ | スケーリングの動作 |
---|---|---|
インスタンスグループ コア:1 オンデマンド タスク:1 オンデマンド |
|
リクエストされた |
インスタンスフリート コア:1 オンデマンド タスク:1 オンデマンド |
|