ビジネスワークロードが変動する場合は、E-MapReduce(EMR)クラスターの自動スケーリングを有効にし、ビジネス要件に基づいてタスクノードを増減する自動スケーリングルールを設定することをお勧めします。自動スケーリングは、コストを削減し、ジョブに十分なコンピューティングリソースを確保するのに役立ちます。このトピックでは、EMRコンソールで自動スケーリングを設定する方法について説明します。
前提条件
EMR Hadoopクラスターが作成されていること。詳細については、「クラスターの作成」をご参照ください。
注意事項
クラスターをスケールインまたはスケールアウトするために使用されるノードのハードウェア仕様を指定できます。ハードウェア仕様は、自動スケーリングが無効になっている場合にのみ設定できます。特定のシナリオで変更が必要な場合は、自動スケーリングを無効にし、ハードウェア仕様を変更してから、自動スケーリングを再度有効にしてください。
システムは、指定した vCPU とメモリの仕様に一致するインスタンスタイプを自動的に検索し、[インスタンスタイプ] セクションにインスタンスタイプを表示します。 [インスタンスタイプ] セクションで1つ以上のインスタンスタイプを選択する必要があります。これにより、選択したインスタンスタイプに基づいてクラスターをスケーリングできます。
最大3つのインスタンスタイプを選択できます。これにより、Elastic Compute Service(ECS)リソースの不足による自動スケーリングの失敗を防ぎます。
ウルトラディスクまたは標準SSDを選択するかどうかに関係なく、データディスクの最小サイズは 40 GiB です。
負荷ベースのスケーリングは、CloudMonitorに基づく機能であり、自動スケーリンググループを動的に管理できます。自動スケーリングルールを設定すると、CloudMonitorは対応するアラートルールを自動的に作成します。 EMR自動スケーリングアクティビティをスムーズに実行するには、CloudMonitorによって作成されたアラートルールを変更、削除、または無効にしないでください。
手順
[自動スケーリング] タブに移動します。
EMRコンソールにログインします。左側のナビゲーションペインで、[ECS上のEMR] をクリックします。
上部のナビゲーションバーで、クラスターが存在するリージョンを選択し、ビジネス要件に基づいてリソースグループを選択します。
[ECS上のEMR] ページで、目的のクラスターを見つけ、[クラスターID/名前] 列にあるクラスター名をクリックします。
表示されたページで、[自動スケーリング] タブをクリックします。
自動スケーリンググループを作成します。
[スケーリングの設定] タブで、[自動スケーリンググループの作成] をクリックします。
説明自動スケーリンググループは、[自動スケーリング] タブでのみ設定および管理できます。
[自動スケーリンググループの追加] ダイアログボックスで、[ノードグループ名] フィールドに名前を入力し、[OK] をクリックします。
[スケーリングの設定] タブで、作成した自動スケーリンググループを見つけ、[アクション] 列の [ルールの設定] をクリックします。
[自動スケーリングの設定] パネルの [基本情報] セクションで、パラメーターを設定します。次の表にパラメーターを示します。
パラメーター
説明
インスタンスの最大数
自動スケーリンググループのタスクノードの最大数。自動スケーリングルールが満たされていても上限に達している場合、システムは自動スケーリングをトリガーしません。最大値:1000。
インスタンスの最小数
自動スケーリンググループのタスクノードの最小数。自動スケーリングルールで設定されているタスクノードの数がこのパラメーターの値よりも少ない場合、ルールが最初にトリガーされたときに、このパラメーターの値に基づいてクラスターがスケーリングされます。
たとえば、このパラメーターが 3 に設定されていて、スケールアウトルールが毎日 00:00 に 1 つのノードを追加するルールである場合、システムは初日に 00:00 に 3 つのノードを追加します。これにより、ノードの最小数の要件が満たされます。
グレースフルシャットダウン
YARNでジョブが実行されているタスクノードを廃止するタイムアウト期間。 YARNでジョブが実行されている時間がタイムアウト期間を超えている場合、またはYARNでジョブが実行されていない場合、システムはタスクノードを廃止します。[タイムアウト期間] の最大値は 3600 秒です。
重要グレースフルシャットダウンを有効にするには、まず、yarn.resourcemanager.nodes.exclude-path パラメーターの値をYARNサービスページで /etc/ecm/hadoop-conf/yarn-exclude.xml に変更する必要があります。
[タイムアウト期間] の値を変更した後、変更を有効にするには、オフピーク時にYARN ResourceManagerを再起動してください。
[自動スケーリングの設定] パネルの中央部で、[インスタンスタイプ選択モード]、[課金方法]、[インスタンスタイプ] のパラメーターを設定します。
単一課金方法
システムは、指定した vCPU とメモリの仕様に一致するインスタンスタイプを自動的に検索し、[インスタンスタイプ] セクションにインスタンスタイプを表示します。選択したインスタンスタイプに基づいてクラスターをスケーリングできるように、[インスタンスタイプ] セクションで1つ以上のインスタンスタイプを選択する必要があります。単一課金方法は、次の課金方法をサポートしています。
従量課金
インスタンスタイプを選択した順序によって、使用されるインスタンスの優先順位が決まります。各インスタンスの時間単価は、[インスタンスタイプ] セクションのディスク仕様の下に表示されます。価格は、EMRサービス価格とECSインスタンス価格の合計です。

