クラスターの負荷が長時間低く、大量のクラスターリソースがアイドル状態の場合は、コアノードグループまたはタスクノードグループをスケールインしてリソースを節約できます。コンソールでは、従量課金制のタスクノードグループをスケールインできます。従量課金制のコアノードグループ、サブスクリプションのタスクノードグループ、サブスクリプションのコアノードグループなど、他のタイプのノードグループについては、このトピックの手順に従ってください。
制限事項
データ損失を避けるため、クラスター内のコアノードの数が Hadoop 分散ファイルシステム (HDFS) のレプリカ数と等しい場合は、コアノードグループをスケールインしないでください。
クラスターが 2 つのマスターノードを持つ旧バージョンの高可用性 (HA) Hadoop クラスターである場合、emr-worker-1 ノードをスケールインしないでください (旧バージョンの高可用性クラスターでは、Zookeeper は worker-1 にデプロイされています)。
注意事項
このトピックの操作はロールバックできません。コンポーネントを非公開にすると、サービスのコンポーネントは回復できません。
このトピックでは、スケールイン操作のベストプラクティスについて説明します。ノードグループをスケールインする前にビジネスへの影響を評価し、注意して進めることをお勧めします。これにより、ジョブスケジューリングの失敗やデータセキュリティのリスクを防ぐことができます。
削除するノードの選択方法
ノードグループのスケールインは、主にノードグループからノードを削除することによって実現されます。クラスターのサービス負荷に基づいて、クラスターから削除するノードを選択します。次のいずれかの方法を使用して、クラスターのリソース使用量を表示し、削除するノードを選択できます。
方法 1: EMR コンソール 監視と診断
[メトリック監視] ページで、YARN-Queues ダッシュボードの AvailableVCores メトリックを表示します。AvailableVCores メトリックが一貫して高い場合は、キューで使用可能なコアが多いことを示しており、コアノードグループまたはタスクノードグループのスケールインを検討できます。
[メトリック監視] ページで、YARN-NodeManagers ダッシュボードの AvailableGB メトリックを表示します。ノードの AvailableGB メトリックが長時間にわたって高いレベルで維持されている場合、そのノードには大量の利用可能なメモリがあることを示しており、ノードの解放を検討できます。
ビジネス要件のコンテキストで他のメトリックを評価できます。
方法 2: YARN の Web UI を使用する
クラスターのキューリソース使用量を表示します。キューリソースが頻繁に十分に活用されていない場合は、コアノードグループまたはタスクノードグループのスケールインを検討してください。

Nodes ページで、Nodes Address でノードをソートし、利用可能なメモリリソースが最も多いノードを特定します。その後、ノードを削除します。

クラスターが旧バージョンの Hadoop クラスターである場合は、次の点に注意してください。
クラスターが非高可用性クラスターである場合、emr-worker-1 または emr-worker-2 ノードをクラスターから削除することはできません。
クラスターが高可用性クラスターであっても、クラスター内のマスターノードの数が 2 の場合、emr-worker-1 ノードをクラスターから削除することはできません。
ステップ 1: ノード上のコンポーネントを表示する
ノードを削除してコアノードグループまたはタスクノードグループをスケールインする場合、対応するノードリソースを解放する前に、まずそれらのノード上のコンポーネントを非公開にする必要があります。コンソールの [ノード] ページで、各ノードにどのコンポーネントがデプロイされているかを表示できます。

