すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:カスタム自動スケーリングルールの設定

最終更新日:Nov 09, 2025

ビジネスワークロードが変動する場合は、E-MapReduce (EMR) クラスタの自動スケーリングを有効にし、ビジネス要件に基づいてクラスタ内のタスクノードを増減する自動スケーリングルールを設定することをお勧めします。自動スケーリングは、コストを削減し、ジョブに十分な計算リソースを確保するのに役立ちます。このトピックでは、EMR コンソールでカスタム自動スケーリングルールを設定する方法について説明します。

前提条件

  • DataLake クラスタ、Dataflow クラスタ、オンライン分析処理 (OLAP) クラスタ、DataServing クラスタ、またはカスタムクラスタが作成されています。詳細については、「クラスタを作成する」をご参照ください。

  • クラスター内に、従量課金インスタンスまたはプリエンプティブルインスタンスを含むタスクノードグループが作成されていること。詳細については、「ノードグループの作成」をご参照ください。

制限

  • Elastic Compute Service (ECS) インスタンスの不足による自動スケーリングの失敗を防ぐために、ノードグループを追加する際に複数のインスタンスタイプを選択できます。最大 10 個の ECS インスタンスタイプを選択できます。ノードは、リスト内のインスタンスタイプの順序に基づいて作成されます。デフォルトでは、クラスターがスケールアウトされる際に、最初に選択されたインスタンスタイプが優先的に使用されます。インスタンスタイプが利用できない場合は、次のインスタンスタイプが使用されます。ノードの作成に使用されるインスタンスタイプは、在庫状況によって異なります。

  • YARN サービスがデプロイされているクラスタのみが、負荷ベースのスケーリングルールをサポートします。

注意事項

  • 要件を満たすノードグループに自動スケーリングルールを追加できます。自動スケーリングルールがトリガーされると、自動スケーリング設定に基づいてノードグループが自動的にスケールインまたはスケールアウトされます。自動スケーリングルールが設定されていない場合は、自動スケーリングアクティビティはトリガーされません。

  • システムは、指定したインスタンスの仕様と一致するインスタンスタイプを自動的に検索し、[インスタンスタイプ] セクションにインスタンスタイプを表示します。[インスタンスタイプ] セクションで 1 つ以上のインスタンスタイプを選択する必要があります。これにより、選択したインスタンスタイプに基づいてクラスタをスケーリングできます。

説明

複数の自動スケーリングルールが設定されていて、指定された条件が同時に満たされた場合、システムは次のルールに基づいてルールをトリガーして実行します。

  • スケールアウトルールはスケールインルールよりも優先されます。

  • 時間ベースのスケーリングルールと負荷ベースのスケーリングルールは、トリガーシーケンスに基づいて実行されます。

  • 負荷ベースのスケーリングルールは、クラスタ負荷メトリックがトリガーされた時間に基づいてトリガーされます。

  • 同じクラスタ負荷メトリックで設定された負荷ベースのスケーリングルールは、ルールの設定順にトリガーされます。

手順