プリエンプティブインスタンス
重要ジョブに高サービスレベル契約(SLA)要件がある場合は、入札の失敗などの理由でインスタンスが解放される可能性があるため、このオプションを選択してプリエンプティブインスタンスを使用しないでください。
インスタンスタイプを選択した順序によって、使用されるインスタンスの優先順位が決まります。従量課金方式に基づく各インスタンスの時間単価は、[インスタンスタイプ] セクションのディスク仕様の下に表示されます。また、各インスタンスの時間単価の上限を指定することもできます。インスタンスの価格が上限を超えない場合、インスタンスが表示されます。プリエンプティブインスタンスの詳細については、「プリエンプティブインスタンスとは」をご参照ください。

コスト最適化モード
このモードでは、コストと安定性のバランスをとるために、詳細なコスト最適化ポリシーを作成できます。

パラメーター
説明
自動スケーリンググループの最小従量課金ノード数
自動スケーリンググループで必要な従量課金インスタンスの最小数。自動スケーリンググループの従量課金インスタンスの数がこのパラメーターの値よりも少ない場合、従量課金インスタンスが優先的に作成されます。
従量課金ノードの割合
作成された従量課金インスタンスの数が[自動スケーリンググループの最小従量課金ノード数] パラメーターの値に達した後の、自動スケーリンググループの従量課金インスタンスの割合。
最低価格インスタンスタイプ
価格が最も低いインスタンスタイプの数。プリエンプティブインスタンスが必要な場合、システムは価格が最も低いインスタンスタイプのプリエンプティブインスタンスを均等に作成します。最大値:3。
プリエンプティブインスタンスの置換
プリエンプティブインスタンスの補充を有効にするかどうかを指定します。この機能が有効になっている場合、システムは、プリエンプティブインスタンスが回収される約 5 分前に、現在のプリエンプティブインスタンスを従量課金インスタンスに自動的に置き換えます。
[自動スケーリンググループの最小従量課金ノード数]、[従量課金ノードの割合]、または [最低価格インスタンスタイプ] パラメーターを設定しない場合、グループは一般的なコスト最適化スケーリンググループになります。パラメーターを設定すると、グループは混合インスタンスコスト最適化スケーリンググループになります。2種類のコスト最適化スケーリンググループは、インターフェースと機能の点で互換性があります。
適切な混合インスタンスポリシーを設定することにより、特定の一般的なコスト最適化スケーリンググループと同じ効果を達成するために、混合インスタンスコスト最適化スケーリンググループを使用できます。例:
一般的なコスト最適化スケーリンググループでは、従量課金インスタンスのみが作成されます。
混合インスタンスコスト最適化スケーリンググループでは、[自動スケーリンググループの最小従量課金ノード数] を 0、[従量課金ノードの割合] を 100%、[最低価格インスタンスタイプ] を 1 に設定します。
一般的なコスト最適化スケーリンググループでは、プリエンプティブインスタンスが優先的に作成されます。
混合インスタンスコスト最適化スケーリンググループでは、[自動スケーリンググループの最小従量課金ノード数] を 0、[従量課金ノードの割合] を 0%、[最低価格インスタンスタイプ] を 1 に設定します。
[自動スケーリングの設定] パネルの下部で、[トリガーモード] と [トリガールール] パラメーターを設定します。
時間ベースのスケーリング:Hadoopクラスターのコンピューティングワークロードが定期的に変動する場合は、毎日、毎週、または毎月の特定の時点で特定の数のタスクノードを追加および削除して、コンピューティングリソースを補充または節約できます。これにより、ジョブを低コストで完了できます。
自動スケーリングルールは、スケールアウトルールとスケールインルールに分けられます。次の表に、スケールアウトルールのパラメーターを示します。クラスターの自動スケーリングを無効にすると、すべての自動スケーリングルールがクリアされます。クラスターの自動スケーリングを再度有効にする場合は、自動スケーリングルールを再設定する必要があります。
パラメーター
説明
ルール名
スケールアウトルールの名前。自動スケーリングルール名は、クラスター内で一意である必要があります。
実行ルール
繰り返し実行:自動スケーリングは、毎日、毎週、または毎月の特定の時点で実行されます。
1回だけ実行:自動スケーリングは、特定の時点で1回だけ実行されます。
実行時間
スケールアウトルールが実行される特定の時点。
ルール有効期限
スケールアウトルールの有効期限。
再試時間範囲
再試間隔。さまざまな理由により、指定した時点で自動スケーリングが失敗する可能性があります。再試間隔が指定されている場合、システムは、自動スケーリングが実行されるまで、このパラメーターで指定された再試間隔中に 30 秒ごとに自動スケーリングを再試行します。有効な値:0~21600。単位:秒。
たとえば、自動スケーリング操作 A を指定された期間内に実行する必要があります。自動スケーリング操作 B がこの期間中にまだ進行中であるか、クールダウン状態にある場合、操作 A は実行できません。この場合、システムは、指定した再試間隔内で 30 秒ごとに操作 A の実行を試みます。必要な条件が満たされると、クラスターはすぐに自動スケーリングを実行します。
調整されたインスタンスの数
スケールアウトルールがトリガーされるたびにクラスターに追加されるタスクノードの数。
クールダウン時間(秒)
2つのスケールアウトアクティビティの間隔。クールダウン中はスケールアウトアクティビティは禁止されています。
負荷ベースのスケーリング:ビッグデータコンピューティングワークロードの変動を正確に推定できないクラスターのタスクノードグループに、負荷ベースのスケーリングルールを追加できます。
自動スケーリングルールは、スケールアウトルールとスケールインルールに分けられます。次の表に、スケールアウトルールのパラメーターを示します。クラスターの自動スケーリングを無効にすると、すべての自動スケーリングルールがクリアされます。クラスターの自動スケーリングを再度有効にする場合は、自動スケーリングルールを再設定する必要があります。スケーリングポリシーを、負荷ベースのスケーリングから時間ベースのスケーリングなどに切り替えると、元のスケーリングポリシーに追加した自動スケーリングルールは無効になり、トリガーできなくなります。ルールに基づいて追加されたノードは保持され、解放されません。

