クラスターの負荷が長期間低い状態が続き、多くのクラスターリソースがアイドル状態の場合は、リソースの無駄を避けるために、コアノードグループまたはタスクノードグループのスケールインを検討してください。従量課金のタスクノードグループの場合、この操作はコンソールで実行できます。その他のタイプ (従量課金のコアノードグループ、サブスクリプションのタスクノードグループ、サブスクリプションのコアノードグループを含む) については、このトピックで説明する手順に従ってください。
制限事項
-
クラスター内のコアノード数が HDFS レプリケーション係数と等しい場合、データ損失を防ぐため、コアノードをスケールインしないでください。
-
クラスターが 2 つのマスターノードを持つレガシー Hadoop 高可用性 (HA) クラスターの場合、emr-worker-1 ノードをデコミッションしないでください (レガシー HA クラスターでは、ZooKeeper は work-1 で実行されます)。
重要な注意事項
-
このトピックの操作はすべて取り消しできません。デコミッションを開始すると、元の状態に戻すことはできません。
-
このトピックはベストプラクティスを示します。ジョブスケジューリングの失敗やデータセキュリティ上のリスクを回避するため、実行前にクラスターの実際の状況を慎重に評価してください。
デコミッションするノードの選定方法
ノードグループのスケールインは、そのグループ内のノードをデコミッションすることで実現します。クラスターサービスの負荷に基づいてノードを選定してください。このトピックでは、リソース使用率を確認し、デコミッション候補を特定する 2 つの方法を紹介します。
方法 1: EMR コンソール チェックの監視
-
Metric Monitoring ページで、YARN-Queues ダッシュボードの AvailableVCores メトリックを確認します。AvailableVCores が長時間高い値のままの場合、キューには多くのアイドル状態の vCore があるため、Core または Task ノードグループのスケールインを検討できます。
-
Metric Monitoring ページで、Metric Monitoring ダッシュボードの Metric Monitoring メトリックを確認します。 ノードの Metric Monitoring が長時間高いままである場合、そのノードには利用可能なメモリが潤沢にあるため、解放を検討できます。
ビジネス要件に応じて、他のメトリックも組み合わせて判断基準として使用できます。
方法 2: YARN web UI
-
キューのリソース使用状況を確認します。キューが一貫して容量をほとんど使用していない場合、コアノードグループまたはタスクノードグループのスケールインを検討してください。
YARN ResourceManager の [Application Queues] ページで、各パーティション (DEFAULT_PARTITION や batch など) に割り当てられたメモリと vCore、および使用量を確認します。凡例の Capacity、Used、Max Capacity などのメトリックを使用して、キューリソースがアイドル状態かどうかを判断します。
-
[Nodes] ページで Nodes Address で並べ替え、利用可能なメモリが最も多いノードを素早く特定します。これらのノードの解放を検討してください。
クラスターがレガシー Hadoop クラスターの場合、次のケースでは特に注意してください:
-
クラスターが非 HA の場合、emr-worker-1 または emr-worker-2 をデコミッションしないでください。
-
クラスターが HA で、かつマスターノードが 2 台のみの場合、emr-worker-1 をデコミッションしないでください。
手順 1: デコミッションするノード上のサービスの確認
コアノードグループまたはタスクノードグループをスケールインするためにノードをデコミッションする前に、まず対象ノード上の関連コンポーネントサービスをデコミッションします。その後、ノードリソースを解放します。デプロイされているコンポーネントは、コンソールの Nodes ページで確認できます。
[Node Management] ページで、対象のノードグループを展開し、対象ノードを見つけて、ノード行の右側にあるコンポーネント数のアイコン (例: 12 components) をクリックします。ポップアップにデプロイ済みコンポーネントと実行状態が表示されます。
手順 2: ノードのコンポーネントサービスのデコミッション
デコミッション予定のノードで次のサービスのいずれかが実行されている場合、ノードを解放する前に該当サービスをデコミッションしてください。実施しない場合、ジョブスケジューリングの失敗やデータセキュリティ上の問題が発生する可能性があります。
YARN NodeManager のデコミッション
-
YARN サービスのステータスページに移動します。
E-MapReduce コンソールにログインします。
-
上部のメニューバーで、必要に応じてリージョンとリソースグループを選択します。
-
[EMR on ECS] ページで、対象クラスターのアクション列のServicesをクリックします。
-
Services ページで、YARN サービスセクションの Status をクリックします。
-
対象ノード上の NodeManager をデコミッションします。
-
Components で、NodeManager の操作列の をクリックします。
-
ダイアログボックスで、を選択し、Execution Reason を入力し、 OK をクリックします。
-
「確認」ダイアログボックスで、OK をクリックします。
-
-
右上隅のOperation Historyをクリックして、進捗を追跡します。
HDFS DataNode のデコミッション
-
SSH を使用してマスターノードにログインします。詳細については、「Log on to a cluster」をご参照ください。
-
hdfs ユーザーに切り替え、アクティブな NameNode の数を確認します。
sudo su - hdfs hdfs haadmin -getAllServiceState -
各 NameNode ホストに SSH 接続し、dfs.exclude ファイルを編集して、デコミッションするノードのホスト名を追加します。追加は 1 回につき 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.excludevim で、
oを押して新しい行を開始し、デコミッションする DataNode のホスト名を入力します。core-1-3.c-0894dxxxxxxxxx core-1-4.c-0894dxxxxxxxxx
-
-
いずれかの NameNode ホストで hdfs ユーザーに切り替え、refresh コマンドを実行します。HDFS は自動的にデコミッションを開始します。
sudo su - hdfs hdfs dfsadmin -refreshNodes -
デコミッション結果を確認します。
次のコマンドを実行して、デコミッションが完了したかどうかを確認します。
hadoop dfsadmin -report指定ノードの Status が Decommissioned と表示されると、データが他のノードへ移行済みであり、デコミッションが完了しています。
StarRocks のデコミッション
-
クラスターにログインし、クライアントを使用して接続します。詳細については、「Quick Start」をご参照ください。
-
DECOMMISSIONメソッドを使用して BE をデコミッションするには、次のコマンドを実行します。ALTER SYSTEM DECOMMISSION backend "be_ip:be_heartbeat_service_port";お使いのクラスターに合わせて、次のパラメーターを置き換えます:
-
be_ip: Nodes ページで確認した、スケールインする BE の内部 IP アドレス。 -
be_heartbeat_service_port: デフォルトは 9050 です。show backendsコマンドを使用して確認できます。
デコミッションが遅い場合、
DROPメソッドを使用して強制的にデコミッションできます。重要DROPメソッドを使用する場合、システムでデータが3重に保持されるようにしてください。ALTER SYSTEM DROP backend "be_ip:be_heartbeat_service_port"; -
-
次のコマンドを実行して、BE ステータスを監視します。
show backends;MySQL [(none)]> show backends; +----------+-----------------+------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+------------------------+-----------+------------------+---------------+---------------+---------+---------+----------+--------+---------------+----------------------------------------------------+-------------------+-------------+----------+ | BackendId | Cluster | IP | HeartbeatPort | BePort | HttpPort | BrpcPort | LastStartTime | LastHeartbeat | Alive | SystemDecommissioned | ClusterDecommissioned | TabletNum | DataUsedCapacity | AvailCapacity | TotalCapacity | UsedPct | MaxDiskUsedPct | ErrMsg | Version | Status | DataTotalCapacity | DataUsedPct | CpuCores | +----------+-----------------+------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+------------------------+-----------+------------------+---------------+---------------+---------+---------+----------+--------+---------------+----------------------------------------------------+-------------------+-------------+----------+ | 10049 | default_cluster | 192.16xxx | 9050 | 9060 | 18040 | 8060 | 2022-11-29 15:47:28 | 2022-11-29 16:09:48 | true | true | false | 0 | .000 | 312.400 GB | 312.978 GB | 0.18 % | 0.19 % | | 2.3.2-dbc89ae | {"xxxcessReportTabletsTime":"2022-11-29 16:09:28"} | 312.400 GB | 0.00 % | 4 | | 10002 | default_cluster | 192.16xxx | 9050 | 9060 | 18040 | 8060 | 2022-11-29 15:29:07 | 2022-11-29 16:09:48 | true | false | false | 10 | .000 | 312.399 GB | 312.978 GB | 0.19 % | 0.19 % | | 2.3.2-dbc89ae | {"xxxcessReportTabletsTime":"2022-11-29 16:09:08"} | 312.399 GB | 0.00 % | 4 | | 10003 | default_cluster | 192.16xxx | 9050 | 9060 | 18040 | 8060 | 2022-11-29 15:29:07 | 2022-11-29 16:09:48 | true | false | false | 10 | .000 | 312.399 GB | 312.978 GB | 0.19 % | 0.19 % | | 2.3.2-dbc89ae | {"xxxcessReportTabletsTime":"2022-11-29 16:09:07"} | 312.399 GB | 0.00 % | 4 | | 10004 | default_cluster | 192.16xxx | 9050 | 9060 | 18040 | 8060 | 2022-11-29 15:29:07 | 2022-11-29 16:09:48 | true | false | false | 10 | .000 | 312.399 GB | 312.978 GB | 0.19 % | 0.19 % | | 2.3.2-dbc89ae | {"xxxcessReportTabletsTime":"2022-11-29 16:09:08"} | 312.399 GB | 0.00 % | 4 | +----------+-----------------+------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+------------------------+-----------+------------------+---------------+---------------+---------+---------+----------+--------+---------------+----------------------------------------------------+-------------------+-------------+----------+ 4 rows in set (0.01 sec)SystemDecommissioned が true のノードはデコミッション中です。TabletNum が 0 になると、システムはメタデータをクリーンアップします。
結果に BE ノードが表示されなくなった場合、デコミッションは成功です。
HBase HRegionServer のデコミッション
-
HBase サービスのステータスページに移動します。
E-MapReduce コンソールにログインします。
-
上部のメニューバーで、必要に応じてリージョンとリソースグループを選択します。
-
[EMR on ECS] ページで、対象クラスターの「操作」列のServices をクリックします。
-
Services ページで、HBase サービスセクションの Status をクリックします。
-
対象ノード上の HRegionServer をデコミッションします。
-
Components で、HRegionServer の「アクション」列にある STOP をクリックします。
-
ダイアログボックスで、を選択し、Execution Reasonを入力し、OKをクリックします。
-
「確認」ダイアログボックスで、OK をクリックします。
-
-
右上隅の[操作履歴]をクリックして、進捗状況を確認します。
HBASE-HDFS DataNode のデコミッション
-
SSH を使用してマスターノードにログインします。詳細については、「Log on to a cluster」をご参照ください。
-
次のコマンドを実行して hdfs ユーザーに切り替え、環境変数を設定します。
sudo su - hdfs export HADOOP_CONF_DIR=/etc/taihao-apps/hdfs-conf/namenode -
次のコマンドを実行して、現在の NameNode 情報を確認します。
hdfs dfsadmin -report -
各 NameNode ホストに SSH 接続し、dfs.exclude ファイルを編集して、デコミッションするノードのホスト名を追加します。追加は 1 回につき 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-0894dxxxxxxxxx -
いずれかの NameNode ホストで hdfs ユーザーに切り替え、refresh コマンドを実行します。HDFS は自動的にデコミッションを開始します。
sudo su - hdfs export HADOOP_CONF_DIR=/etc/taihao-apps/hdfs-conf/namenode hdfs dfsadmin -refreshNodes -
デコミッション結果を確認します。
次のコマンドを実行して、デコミッションが完了したかどうかを確認します。
hadoop dfsadmin -report指定ノードの Status が Decommissioned と表示されると、データが他のノードへ移行済みであり、デコミッションが完了しています。
SmartData JindoStorageService の使用停止 (レガシー Hadoop クラスター)
-
Go to the SmartData service status page.
E-MapReduce コンソールにログインします。
-
In the top menu bar, select the region and resource group as needed.
-
On the EMR on ECS page, click [Services] in the Actions column of the target cluster.
-
On the [Services] page, click [Status] in the SmartData service section.
-
Decommission the JindoStorageService on the target node.
-
In the [Components], click in the Actions column for JindoStorageService.
-
In the dialog box, select , enter an [Execution Reason], and click [OK].
-
In the confirmation dialog box, click [OK].
-
-
Click [Operation History] in the upper-right corner to track progress.
-
手順 3: デコミッション済みノードの解放
クラスターのノードを管理するには、ECS コンソールにログインする必要があります。Resource Access Management (RAM) ユーザーの場合は、ECS の権限が必要です。AliyunECSFullAccess ポリシーを付与することを推奨します。
-
ノード管理ページに移動します。
E-MapReduce コンソールにログインします。
-
上部のメニューバーで、必要に応じてリージョンとリソースグループを選択します。
-
[EMR on ECS]ページで、対象クラスターの Actions 列のNodesをクリックします。
-
Nodes ページで、解放したいノードの ECS ID をクリックします。
ECS コンソールにリダイレクトされます。
-
ECS コンソールでインスタンスを解放します。詳細については、「Release instances」をご参照ください。
関連ドキュメント
-
従量課金およびスポットインスタンスのタスクノードグループをスケールインする方法については、「Scale in a cluster」をご参照ください。
-
クラスターのコンピュートリソースが不足している場合は、コアノードグループまたはタスクノードグループをスケールアウトします。詳細については、「Scale out a cluster」をご参照ください。
-
ビジネス要件に基づいてクラスターのコンピュートリソースを自動調整するには、ノードグループに対してマネージドまたはカスタムの Auto Scaling ルールを設定します。詳細については、「Auto Scaling」をご参照ください。