方法 1: 既存のクラスタにカスタムスケーリングルールを追加する

  1. [自動スケーリング] タブに移動します。

    1. EMR コンソールにログインします

    2. 上部のナビゲーションバーで、ビジネス要件に基づいてリージョン とリソースグループ を選択します。

    3. [ECS 上の EMR] ページで、目的のクラスタを見つけ、[クラスタ ID/名前] 列にあるクラスタの名前をクリックします。

    4. 表示されたページで、[自動スケーリング] タブをクリックします。

  2. 自動スケーリングルールを設定します。

    1. [自動スケーリングの設定] タブの [自動スケーリングルールの設定] セクションで、[カスタム自動スケーリングルール] をクリックします。[自動スケーリングルールの変更] メッセージで、[再設定] をクリックします。目的のノードグループを見つけ、[アクション] 列の [編集] をクリックします。

    2. [自動スケーリングの設定] パネルで、次のパラメータを設定します。

      • 現在のノードグループのノード数量の制限: 現在のノードグループのノード数の範囲を指定します。このパラメーターは、自動スケーリングルールに基づいてノードグループが自動的にスケールインまたはスケールアウトされる際の、ノードグループ内のノード数の上限と下限を定義します。ノードグループの最大および最小ノード数を変更するには、[制限の変更] をクリックします。

        • インスタンスの最大数: 現在のノードグループのノード数の上限を指定します。ノードグループのノード数が上限に達すると、ノードグループはそれ以上スケールアウトできなくなります。

        • インスタンスの最小数: 現在のノードグループのノード数の下限を指定します。ノードグループのノード数が下限に達すると、ノードグループはそれ以上スケールインできなくなります。

      • [トリガールール] : 現在のノードグループに設定されている自動スケーリングルールを表示します。ノードグループにさらに自動スケーリングルールを追加することもできます。

        • 時間ベースのスケーリング

          クラスターのコンピューティングワークロードが定期的に変動する場合、毎日、毎週、または毎月の決まった時間に特定の数のタスクノードを追加または削除して、コンピューティングリソースを補完または節約できます。これにより、ジョブを低コストで完了させることができます。自動スケーリングルールは、スケールアウトルールとスケールインルールに分かれています。

          重要

          潜在的な競合を防ぎ、スケーリング操作がスムーズに進むようにするために、スケールアウトルールとスケールインルールの実行時間を同じ時点に設定しないでください。

          次の表は、スケールアウトルールのパラメータについて説明しています。

          パラメータ

          説明

          [スケールアウトタイプ]

          スケジュールされたスケーリング。

          [ルール名]

          スケールアウトルールの名前。自動スケーリングルールの名前は、クラスタ内で一意である必要があります。

          [頻度]

          • [繰り返し実行] : 自動スケーリングは、毎日、毎週、または毎月の特定の時点に実行されます。

          • [1 回だけ実行] : 自動スケーリングは、特定の時点で 1 回だけ実行されます。

          [実行時間]

          スケールアウトルールが実行される特定の時点。

          [ルールの有効期限]

          スケールアウトルールの有効期限。スケールアウトルールが期限切れになると、スケールアウトアクティビティはトリガーされません。このパラメータは、[頻度] パラメータを [繰り返し実行] に設定した場合にのみ使用できます。

          [再試行時間範囲]

          再試行間隔。さまざまな理由により、指定された時点で自動スケーリングが失敗する可能性があります。再試行間隔が指定されている場合、システムは、自動スケーリングが実行されるまで、このパラメータで指定された再試行間隔中に 30 秒ごとに自動スケーリングを再試行します。有効な値: 0 ~ 3600。単位: 秒。

          例えば、自動スケーリング操作 A を指定された期間に実行する必要があるとします。この期間中に自動スケーリング操作 B がまだ進行中であるか、クールダウン状態にある場合、操作 A は実行できません。この場合、システムは指定した再試行間隔内で 30 秒ごとに操作 A の実行を試みます。必要な条件が満たされると、クラスターは直ちに自動スケーリングを実行します。

          各スケールアウトのノード数

          スケールアウトルールがトリガーされるたびにノードグループに追加されるノードの数。

          [ベストエフォート配信]

          スイッチをオンにすることをお勧めします。このスイッチをオンにすると、システムは正常に作成されたすべてのノードをベストエフォートで配信し、ビジネスの継続性を確保します。

          たとえば、毎日 00:00 に 100 個のノードを追加するようにスケールアウトルールを設定し、90 個のノードのみが追加されたとします。[ベストエフォート配信] スイッチをオンにしていない場合、スケールアウトは失敗します。スイッチをオンにすると、90 個のノードが配信されます。

        • 負荷ベースのスケーリング

          説明

          YARN サービスがデプロイされているクラスタのみが、負荷ベースのスケーリングルールをサポートします。

          ビッグデータ計算ワークロードの変動を正確に推定できないクラスタのタスクノードグループに、負荷ベースのスケーリングルールを追加できます。自動スケーリングルールは、スケールアウトルールとスケールインルールに分けられます。次の表は、スケールアウトルールのパラメータについて説明しています。

          パラメータ

          説明

          [スケールアウトタイプ]

          負荷に基づいてスケールアウトします。

          [ルール名]

          スケールアウトルールの名前。自動スケーリングルールの名前は、クラスタ内で一意である必要があります。

          [負荷メトリックベースのトリガー条件]

          スケールアウトルールをトリガーするために満たす必要がある条件。少なくとも 1 つのシステム定義の負荷メトリックを選択する必要があります。複数のシステム定義の負荷メトリックを選択するには、Add Metric をクリックします。次のパラメータを設定する必要があります。

          • 負荷メトリック: システム定義の YARN 負荷メトリックを選択します。EMR 自動スケーリングメトリックと YARN 負荷メトリックのマッピングについては、「YARN 負荷メトリックと一致する EMR 自動スケーリングメトリックの説明」をご参照ください。

            説明

            システム定義の負荷メトリックは、クラスタタイプによって異なります。サポートされているシステム定義の負荷メトリックは、EMR コンソールで確認できます。

          • 統計方法: 各負荷メトリックのしきい値を指定するために使用されるルール。選択した各負荷メトリックの指定された集約ディメンション (平均、最大、または最小) の値が統計期間内にしきい値に達すると、スケールアウトルールが 1 回トリガーされます。

          Multi-metric Relationship

          スケールアウトルールのトリガーに使用されるメトリック間の関係。 有効な値: All Metrics Meet the Conditions および Any Metric Meets the Condition

          [統計期間]

          選択した各負荷メトリックの指定された集約ディメンション (平均、最大、または最小) の値がしきい値に達しているかどうかを測定するための統計期間。データは、指定された統計期間に基づいて収集、集計、比較されます。統計期間が短いほど、スケールアウトルールがトリガーされる頻度が高くなる可能性があります。ビジネス要件に基づいて統計期間を指定します。

          [スケールアウトをトリガーする繰り返し回数]

          集計方法に基づいて、Auto Scaling は負荷メトリック値がしきい値を超えた各発生を記録します。指定された発生回数に達した後にのみ、対応するスケーリングルールをトリガーします。

          各スケールアウトのノード数

          スケールアウトルールがトリガーされるたびにノードグループに追加されるノードの数。

          [ベストエフォート配信]

          このスイッチをオンにすると、システムは正常に作成されたすべてのノードをベストエフォートで配信します。負荷ベースのスケーリングはメトリックの影響を受けます。ビジネス要件に基づいて、スイッチをオンにするかどうかを決定できます。

          [クールダウン時間]

          2 つのスケールアウトアクティビティの間隔。クールダウン時間中は、スケールアウト条件が満たされていても、スケールアウトルールはトリガーされません。スケールアウトアクティビティは、クールダウン時間が終了し、スケールアウト条件が再び満たされた後に実行されます。

          ノードグループがスケールアウトされて予期された状態に達すると、クールダウン時間によって、後続のスケールアウトアクティビティをトリガーするクラスタ負荷メトリックが安定した状態に保たれます。

          [有効期間]

          スケールアウトルールが有効になる時間範囲。このパラメータはオプションです。デフォルトでは、スケールアウトルールは 1 日 24 時間使用できます。スケールアウトアクティビティは、このパラメータで指定された時間範囲内でのみトリガーされます。

    3. [保存して適用] をクリックします。

      スケールアウト条件が満たされると、ノードグループに対してスケールアウトアクティビティがトリガーされます。