パラメーター
説明
ルール名
スケールアウトルールの名前。自動スケーリングルール名は、クラスター内で一意である必要があります。
クラスター負荷メトリック
現在のクラスターの負荷メトリック。負荷メトリックはYARNから取得されます。詳細については、「Hadoop公式ドキュメント」をご参照ください。
EMR自動スケーリングメトリックとYARN負荷メトリックのマッピングについては、「YARN負荷メトリックに一致するEMR自動スケーリングメトリックの説明」をご参照ください。
統計期間
指定されたクラスター負荷メトリックの指定された集計次元(平均、最大、または最小)の値がしき値に達するかどうかを測定するための統計期間。
統計ルール。統計ルール
条件繰り返ししきい値
スケールアウトルールをトリガーする前に、指定されたクラスター負荷メトリックの指定された集計次元の値がしき値に達する必要がある回数。
調整されたインスタンスの数
スケールアウトルールがトリガーされるたびにクラスターに追加されるタスクノードの数。
クールダウン時間(秒)
2つのスケールアウトアクティビティの間隔。クールダウン時間中は、スケールアウト条件が満たされていても、スケールアウトルールはトリガーされません。スケールアウトアクティビティは、クールダウン時間が終了し、スケールアウト条件が再び満たされた後に実行されます。
[保存] をクリックします。
ビジネス要件に基づいて自動スケーリングを有効にできます。自動スケーリングを有効にする方法の詳細については、「自動スケーリングの有効化または無効化(Hadoopクラスターのみ)」をご参照ください。
YARN負荷メトリックに一致するEMR自動スケーリングメトリックの説明
EMR自動スケーリングメトリック | サービス | 説明 |
YARN.AvailableVCores | YARN | 使用可能な vCPU の数。 |
YARN.PendingVCores | YARN | 割り当て予定の vCPU の数。 |
YARN.AllocatedVCores | YARN | 割り当て済みの vCPU の数。 |
YARN.ReservedVCores | YARN | 予約済みの vCPU の数。 |
YARN.AvailableMemory | YARN | 使用可能なメモリの量。単位:MB。 |
YARN.PendingMemory | YARN | 割り当て予定のメモリの量。単位:MB。 |
YARN.AllocatedMemory | YARN | 割り当て済みのメモリの量。単位:MB。 |
YARN.ReservedMemory | YARN | 予約済みのメモリの量。単位:MB。 |
YARN.AppsRunning | YARN | 実行中のタスクの数。 |
YARN.AppsPending | YARN | 保留中のタスクの数。 |
YARN.AppsKilled | YARN | 終了されたタスクの数。 |
YARN.AppsFailed | YARN | 失敗したタスクの数。 |
YARN.AppsCompleted | YARN | 完了したタスクの数。 |
YARN.AppsSubmitted | YARN | 送信されたタスクの数。 |
YARN.AllocatedContainers | YARN | 割り当て済みのコンテナーの数。 |
YARN.PendingContainers | YARN | 割り当て予定のコンテナーの数。 |
YARN.ReservedContainers | YARN | 予約済みのコンテナーの数。 |
YARN.MemoryAvailablePrecentage | YARN | 総メモリに対する残りのメモリの割合。次の式を使用して計算されます: |
YARN.ContainerPendingRatio | YARN | 割り当て済みコンテナーに対する割り当て予定コンテナーの比率。次の式を使用して計算されます: |