翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ノード割り当て戦略とシナリオを把握する
このセクションでは、Amazon EMRマネージドスケーリングで使用できるノード割り当て戦略と一般的なスケーリングシナリオの概要を説明します。
ノード割り当て戦略
Amazon EMR マネージドスケーリングは、次のスケールアップおよびスケールダウン戦略に基づいてコアノードとタスクノードを割り当てます。
スケールアップ戦略
-
Amazon EMRリリース 7.2 以降では、マネージドスケーリングはまずノードラベルとアプリケーションプロセス制限YARNプロパティに基づいてノードを追加します。
-
Amazon EMRリリース 7.2 以降では、ノードラベルを有効にし、アプリケーションプロセスを
CORE
ノードに制限すると、アプリケーションプロセスの需要が増加し、エグゼキュターの需要が増加すると、Amazon EMRマネージドスケーリングによってコアノードとタスクノードがスケールアップされます。同様に、ノードラベルを有効にし、アプリケーションプロセスをON_DEMAND
ノードに制限すると、マネージドスケーリングはアプリケーションプロセスの需要が高まった場合はオンデマンドノードをスケールアップし、エグゼキュターの需要が高まった場合はスポットノードをスケールアップします。 -
ノードラベルが有効になっていない場合、アプリケーションプロセスの配置はノードまたはマーケットタイプに制限されません。
-
ノードラベルを使用することで、マネージドスケーリングは同じサイズ変更オペレーションで異なるインスタンスグループとインスタンスフリートをスケールアップおよびスケールダウンできます。例えば、 に
ON_DEMAND
ノードがあり、instance_group1
にSPOT
ノードinstance_group2
があり、ノードラベルが有効で、アプリケーションプロセスがON_DEMAND
ラベルを持つノードに制限されているシナリオでは、マネージドスケーリングは、instance_group2
アプリケーションプロセスの需要が減少しinstance_group1
、エグゼキュターの需要が増加すると、スケールダウンおよびスケールアップします。 -
Amazon が現在のインスタンスグループでスケールアップに遅延EMRが発生すると、マネージドスケーリングを使用するクラスターは自動的に別のタスクインスタンスグループに切り替えられます。
-
MaximumCoreCapacityUnits
パラメータが設定されている場合、Amazon はコアユニットが最大許容制限に達するまでコアノードをEMRスケーリングします。残りの容量はすべてタスクノードに追加されます。 -
MaximumOnDemandCapacityUnits
パラメータが設定されている場合、Amazon はオンデマンドユニットが最大許容制限に達するまで、オンデマンドインスタンスを使用してクラスターをEMRスケーリングします。残りの容量はすべて、スポットインスタンスを使用して追加されます。 -
MaximumCoreCapacityUnits
パラメータとMaximumOnDemandCapacityUnits
パラメータの両方が設定されている場合、Amazon はスケーリング中に両方の制限EMRを考慮します。例えば、
MaximumCoreCapacityUnits
が より小さい場合MaximumOnDemandCapacityUnits
、Amazon はEMRまずコア容量の制限に達するまでコアノードをスケーリングします。残りの容量については、Amazon はEMRまずオンデマンドインスタンスを使用してオンデマンド制限に達するまでタスクノードをスケーリングし、次にタスクノードにスポットインスタンスを使用します。
スケールダウン戦略
-
スケールアップ戦略と同様に、Amazon はノードラベルに基づいてノードEMRを削除します。ノードラベルの詳細については、「ノードタイプを理解する: プライマリノード、コアノード、タスクノード」を参照してください。
-
ノードラベルを有効にしていない場合、マネージドスケーリングはタスクノードを削除し、目的のスケールダウンターゲット容量に達するまでコアノードを削除します。マネージドスケーリングでは、クラスターがマネージドスケーリングポリシーで指定された最小制約を下回ることはありません。
-
Amazon EMRバージョン 5.34.0 以降、および Amazon EMRバージョン 6.4.0 以降では、Spark シャッフルデータ (Spark が特定のオペレーションを実行するためにパーティション間で再分散するデータ) を認識するマネージドスケーリングがサポートされています。シャッフル操作の詳細については、Spark のプログラミングガイド
を参照してください。マネージドスケーリングでは、使用率の高いシャッフルデータを含まない、使用率の低いインスタンスのみをスケールダウンします。このインテリジェントなスケーリングにより、意図しないシャッフルデータの損失を防ぐことができ、ジョブを再試行したり、中間データを再計算したりする必要がなくなります。 -
マネージドスケーリングは、まずタスクノードを削除し、次に目的のスケールダウンターゲット容量に達するまでコアノードを削除します。クラスターは、マネージドスケーリングポリシーで指定された最小制約を下回ることはありません。
-
Amazon 5.x リリース 5EMR.34.0 以降、および 6.x リリース 6.4.0 以降で起動されたクラスターの場合、Amazon EMRマネージドスケーリングは、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マネージドスケーリングは必要に応じてスポットインスタンスを使用してタスクグループを作成します。
このシナリオは、ノードラベルでマネージドスケーリングを使用し、アプリケーションプロセスを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 リクエストされた |
インスタンスフリート コア: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 オンデマンド |
|