方法 2: クラスタの作成時にカスタム自動スケーリングルールを追加する

  1. EMR コンソールにログインします

  2. 上部のナビゲーションバーで、ビジネス要件に基づいてリージョンとリソースグループを選択します。

  3. [クラスタの作成] をクリックします。詳細については、「クラスタを作成する」をご参照ください。

    説明

    カスタム自動スケーリングルールを設定する前に、従量課金タスクノードグループを追加する必要があります。

  4. [クラスタスケーリング] パラメータを設定します。

    1. [カスタム自動スケーリングルール] をクリックします。目的のノードグループを見つけ、[アクション] 列の [編集] をクリックします。

    2. [自動スケーリングの設定] パネルで、パラメーターを設定します。詳細については、「自動スケーリングルールを設定する」をご参照ください。

    3. [保存して適用] をクリックします。

  5. 注文を確認します。

    クラスタが作成されると、特定の条件が満たされたときに、ノードグループに対してスケーリングアクティビティがトリガーされます。

方法 3: SDK を使用してカスタム自動スケーリングルールを追加する

特定の API 操作を呼び出してクラスタを作成するか、タスクノードグループを作成するときに、タスクノードグループのカスタム自動スケーリングルールを設定して、システムがノードを自動的に管理できるようにすることができます。詳細については、「CreateCluster」および「CreateNodeGroup」をご参照ください。既存のタスクノードグループのカスタム自動スケーリングルールを設定することもできます。詳細については、「PutAutoScalingPolicy」をご参照ください。