ステップ 2: ノードにデプロイされたコンポーネントを非公開にする
削除したいノードに次のコンポーネントがデプロイされている場合、ノードを削除する前にコンポーネントを非公開にする必要があります。コンポーネントを非公開にせずに次のコンポーネントがデプロイされているノードを削除すると、ノードで実行されているジョブが失敗したり、データセキュリティのリスクが発生したりする可能性があります。
YARN サービスの NodeManager コンポーネントを非公開にする
YARN サービスページの [ステータス] タブに移動します。
EMR コンソールにログインします。左側のナビゲーションウィンドウで、[EMR on ECS] をクリックします。
上部のナビゲーションバーで、必要に応じてリージョンとリソースグループを選択します。
[EMR On ECS] ページで、ターゲットクラスターを見つけ、[アクション] 列の [サービス] をクリックします。
[クラスターサービス] ページで、YARN サービスエリアの [ステータス] をクリックします。
目的のノードにデプロイされている NodeManager コンポーネントを非公開にします。
[コンポーネント] リストで、NodeManager の [アクション] 列にある をクリックします。
表示されるダイアログボックスで、 を選択し、[実行理由] を入力して、[OK] をクリックします。
ポップアップダイアログボックスで、[OK] をクリックします。
右上の [操作履歴] をクリックして、操作の進行状況を表示します。
HDFS サービスの DataNode コンポーネントを非公開にする
SSH モードでクラスターのマスターノードにログインします。詳細については、「クラスターへのログイン」をご参照ください。
hdfs ユーザーに切り替えて、NameNode の数を表示します。
sudo su - hdfs hdfs haadmin -getAllServiceStateSSH モードで NameNode がデプロイされているノードにログインし、非公開にしたい DataNode コンポーネントのノードを dfs.exclude ファイルに追加します。一度に 1 つのノードのみを追加することをお勧めします。
Hadoop クラスター
touch /etc/ecm/hadoop-conf/dfs.exclude vim /etc/ecm/hadoop-conf/dfs.excludevim で
oを押して新しい行を開始し、非公開にしたい DataNode のホスト名を入力します。emr-worker-3.cluster-xxxxx emr-worker-4.cluster-xxxxx非レガシー Hadoop クラスター
touch /etc/taihao-apps/hdfs-conf/dfs.exclude vim /etc/taihao-apps/hdfs-conf/dfs.excludeoを入力して新しい行を挿入し、非公開にしたい DataNode のホスト名を入力します。core-1-3.c-0894dxxxxxxxxx core-1-4.c-0894dxxxxxxxxx
NameNode がデプロイされているノードで hdfs ユーザーに切り替えて、次のコマンドを実行します。その後、HDFS は自動的に DataNode コンポーネントの非公開を開始します。
sudo su - hdfs hdfs dfsadmin -refreshNodes結果を確認します。
次のコマンドを実行して、オフラインプロセスが完了したかどうかを判断します。
hadoop dfsadmin -reportステータスが Decommissioned の場合、DataNode コンポーネントのデータは他のノードに移行され、DataNode コンポーネントは非公開になります。
StarRocks サービスのバックエンドコンポーネントを非公開にする
クラスターにログインし、クライアントを使用してアクセスします。詳細については、「クイックスタート」をご参照ください。
次のコマンドを実行して、
DECOMMISSIONメソッドを使用して BE ノードを非公開にします。ALTER SYSTEM DECOMMISSION backend "be_ip:be_heartbeat_service_port";必要に応じて、次のパラメーターを置き換えます。
be_ip: スケールインしたい BE ノードの内部 IP アドレスです。[ノード] ページで IP アドレスを確認できます。be_heartbeat_service_port: デフォルト値は 9050 です。show backendsコマンドを実行してポートを表示できます。
Decommission が遅い場合は、
DROPメソッドを使用して BE を強制的に非公開にすることができます。重要DROPメソッドを使用して BE ノードを非公開にする場合は、システムに 3 つの完全なレプリカがあることを確認してください。ALTER SYSTEM DROP backend "be_ip:be_heartbeat_service_port";次のコマンドを実行して、BE ノードのステータスを確認します。
show backends;
SystemDecommissioned 列の値が true の場合、BE ノードは削除中です。TabletNum 列の値が 0 の場合、システムはメタデータをクリーンアップします。
前の図に BE ノードが表示されていない場合、ノードは正常に削除されています。
HBase サービスの HRegionServer コンポーネントを非公開にする
HBase サービスページの [ステータス] タブに移動します。
EMR コンソールにログインします。左側のナビゲーションウィンドウで、[EMR on ECS] をクリックします。
上部のメニューバーで、必要に応じてリージョンとリソースグループを選択します。
[EMR On ECS] ページで、目的のクラスターを見つけ、[アクション] 列の [サービス] をクリックします。
[クラスターサービス] ページで、HBase サービスエリアの [ステータス] をクリックします。
目的のノードにデプロイされている HRegionServer コンポーネントを非公開にします。
[コンポーネント] セクションで、HRegionServer の [アクション] 列にある [停止] をクリックします。
ダイアログボックスで、 を選択し、[実行理由] を入力して、[OK] をクリックします。
ダイアログボックスで、[OK] をクリックします。
右上の [操作履歴] をクリックして、操作の進行状況を表示します。
HBase-HDFS サービスの DataNode コンポーネントを非公開にする
SSH モードでクラスターのマスターノードにログインします。詳細については、「クラスターへのログイン」をご参照ください。
次のコマンドを実行して hdfs ユーザーに切り替え、環境変数を設定します。
sudo su - hdfs export HADOOP_CONF_DIR=/etc/taihao-apps/hdfs-conf/namenode次のコマンドを実行して、NameNode に関する情報を表示します。
hdfs dfsadmin -reportSSH モードで NameNode がデプロイされているノードにログインし、DataNode コンポーネントを非公開にしたいノードを dfs.exclude ファイルに追加します。一度に 1 つのノードのみを追加することをお勧めします。
touch /etc/taihao-apps/hdfs-conf/dfs.exclude vim /etc/taihao-apps/hdfs-conf/dfs.excludevim で
oを押して新しい行を開始し、非公開にしたい DataNode のホスト名を入力します。core-1-3.c-0894dxxxxxxxxx core-1-4.c-0894dxxxxxxxxxNameNode がデプロイされているノードで hdfs ユーザーに切り替えて、次のコマンドを実行します。その後、HDFS は自動的に DataNode コンポーネントの非公開を開始します。
sudo su - hdfs export HADOOP_CONF_DIR=/etc/taihao-apps/hdfs-conf/namenode hdfs dfsadmin -refreshNodes結果を確認します。
次のコマンドを実行して、DataNode コンポーネントが非公開になっているかどうかを確認します。
hadoop dfsadmin -reportステータスが Decommissioned の場合、DataNode コンポーネントのデータは他のノードに移行され、DataNode コンポーネントは非公開になります。
SmartData サービスの JindoStorageService コンポーネントを非公開にする (Hadoop クラスター)
SmartData サービスページの [ステータス] タブに移動します。
EMR コンソールにログインします。左側のナビゲーションウィンドウで、[EMR on ECS] をクリックします。
上部のメニューバーで、必要に応じてリージョンとリソースグループを選択します。
[EMR On ECS] ページで、ターゲットクラスターの [アクション] 列にある [サービス] をクリックします。
[クラスターサービス] ページで、SmartData サービスエリアの [ステータス] をクリックします。
目的のノードにデプロイされている JindoStorageService コンポーネントを非公開にします。
[コンポーネントリスト] で、JindoStorageService の [アクション] 列にある をクリックします。
表示されるダイアログボックスで、 を選択し、[実行理由] を入力して、[OK] をクリックします。
ポップアップダイアログボックスで、[OK] をクリックします。
右上の [操作履歴] をクリックして、操作の進行状況を表示します。
ステップ 3: ノードを解放する
EMR クラスターのノードグループ内のノードを削除するには、ECS コンソールに移動して、ノードに対応する ECS インスタンスを解放する必要があります。この操作を RAM ユーザーとして実行する場合は、必要な ECS 権限が必要です。RAM ユーザーに AliyunECSFullAccess ポリシーをアタッチすることをお勧めします。
[ノード] タブに移動します。
EMR コンソールにログインします。左側のナビゲーションウィンドウで、[EMR on ECS] をクリックします。
上部のナビゲーションバーで、必要に応じてリージョンとリソースグループを選択します。
[EMR On ECS] ページで、目的のクラスターを見つけ、[アクション] 列の [ノード] をクリックします。
[ノード] ページで、解放したいノードの ECS ID をクリックします。
Elasitc Compute Service (ECS) コンソールに移動します。
ECS コンソールでインスタンスを解放します。詳細については、「インスタンスの解放」をご参照ください。
参考資料
従量課金またはプリエンプティブルインスタンスを含むタスクノードグループをスケールインする方法の詳細については、「クラスターのスケールイン」をご参照ください。
クラスターの計算リソースが不足している場合は、コアノードグループとタスクノードグループをスケールアウトできます。詳細については、「クラスターのスケールアウト」をご参照ください。
必要に応じてクラスターの計算リソースを自動的に調整したい場合は、ノードグループにマネージド自動スケーリングまたはカスタム自動スケーリングルールを設定できます。詳細については、「Auto Scaling」をご参照ください。