翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
EC2 バージョン 7.0 での Amazon EMR 以降では、Advanced Scaling を活用してクラスターのリソース使用率を制御できます。高度なスケーリングでは、ビジネスニーズに応じてリソースの使用率とパフォーマンスレベルを調整するための使用率パフォーマンススケールが導入されています。設定した値は、クラスターの重み付けをリソースの節約にするか、サービスservice-level-agreement (SLA) の機密性の高いワークロードを処理するためにスケールアップするかを決定します。この場合、迅速な完了が不可欠です。スケーリング値が調整されると、マネージドスケーリングはインテントを解釈し、リソースを最適化するためにインテリジェントにスケーリングします。マネージドスケーリングの詳細については、「Amazon EMR のマネージドスケーリングを設定する」を参照してください。
高度なスケーリング設定
Advanced Scaling に設定した値は、クラスターを要件に合わせて最適化します。値の範囲は 1~100 です。指定できる値は 1、25、50、75、100 です。インデックスをこれら以外の値に設定すると、検証エラーが発生します。
スケーリング値はリソース使用率戦略にマッピングされます。次のリストでは、これらのいくつかを定義します。
使用率最適化 [1] – この設定は、リソースのオーバープロビジョニングを防ぎます。コストを低く抑え、効率的なリソース使用率を優先する場合は、低い値を使用します。これにより、クラスターのスケールアップが遅くなります。これは、ワークロードの急増が定期的に発生しており、リソースの急激な増加を望まない場合のユースケースに適しています。
Balanced [50] – リソースの使用率とジョブのパフォーマンスのバランスが取れます。この設定は、ほとんどのステージでランタイムが安定している安定したワークロードに適しています。また、実行時間が短いステージと長いステージが混在するワークロードにも適しています。どちらを選択するかわからない場合は、この設定から始めることをお勧めします。
パフォーマンス最適化 [100] – この戦略では、パフォーマンスを優先します。クラスターは積極的にスケールアップして、ジョブが迅速に完了し、パフォーマンス目標を達成できるようにします。パフォーマンスの最適化は、高速な実行時間が重要なservice-level-agreement (SLA) の機密性の高いワークロードに適しています。
注記
使用可能な中間値は、クラスターの Advanced Scaling 動作を微調整するために、戦略間の中間点を提供します。
高度なスケーリングの利点
データ量の変更、コスト目標の調整、SLA の実装など、環境や要件にばらつきがあるため、クラスターのスケーリングは、目標を達成するためにクラスター設定を調整するのに役立ちます。主な利点は次のとおりです。
きめ細かな制御の強化 – 使用率パフォーマンス設定の導入により、要件に応じてクラスターのスケーリング動作を簡単に調整できます。使用パターンに基づいて、コンピューティングリソースの需要に合わせてスケールアップしたり、リソースを節約するためにスケールダウンしたりできます。
コスト最適化の向上 – 要件によっては、コスト目標をより簡単に満たす必要があるため、使用率の低い値を選択できます。
最適化の開始方法
セットアップと設定
以下のステップを使用してパフォーマンスインデックスを設定し、スケーリング戦略を最適化します。
次のコマンドは、使用率が最適化された
[1]
スケーリング戦略で既存のクラスターを更新します。aws emr put-managed-scaling-policy --cluster-id '
cluster-id
' \ --managed-scaling-policy '{ "ComputeLimits": { "UnitType": "Instances", "MinimumCapacityUnits": 1, "MaximumCapacityUnits": 2, "MaximumOnDemandCapacityUnits": 2, "MaximumCoreCapacityUnits": 2 }, "ScalingStrategy": "ADVANCED", "UtilizationPerformanceIndex": "1" }' \ --region "region-name
"属性
ScalingStrategy
とUtilizationPerformanceIndex
は新しく、スケーリングの最適化に関連しています。マネージドスケーリングポリシーのUtilizationPerformanceIndex
属性に対応する値 (1、25、50、75、100) を設定することで、さまざまなスケーリング戦略を選択できます。デフォルトのマネージドスケーリング戦略に戻すには、 属性
ScalingStrategy
とUtilizationPerformanceIndex
属性を含めずにput-managed-scaling-policy
コマンドを実行します。(これはオプションです。) このサンプルでは、これを行う方法を示します。aws emr put-managed-scaling-policy \ --cluster-id '
cluster-id
' \ --managed-scaling-policy '{"ComputeLimits":{"UnitType":"Instances","MinimumCapacityUnits":1,"MaximumCapacityUnits":2,"MaximumOnDemandCapacityUnits":2,"MaximumCoreCapacityUnits":2}}' \ --region "region-name
"
モニタリングメトリクスを使用したクラスター使用率の追跡
EMR バージョン 7.3.0 以降、Amazon EMR はメモリと仮想 CPU に関連する 4 つの新しいメトリクスを公開します。これらを使用して、スケーリング戦略全体のクラスター使用率を測定できます。これらのメトリクスはあらゆるユースケースで利用できますが、ここで提供される詳細を使用して Advanced Scaling をモニタリングできます。
使用できる便利なメトリクスは次のとおりです。
YarnContainersUsedMemoryGBSeconds – YARN によって管理されるアプリケーションによって消費されるメモリの量。
YarnContainersTotalMemoryGBSeconds – クラスター内の YARN に割り当てられた合計メモリ容量。
YarnNodesUsedVCPUSeconds – YARN によって管理される各アプリケーションの VCPU 秒の合計。
YarnNodesTotalVCPUSeconds – ヤーンが準備されていない時間枠を含む、消費されたメモリの合計 VCPU 秒数。
Amazon CloudWatch Logs Insights を使用してリソースメトリクスを分析できます。機能には、リソースの使用とスケーリングに固有のメトリクスを抽出するのに役立つ専用のクエリ言語が含まれています。
Amazon CloudWatch コンソールで実行できる次のクエリは、Metric Math を使用して、消費メモリ (e2) の実行合計をメモリの合計 (e3) の実行合計で割って平均メモリ使用率 (e1) を計算します。
{
"metrics": [
[ { "expression": "e2/e3", "label": "Average Mem Utilization", "id": "e1", "yAxis": "right" } ],
[ { "expression": "RUNNING_SUM(m1)", "label": "RunningTotal-YarnContainersUsedMemoryGBSeconds", "id": "e2", "visible": false } ],
[ { "expression": "RUNNING_SUM(m2)", "label": "RunningTotal-YarnContainersTotalMemoryGBSeconds", "id": "e3", "visible": false } ],
[ "AWS_EMR_ManagedResize", "YarnContainersUsedMemoryGBSeconds", "ACCOUNT_ID", "793684541905", "COMPONENT", "ManagerService", "JOB_FLOW_ID", "cluster-id", { "id": "m1", "label": "YarnContainersUsedMemoryGBSeconds" } ],
[ ".", "YarnContainersTotalMemoryGBSeconds", ".", ".", ".", ".", ".", ".", { "id": "m2", "label": "YarnContainersTotalMemoryGBSeconds" } ]
],
"view": "timeSeries",
"stacked": false,
"region": "region",
"period": 60,
"stat": "Sum",
"title": "Memory Utilization"
}
ログをクエリするには、 AWS コンソールで CloudWatch を選択します。CloudWatch のクエリの書き込みの詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「CloudWatch Logs Insights を使用したログデータの分析」を参照してください。 Amazon CloudWatch
次の図は、サンプルクラスターのこれらのメトリクスを示しています。