次の Java コードは、負荷ベースのスケールアウトルールを設定する方法を示しています。

説明

セキュリティトークンサービス (STS) トークンを使用して、より高いセキュリティを提供する Credentials クライアントを初期化することをお勧めします。詳細については、「アクセス認証情報を管理する」をご参照ください。

// このファイルは自動生成されたものです。編集しないでください。ありがとうございます。
package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * description

YARN 負荷メトリックと一致する EMR 自動スケーリングメトリックの説明

説明
  • キュー関連の自動スケーリングメトリックの場合、`queue_name` パラメーターはキュー名を指定します。デフォルト値は `root` です。カスタムキューを指定できます。

  • パーティション関連の自動スケーリングメトリックの場合、`partition_name` パラメーターはパーティション名を指定します。このパラメーターは空にできません。

EMR 自動スケーリングメトリック

サービス

説明

yarn_resourcemanager_queue_AvailableVCores

YARN

指定されたキューで利用可能な仮想 CPU コアの数。

yarn_resourcemanager_queue_PendingVCores

YARN

指定されたキューで保留中の仮想 CPU コアの数。

yarn_resourcemanager_queue_AllocatedVCores

YARN

指定されたキューに割り当てられた仮想 CPU コアの数。

yarn_resourcemanager_queue_ReservedVCores

YARN

指定されたキューで予約されている仮想 CPU コアの数。

yarn_resourcemanager_queue_AvailableMB

YARN

指定されたキューで利用可能なメモリの量。

yarn_resourcemanager_queue_PendingMB

YARN

指定されたキューで保留中のメモリの量。

yarn_resourcemanager_queue_AllocatedMB

YARN

指定されたキューに割り当てられたメモリの量。

yarn_resourcemanager_queue_ReservedMB

YARN

指定されたキューで予約されているメモリの量。

yarn_resourcemanager_queue_AppsRunning

YARN

指定されたキューで実行中のジョブの数。

yarn_resourcemanager_queue_AppsPending

YARN

指定されたキューで一時停止中のジョブの数。

yarn_resourcemanager_queue_AppsKilled

YARN

指定されたキューで停止したジョブの数。

yarn_resourcemanager_queue_AppsFailed

YARN

指定されたキューで失敗したジョブの数。

yarn_resourcemanager_queue_AppsCompleted

YARN

指定されたキューで完了したジョブの数。

yarn_resourcemanager_queue_AppsSubmitted

YARN

指定されたキューで送信されたジョブの数。

yarn_resourcemanager_queue_AllocatedContainers

YARN

指定されたキューに割り当てられたコンテナーの数。

yarn_resourcemanager_queue_PendingContainers

YARN

指定されたキューで保留中のコンテナーの数。

yarn_resourcemanager_queue_ReservedContainers

YARN

指定されたキューで予約されているコンテナーの数。

yarn_resourcemanager_queue_AvailableMBPercentage

YARN

指定されたキューで利用可能なメモリリソースの割合。(MemoryAvailablePercentage= AvailableMemory/Total Memory)

説明

このメトリックは、V3.43.0、V5.9.0 以降のマイナーバージョンの EMR クラスタで使用できます。

