TrinoコンポーネントがインストールされているE-MapReduce(EMR)クラスターの場合、クラスターのクエリ速度がデータ処理要件を満たしていない場合、または一部の大規模クエリに必要なメモリ量が合計メモリ量を超えている場合は、クラスターの関連する構成パラメーターを変更できます。変更で問題が解決しない場合は、ワーカーノードの数を増やすことでクラスターをスケールアウトできます。オフピーク時またはビジネスに必要なリソースが少ない場合は、クラスターをスケールインしてコストを削減できます。このトピックでは、EMR Trinoクラスターをスケールアウトまたはスケールインする方法について説明します。
使用上の注意
EMRクラスターをスケールアウトする場合、特定のコンポーネントのノード数のみを増やすことはできません。代わりに、ノードの数を増やし、インストールされているすべてのコンポーネントに対して新しいノードを初期化する必要があります。 EMRクラスターにTrinoやHadoopなどの異なるコンポーネントがインストールされている場合は、十分に検討した上でEMRクラスターをスケールアウトするかどうかを判断する必要があります。
スケールアウトの準備
EMR Trinoクラスターをスケールアウトする場合、Trinoコンポーネントとほとんどの構成項目をクラスター内の新しいノードに同期できます。ただし、新しく追加されたユーザー定義関数(UDF)、手動で置き換えられたJARファイル、JindoSDKなどの手動でアップグレードされたコンポーネント、および追加されたイベントリスナーは、スケールアウト中に新しいノードに同期できません。スケールアウト後にクエリ失敗や予期しないクエリ結果などの問題が発生しないように、前述の操作のスクリプトを作成することをお勧めします。スクリプトは、ノードが追加されると自動的に実行されます。詳細については、「ブートストラップアクションの管理」をご参照ください。
スケーリング操作
- EMRクラスターでは、タスクノードグループに対してのみ自動スケールインを実行できます。スケールアウト後にクラスターをスケールインする必要がある場合は、タスクノードグループを作成し、スケールアウトのためにノードをノードグループに追加することをお勧めします。このようにして、タスクノードグループの自動スケールインルールを構成できます。
- EMR Trinoクラスターは、グレースフルシャットダウンをサポートしています。ただし、RESTful APIのみを使用してグレースフルシャットダウンをトリガーできます。詳細については、Trinoドキュメントのグレースフルシャットダウンをご参照ください。
- クエリタスクが実行されているクラスターをスケールインすると、タスクが失敗したり、中断されたりする可能性があります。クエリタスクが実行されていないときにクラスターをスケールインすることをお勧めします。この問題が発生した場合は、クエリタスクを再実行してください。
スケールアウト後の操作
クラスターのスケールアウトが完了すると、新しいノードがクラスターに追加されます。select * from system.runtime.nodes ステートメントを実行して、クラスター内のノードの状態を表示できます。
スケールアウト前にノードグループまたはグループ内のノードの構成を変更した場合は、スケールアウト後に新しいノードまたは新しいノードグループのデフォルト構成を変更する必要があります。たとえば、スケールアウト前にコアノードグループのメモリを変更した場合は、スケールアウト後に新しいタスクノードグループのメモリを再構成する必要があります。
一部の操作のスクリプトを作成できない場合は、スケールアウト後に手動で操作を再実行する必要があります。たとえば、スケールアウト前にUDFを動的にロードすることでUDFを追加し、スクリプトを使用してこの操作を実行することが難しい場合は、DROP JARステートメントを実行してUDFのJARファイルを削除してから、スケールアウト後にUDFを再度追加する必要があります。 UDFを動的にロードする方法の詳細については、「UDFの動的ロードと削除」をご参照ください。この場合、DROP JARステートメントを実行するとエラーが報告される場合があります。これは、新しく追加されたノードに必要なJARファイルが見つからないためです。このエラーは無視してください。必要なJARファイルを含むワーカーノードに対してDROP JARステートメントを正常に実行できます。