考慮事項と制限事項
スケーリング戦略の有効性は、固有のワークロード特性とクラスター設定によって異なる場合があります。スケーリング設定を試して、ユースケースに最適なインデックス値を決定することをお勧めします。
Amazon EMR Advanced Scaling は、バッチワークロードに特に適しています。SQL/データウェアハウスおよびストリーミングワークロードの場合、最適なパフォーマンスを得るには、デフォルトのマネージドスケーリング戦略を使用することをお勧めします。
パフォーマンスが最適化されたスケーリング戦略では、デフォルトのマネージドスケーリング戦略よりも長い期間、高いコンピューティングリソースを維持することで、ジョブの実行を高速化できます。このモードでは、リソースの需要に合わせて迅速にスケールアップすることを優先するため、ジョブを迅速に完了できます。これにより、デフォルトの戦略と比較してコストが高くなる可能性があります。
クラスターが既に最適化され、完全に利用されている場合、Advanced Scaling を有効にしても、追加の利点が得られない可能性があります。状況によっては、Advanced Scaling を有効にすると、ワークロードの実行時間が長くなるため、コストが増加する可能性があります。このような場合は、デフォルトのマネージドスケーリング戦略を使用して、最適なリソース割り当てとコスト効率を確保することをお勧めします。
マネージドスケーリングのコンテキストでは、 設定がパフォーマンス最適化 [100] から使用率最適化 [1] に調整されるため、実行時間の経過とともにリソース使用率に重点がシフトします。ただし、ワークロードの性質とクラスターのトポロジによって結果が変わる可能性があることに注意してください。ユースケースに最適な結果を得るには、ワークロードでスケーリング戦略をテストして、最適な設定を決定することを強くお勧めします。
PerformanceUtilizationIndex は、次の値のみを受け入れます。
1
25
50
75
100
他の値を送信すると、検証エラーが発生します。