yarn_resourcemanager_queue_PendingContainersRatio

YARN

指定されたキュー内の保留中のコンテナーと割り当てられたコンテナーの比率。(ContainerPendingRatio = PendingContainers/AllocatedContainers).

説明

このメトリックは、V3.43.0、V5.9.0 以降のマイナーバージョンの EMR クラスタで使用できます。

yarn_resourcemanager_queue_AvailableVCoresPercentage

YARN

指定されたキューで利用可能な CPU コアの割合。AvailableVCoresPercentage = AvailableVCores / (ReservedVCores + AvailableVCores + AllocatedVCores) * 100

説明

このメトリックは、V3.43.0、V5.9.0 以降のマイナーバージョンの EMR クラスタで使用できます。

yarn_cluster_numContainersByPartition

YARN

指定されたパーティションのコンテナの数。partition_name パラメータはパーティション名を指定します。

説明

このメトリックは、V3.44.0、V5.10.0 以降のマイナーバージョンの EMR クラスタで使用できます。

yarn_cluster_usedMemoryMBByPartition

YARN

指定されたパーティションで使用されているメモリの量。`partition_name` パラメーターはパーティション名を指定します。

説明

このメトリックは、V3.44.0、V5.10.0 以降のマイナーバージョンの EMR クラスタで使用できます。

yarn_cluster_availMemoryMBByPartition

YARN

指定されたパーティションで利用可能なメモリの量。`partition_name` パラメーターはパーティション名を指定します。

説明

このメトリックは、V3.44.0、V5.10.0 以降のマイナーバージョンの EMR クラスタで使用できます。

yarn_cluster_usedVirtualCoresByPartition

YARN

指定されたパーティションで使用されている CPU コアの数。`partition_name` パラメーターはパーティション名を指定します。

説明

このメトリックは、V3.44.0、V5.10.0 以降のマイナーバージョンの EMR クラスタで使用できます。

yarn_cluster_availableVirtualCoresByPartition

YARN

指定されたパーティションで利用可能な CPU コアの数。`partition_name` パラメーターはパーティション名を指定します。

説明

このメトリックは、V3.44.0、V5.10.0 以降のマイナーバージョンの EMR クラスタで使用できます。

FAQ

EMR クラスタのスケールアウトに失敗するのはなぜですか? スケールアウトの成功率を向上させるにはどうすればよいですか?

原因

  1. ECS リソースの不足: 追加しようとしている特定のインスタンスタイプの ECS インスタンスの数が、現在のゾーンで利用可能な ECS インスタンスの数を超えている場合、スケールアウトは失敗します。これは、基盤となる ECS リソースが動的に変化しており、需要が高いために一時的に不足する可能性があるためです。

  2. 単一のインスタンスタイプの ECS インスタンスの選択: 単一のタイプの ECS インスタンスを選択し、そのインスタンスタイプの ECS インスタンスが不足している場合、スケールアウトプロセスがブロックされる可能性があります。

解決策

  • 自動スケーリングルールを設定する際に [ベストエフォート配信] スイッチをオンにする: このスイッチをオンにすると、一部のリソースが利用できない場合でも、システムはスケールアウトリクエストを完全に破棄するのではなく、正常に作成されたすべてのノードをベストエフォート方式で配信します。

  • 複数のインスタンスタイプを設定することをお勧めします: 成功率を向上させるために、タスクノードグループを設定する際に複数の ECS インスタンスタイプを指定します。詳細については、「ノードグループの作成」をご参照ください。これにより、クラスターがスケールアウトされる際に、ノードはリスト内のインスタンスタイプの順序に基づいて作成されます。デフォルトでは、最初に選択されたインスタンスタイプが優先的に使用されます。インスタンスタイプが利用できない場合は、次のインスタンスタイプが使用されます。システムがすべてのインスタンスタイプのノードの追加を試みた時点で、スケールアウトは終了します。

これらの対策を実施することで、EMR クラスターの弾性スケーリングの成功率を効果的に向上させることができます。