Si la charge de votre cluster reste faible pendant une période prolongée et que de nombreuses ressources du cluster sont inutilisées, envisagez de réduire le groupe de nœuds Core ou Task afin d'éviter le gaspillage de ressources. Pour les groupes de nœuds Task en paiement à l'utilisation, vous pouvez effectuer cette opération dans la console. Pour les autres types, y compris les groupes de nœuds Core en paiement à l'utilisation, les groupes de nœuds Task par abonnement et les groupes de nœuds Core par abonnement, suivez la procédure décrite dans cette rubrique.
Limites
Si le nombre de nœuds Core dans votre cluster est égal au facteur de réplication HDFS, ne réduisez pas le nombre de nœuds Core afin d'éviter toute perte de données.
Si votre cluster est un ancien cluster Hadoop à haute disponibilité (HA) avec deux nœuds Master, ne mettez pas hors service le nœud emr-worker-1 (dans les anciens clusters HA, ZooKeeper s'exécute sur work-1).
Remarques importantes
Toutes les opérations décrites dans cette rubrique sont irréversibles. Une fois que vous avez commencé la mise hors service, vous ne pouvez pas restaurer l'état d'origine.
Cette rubrique présente les meilleures pratiques. Évaluez attentivement les conditions réelles de votre cluster avant de procéder afin d'éviter les échecs de planification des tâches et les risques pour la sécurité des données.
Comment choisir les nœuds à mettre hors service
La réduction d'un groupe de nœuds fonctionne en mettant hors service les nœuds de ce groupe. Choisissez les nœuds en fonction de la charge de service de votre cluster. Cette rubrique propose deux méthodes pour vérifier l'utilisation des ressources et identifier les candidats à la mise hors service.
Méthode 1 : Console EMR Monitoring and Diagnostics
Sur la page Metric Monitoring, vérifiez la métrique AvailableVCores dans le tableau de bord YARN-Queues. Si AvailableVCores reste élevé pendant une longue période, la file d'attente dispose de nombreux vCores inactifs et vous pouvez envisager de réduire le groupe de nœuds Core ou Task.
Sur la page Metric Monitoring, vérifiez la métrique AvailableGB dans le tableau de bord YARN-NodeManagers. Si la valeur AvailableGB d'un nœud reste élevée pendant une longue période, cela signifie qu'il dispose de beaucoup de mémoire disponible et vous pouvez envisager de libérer ce nœud.
Vous pouvez utiliser d'autres métriques combinées à vos exigences métier comme critères.
Méthode 2 : Interface web YARN
-
Vérifiez l'utilisation des ressources des files d'attente. Si les files d'attente utilisent systématiquement peu de capacité, envisagez de réduire le groupe de nœuds Core ou Task.
Sur la page Application Queues de YARN ResourceManager, affichez la mémoire et les vCores alloués et utilisés pour chaque partition (telle que DEFAULT_PARTITION ou batch). Utilisez les métriques Capacity, Used et Max Capacity dans la légende pour déterminer si les ressources de la file d'attente sont inactives.
Sur la page Nodes, triez par Nodes Address pour identifier rapidement les nœuds disposant du plus grand volume de mémoire disponible. Envisagez de libérer ces nœuds.
Si votre cluster est un ancien cluster Hadoop, faites particulièrement attention dans les cas suivants :
Si votre cluster n'est pas en mode HA, ne mettez pas hors service emr-worker-1 ni emr-worker-2.
Si votre cluster est en mode HA mais ne compte que deux nœuds Master, ne mettez pas hors service emr-worker-1.
Étape 1 : Vérifier les services sur les nœuds à mettre hors service
Avant de mettre hors service des nœuds pour réduire un groupe de nœuds Core ou Task, commencez par mettre hors service les services de composants pertinents sur ces nœuds. Libérez ensuite les ressources des nœuds. Vous pouvez afficher les composants déployés sur la page Nodes de la console.
Sur la page Node management, développez le groupe de nœuds cible, trouvez le nœud cible et cliquez sur l'icône du nombre de composants (par exemple, 12 components) à droite de la ligne du nœud. Une couche contextuelle affiche tous les composants déployés et leur état d'exécution.
Étape 2 : Mettre hors service les services de composants des nœuds
Si le nœud que vous prévoyez de mettre hors service exécute l'un des services suivants, mettez ces services hors service avant de libérer le nœud. Sinon, vous risquez des échecs de planification des tâches et des problèmes de sécurité des données.
Mettre hors service YARN NodeManager
-
Accédez à la page d'état du service YARN.
Connectez-vous à la console E-MapReduce.
Dans la barre de menu supérieure, sélectionnez la région et le groupe de ressources selon vos besoins.
Sur la page EMR on ECS, cliquez sur Services dans la colonne Actions du cluster cible.
Sur la page Services, cliquez sur Status dans la section du service YARN.
-
Mettez hors service le NodeManager sur le nœud cible.
Dans la section Components, cliquez sur dans la colonne Actions pour NodeManager.
Dans la boîte de dialogue, sélectionnez , saisissez un Execution Reason et cliquez sur OK.
Dans la boîte de dialogue de confirmation, cliquez sur OK.
Cliquez sur Operation History en haut à droite pour suivre la progression.
Mettre hors service HDFS DataNode
Connectez-vous à un nœud Master via SSH. Pour plus de détails, consultez la section Se connecter à un cluster.
-
Basculez vers l'utilisateur hdfs et vérifiez le nombre de NameNodes actifs.
sudo su - hdfs hdfs haadmin -getAllServiceState -
Connectez-vous via SSH à chaque hôte NameNode et modifiez le fichier dfs.exclude pour ajouter le nom d'hôte du nœud que vous souhaitez mettre hors service. Ajoutez un seul nœud à la fois.
-
Anciens clusters Hadoop
touch /etc/ecm/hadoop-conf/dfs.exclude vim /etc/ecm/hadoop-conf/dfs.excludeDans vim, appuyez sur
opour commencer une nouvelle ligne et saisissez le nom d'hôte du DataNode à mettre hors service.emr-worker-3.cluster-xxxxx emr-worker-4.cluster-xxxxx -
Clusters Hadoop non hérités
touch /etc/taihao-apps/hdfs-conf/dfs.exclude vim /etc/taihao-apps/hdfs-conf/dfs.excludeDans vim, appuyez sur
opour commencer une nouvelle ligne et saisissez le nom d'hôte du DataNode à mettre hors service.core-1-3.c-0894dxxxxxxxxx core-1-4.c-0894dxxxxxxxxx
-
-
Sur n'importe quel hôte NameNode, basculez vers l'utilisateur hdfs et exécutez la commande de rafraîchissement. HDFS démarre automatiquement la mise hors service.
sudo su - hdfs hdfs dfsadmin -refreshNodes -
Confirmez le résultat de la mise hors service.
Exécutez la commande suivante pour vérifier si la mise hors service est terminée.
hadoop dfsadmin -reportLorsque l'état (Status) du nœud spécifié indique Decommissioned, ses données ont été migrées vers d'autres nœuds et la mise hors service est terminée.
Mettre hors service StarRocks
Connectez-vous au cluster et connectez-vous à l'aide d'un client. Pour plus de détails, consultez la section Démarrage rapide.
-
Exécutez la commande suivante pour mettre hors service un BE en utilisant la méthode
DECOMMISSION.ALTER SYSTEM DECOMMISSION backend "be_ip:be_heartbeat_service_port";Remplacez les paramètres suivants en fonction de votre cluster :
be_ip: Trouvez l'adresse IP interne du BE à réduire sur la page Nodes.be_heartbeat_service_port: La valeur par défaut est 9050. Vous pouvez la vérifier à l'aide de la commandeshow backends.
Si la mise hors service est lente, vous pouvez forcer la mise hors service en utilisant la méthode
DROP.ImportantSi vous utilisez la méthode
DROP, assurez-vous que votre système maintient des données en triple exemplaire.ALTER SYSTEM DROP backend "be_ip:be_heartbeat_service_port"; -
Exécutez la commande suivante pour surveiller l'état des 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)Un nœud dont la valeur SystemDecommissioned est définie sur true est en cours de mise hors service. Lorsque TabletNum atteint 0, le système nettoie les métadonnées.
Si le nœud BE n'apparaît plus dans les résultats, la mise hors service a réussi.
Mettre hors service HBase HRegionServer
-
Accédez à la page d'état du service HBase.
Connectez-vous à la console E-MapReduce.
Dans la barre de menu supérieure, sélectionnez la région et le groupe de ressources selon vos besoins.
Sur la page EMR on ECS, cliquez sur Services dans la colonne Actions du cluster cible.
Sur la page Services, cliquez sur Status dans la section du service HBase.
-
Mettez hors service le HRegionServer sur le nœud cible.
Dans la section Components, cliquez sur STOP dans la colonne Actions pour HRegionServer.
Dans la boîte de dialogue, sélectionnez , saisissez un Execution Reason et cliquez sur OK.
Dans la boîte de dialogue de confirmation, cliquez sur OK.
Cliquez sur Operation history en haut à droite pour suivre la progression.
Mettre hors service HBASE-HDFS DataNode
Connectez-vous à un nœud Master via SSH. Pour plus de détails, consultez la section Se connecter à un cluster.
-
Exécutez les commandes suivantes pour basculer vers l'utilisateur hdfs et définir les variables d'environnement.
sudo su - hdfs export HADOOP_CONF_DIR=/etc/taihao-apps/hdfs-conf/namenode -
Exécutez la commande suivante pour afficher les informations actuelles du NameNode.
hdfs dfsadmin -report -
Connectez-vous via SSH à chaque hôte NameNode et modifiez le fichier dfs.exclude pour ajouter le nom d'hôte du nœud que vous souhaitez mettre hors service. Ajoutez un seul nœud à la fois.
touch /etc/taihao-apps/hdfs-conf/dfs.exclude vim /etc/taihao-apps/hdfs-conf/dfs.excludeDans vim, appuyez sur
opour commencer une nouvelle ligne et saisissez le nom d'hôte du DataNode à mettre hors service.core-1-3.c-0894dxxxxxxxxx core-1-4.c-0894dxxxxxxxxx -
Sur n'importe quel hôte NameNode, basculez vers l'utilisateur hdfs et exécutez la commande de rafraîchissement. HDFS démarre automatiquement la mise hors service.
sudo su - hdfs export HADOOP_CONF_DIR=/etc/taihao-apps/hdfs-conf/namenode hdfs dfsadmin -refreshNodes -
Confirmez le résultat de la mise hors service.Mettre hors service SmartData JindoStorageService (anciens clusters Hadoop)
Exécutez la commande suivante pour vérifier si la mise hors service est terminée.
hadoop dfsadmin -reportLorsque l'état (Status) du nœud spécifié indique Decommissioned, ses données ont été migrées vers d'autres nœuds et la mise hors service est terminée.
-
Accédez à la page d'état du service SmartData.
Connectez-vous à la console E-MapReduce.
Dans la barre de menu supérieure, sélectionnez la région et le groupe de ressources selon vos besoins.
Sur la page EMR on ECS, cliquez sur Services dans la colonne Actions du cluster cible.
Sur la page Services, cliquez sur Status dans la section du service SmartData.
-
Mettez hors service le JindoStorageService sur le nœud cible.
Dans la section Components, cliquez sur dans la colonne Actions pour JindoStorageService.
Dans la boîte de dialogue, sélectionnez , saisissez un Execution Reason et cliquez sur OK.
Dans la boîte de dialogue de confirmation, cliquez sur OK.
Cliquez sur Operation History en haut à droite pour suivre la progression.
-
Étape 3 : Libérer les nœuds mis hors service
Vous devez vous connecter à la console ECS pour gérer les nœuds du cluster. Si vous êtes un utilisateur Resource Access Management (RAM), vous avez besoin d'autorisations ECS. Nous vous recommandons d'accorder la stratégie AliyunECSFullAccess.
-
Accédez à la page de gestion des nœuds.
Connectez-vous à la console E-MapReduce.
Dans la barre de menu supérieure, sélectionnez la région et le groupe de ressources selon vos besoins.
Sur la page EMR on ECS, cliquez sur Nodes dans la colonne Actions du cluster cible.
-
Sur la page Nodes, cliquez sur l'ID ECS du nœud que vous souhaitez libérer.
Vous serez redirigé vers la console ECS.
Libérez l'instance dans la console ECS. Pour plus de détails, consultez la section Libérer des instances.
Références
Pour la réduction des groupes de nœuds Task avec des instances en paiement à l'utilisation et spot, consultez la section Réduire un cluster.
Si votre cluster manque de ressources de calcul, augmentez le groupe de nœuds Core ou Task. Pour plus de détails, consultez la section Augmenter un cluster.
Pour ajuster automatiquement les ressources de calcul du cluster en fonction des besoins métier, configurez des règles Auto Scaling gérées ou personnalisées pour les groupes de nœuds. Pour plus de détails, consultez la section Auto Scaling.