Amazon EMR クラスターのクラスタースケールダウンオプション
注記
スケールダウン動作オプションは、Amazon EMR リリース 5.10.0 以降でサポートされなくなりました。Amazon EC2 に秒単位の請求が導入されたため、Amazon EMR クラスターのデフォルトのスケールダウン動作は、タスクの完了時に終了するようになりました。
Amazon EMR リリース 5.1.0 から 5.9.1 のスケールダウン動作には、Amazon EC2 請求のインスタンス時間の境界での終了と、タスク完了時の終了の 2 つのオプションがあります。Amazon EMR リリース 5.10.0 以降では、Amazon EC2 に秒単位の請求が導入されたため、インスタンス時間の境界での終了の設定は廃止されています。このオプションが使用できないバージョンでは、インスタンス時間の境界での終了を指定することはお勧めされていません。
警告
AWS CLI を使用して EC2InstanceIdsToTerminate
とともに modify-instance-groups
を発行すると、それらのインスタンスは、その設定やそこで実行中のアプリケーションのステータスにかかわらず、すぐに終了されます。この方法でインスタンスを削除すると、データ損失や、予測不可能なクラスター動作が発生する可能性があります。
タスク完了時の終了を指定すると、Amazon EMR は、Amazon EC2 インスタンスを削除する前にタスクを拒否リストに登録し、ノードから削除します。いずれの動作を指定しても、HDFS の破損につながる可能性があれば、Amazon EMR はコアインスタンスグループの Amazon EC2 インスタンスを削除しません。
タスクの完了時に終了
Amazon EMR では、ワークロードに影響を与えずにクラスターをスケールダウンできます。Amazon EMR は、データを失ったりジョブを中断したりすることなく、サイズ縮小処理中にコアノードとタスクノードの YARN、HDFS、およびその他のデーモンを適切に停止します。Amazon EMR は、グループに割り当てられた作業が完了し、アイドル状態の場合にのみインスタンスグループのサイズを縮小します。YARN NodeManager のグレースフルな廃止の場合、ノードが廃止を待つ時間を手動で調整できます。
この時間は、YARN-site
設定分類のプロパティを使用して設定します。5.12.0 以降 Amazon EMR リリースを使用する場合、YARN.resourcemanager.nodemanager-graceful-decommission-timeout-secs
プロパティを指定します。以前の Amazon EMR リリースを使用する場合、YARN.resourcemanager.decommissioning.timeout
プロパティを指定します。
停止時間がタイムアウトした時点で実行中のコンテナーまたは YARN アプリケーションがあった場合、そのノードは強制的に停止され、実行中のコンテナーは YARN によって他のノードで再スケジュールされます。デフォルト値は 3,600 秒 (1 時間) です。このタイムアウトを任意の高い値に設定することで、グレースフルな縮小を強制的に行い、長い時間待機させることができます。詳細については、Apache Hadoop ドキュメントの「Graceful Decommission of YARN Nodes
タスクノードグループ
Amazon EMR は、ステップやアプリケーションに対して実行されているタスクがないインスタンスをインテリジェントに選択し、それらのインスタンスを最初にクラスターから削除します。クラスター内のすべてのインスタンスが使用されている場合、Amazon EMR はインスタンスのタスクが完了するの待ってからクラスターから削除します。デフォルトの待機時間は 1 時間です。この値は YARN.resourcemanager.decommissioning.timeout
設定で変更できます。Amazon EMR では、この新しい設定が動的に使用されます。この値を任意の大きな数に設定することで、Amazon EMR がタスクを終了することなく、クラスターのサイズを縮小できます。
コアノードグループ
コアノードでは、インスタンスグループのサイズを縮小するのに YARN NodeManager および HDFS DataNode デーモンの両方を停止する必要があります。YARN では、グレースフルなサイズ縮小により、停止の対象となるノードは、保留中や未完了のコンテナまたはアプリケーションがない場合にのみ DECOMMISSIONED
状態に移行します。停止作業開始時においてノードでコンテナーが実行されていない場合、停止作業は即終了します。
HDFS では、グレースフルなサイズ縮小により、HDFS のターゲット容量にすべての既存ブロックが収まるよう十分な大きさが確保されます。ターゲット容量の大きさが十分でない場合、残りのノードが HDFS にある現在のデータを処理できるように、一部のコアインスタンスのみが停止されます。ノードが完全に停止されるよう、HDFS に十分な容量があるよう確認してください。また、インスタンスグループの削減を試みる前に、書き込み I/O を最小限に抑えるようにしてください。書き込み I/O が多すぎると、サイズ変更操作の完了が遅れる可能性があります。
もう 1 つの制限は、デフォルトのレプリケーション係数です。dfs.replication
内部/etc/hadoop/conf/hdfs-site
。Amazon EMR では、クラスターの作成時に、クラスター内のインスタンス数に基づいて値が設定されます。インスタンス数が 1~3 の場合は 1
、4~9 の場合は 2
、10 以上の場合は 3
となります。
警告
-
ノードが 4 つ未満のクラスターで
dfs.replication
を 1 に設定すると、単一ノードがダウンした場合に HDFS データが失われる可能性があります。本番環境のワークロードには、少なくとも 4 つのコアノードを持つクラスターを使用することをお勧めします。 -
Amazon EMR では、クラスターはコアノードを
dfs.replication
未満にスケールすることはできません。例えば、dfs.replication = 2
の場合、コアノードの最小数は 2 です。 -
マネージドスケーリングや自動スケーリングを使用する場合や、クラスターのサイズを手動で変更する場合は、
dfs.replication
を 2 以上に設定することをお勧めします。
グレースフルな縮小では、コアノードを HDFS のレプリケーション係数未満に減らすことはできません。これは、レプリカが不十分な場合に HDFS がファイルを閉じることができるようにするためです。この制限を回避するには、レプリケーション係数を低く設定し直してから NameNode デーモンを再起動します。