Réduction de capacité des clusters - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Réduction de capacité des clusters

Note

Les options de comportement de réduction ne sont plus prises en charge depuis la version 5.10.0 d'Amazon EMR. En raison de l'introduction de la facturation à la seconde dans Amazon EC2, le comportement de réduction de capacité par défaut pour les clusters Amazon EMR se termine désormais à la fin de la tâche.

Avec les versions 5.1.0 à 5.9.1 d'Amazon EMR, il existe deux options pour le comportement de réduction de capacité : la résiliation à l'échéance horaire de l'instance pour la facturation Amazon EC2 ou la résiliation à l'achèvement de la tâche. À compter de la version 5.10.0 d'Amazon EMR, le paramètre de résiliation à l'échéance horaire de l'instance est obsolète en raison de l'introduction de la facturation à la seconde dans Amazon EC2. Nous déconseillons de spécifier la résiliation à l'échéance horaire de l'instance dans les versions où cette option est disponible.

Avertissement

Si vous utilisez le AWS CLI pour émettre un modify-instance-groups avecEC2InstanceIdsToTerminate, ces instances sont immédiatement résiliées, sans tenir compte de ces paramètres, et quel que soit le statut des applications qui y sont exécutées. Une telle résiliation d'une instance peut entraîner une perte des données et un comportement du cluster imprévisible.

Lorsque l'option Terminer à l'achèvement de la tâche est spécifiée, Amazon EMR place les tâches sur liste noire et les vide des nœuds avant de mettre fin aux instances Amazon EC2. Lorsque l'une ou l'autre des options est spécifiée, Amazon EMR ne résilie pas les instances Amazon EC2 dans les groupes d'instances principaux si cela peut endommager HDFS.

Mise hors service lors de l'achèvement de la tâche

Amazon EMR vous permet de réduire votre cluster sans attribuer votre charge de travail. Lors d'une opération de redimensionnement, Amazon EMR met gracieusement hors service les démons YARN, HDFS et autres sur les nœuds principaux et les nœuds de tâches, le tout sans perdre de données ni interrompre les tâches. Amazon EMR ne réduit la taille des groupes d'instances que si le travail assigné aux groupes est terminé et qu'ils sont inactifs. Pour YARN NodeManager Graceful Decommission, vous pouvez ajuster manuellement le temps d'attente d'un nœud avant la mise hors service.

Cette durée est définie à l'aide d'une propriété dans la classification de configuration YARN-site. Avec Amazon EMR versions 5.12.0 et ultérieures, spécifiez la propriété YARN.resourcemanager.nodemanager-graceful-decommission-timeout-secs. Avec les versions antérieures d'Amazon EMR, spécifiez la propriété YARN.resourcemanager.decommissioning.timeout.

Si des conteneurs ou des applications YARN s'exécutent encore à l'expiration du délai de mise hors service, la mise hors service du nœud est forcée et YARN replanifie les conteneurs attribués sur d'autres nœuds. La valeur par défaut est de 3 600 secondes (une heure). Vous pouvez attribuer une valeur élevée arbitraire à ce délai pour allonger le temps d'attente d'une réduction appropriée. Pour plus d'informations, consultez la section relative au Déclassement gracieux des nœuds YARN dans la documentation Apache Hadoop.

Groupes de nœuds de tâches

Amazon EMR sélectionne intelligemment les instances qui n'ont pas de tâches en cours d'exécution pour une étape ou une application, et supprime d'abord ces instances d'un cluster. Si toutes les instances dans le cluster sont utilisées, Amazon EMR attend que les tâches se terminent sur une instance donnée avant de la supprimer du cluster. Le temps d'attente par défaut est de 1 heure. Cette valeur peut être modifiée à l'aide du paramètre YARN.resourcemanager.decommissioning.timeout. Amazon EMR utilise dynamiquement le nouveau paramètre. Vous pouvez définir ce paramètre sur un nombre arbitrairement élevé pour garantir qu'Amazon EMR ne met fin à aucune tâche tout en réduisant la taille du cluster.

Groupes de nœuds principaux

Sur les nœuds principaux, les DataNode démons YARN NodeManager et HDFS doivent être mis hors service pour que le groupe d'instances puisse être réduit. Pour YARN, une réduction appropriée garantit qu'un nœud marqué pour mise hors service passe seulement à l'état DECOMMISSIONED s'il n'y a aucun conteneur ni application en attente ou incomplet. La mise hors service se termine immédiatement s'il n'y a aucun conteneur en cours d'exécution sur le nœud au début de la mise hors service.

Pour HDFS, une réduction appropriée garantit que la capacité cible de HDFS est suffisamment grande pour prendre en charge tous les blocs existants. Si la capacité cible n'est pas suffisamment grande, seule une quantité partielle d'instances principales sont mises hors service, de sorte que les nœuds restants pourront gérer les données actuelles résidant dans HDFS. Vous devriez garantir une capacité HDFS supplémentaire pour permettre de continuer la mise hors service. Vous devez également essayer de minimiser les E/S d'écriture avant de tenter de réduire les groupes d'instances. Des E/S d'écriture excessives peuvent retarder la fin de l'opération de redimensionnement.

Une autre limite est le facteur de réplication par défaut, dfs.replication dans /etc/hadoop/conf/hdfs-site. Lorsqu'il crée un cluster, Amazon EMR configure la valeur en fonction du nombre d'instances dans le cluster : 1 avec 1 à 3 instances, 2 pour les clusters avec 4 à 9 instances, et 3 pour les clusters avec plus de 10 instances.

Avertissement
  1. Paramétrer dfs.replication sur la valeur 1 avec les clusters de moins de quatre nœuds peut entraîner une perte de données HDFS en cas de panne d'un seul nœud. Nous vous recommandons d'utiliser un cluster comportant au moins quatre nœuds principaux pour les charges de travail de production.

  2. Amazon EMR n'autorisera pas les clusters à mettre à l'échelle les nœuds principaux situés en dessous de dfs.replication. Par exemple, si dfs.replication = 2, le nombre minimum de nœuds principaux est 2.

  3. Lorsque vous utilisez la mise à l'échelle gérée, autoscaling, ou que vous choisissez de redimensionner manuellement votre cluster, nous vous recommandons de définir dfs.replication sur une valeur supérieure ou égale à 2.

La réduction progressive ne vous permet pas de réduire les nœuds principaux en dessous du facteur de réplication HDFS. Cela permet à HDFS de fermer des fichiers en raison d'un nombre insuffisant de répliques. Pour contourner cette limite, réduisez le facteur de réplication et redémarrez le NameNode daemon.

Configurer le comportement de réduction d'Amazon EMR

Note

L'option de réduction du comportement de résiliation à l'heure de l'instance n'est plus prise en charge pour les versions 5.10.0 et ultérieures d'Amazon EMR. Les options de comportement de réduction suivantes apparaissent uniquement dans la console Amazon EMR pour les versions 5.1.0 à 5.9.1.

Vous pouvez utiliser l'API AWS Management Console AWS CLI, la ou l'API Amazon EMR pour configurer le comportement de réduction lorsque vous créez un cluster.

Console
Configurer le comportement de réduction à l'aide de la nouvelle console
  1. Connectez-vous à la AWS Management Console console Amazon EMR et ouvrez-la à l'adresse https://console.aws.amazon.com/emr.

  2. Sous EMR sur EC2 dans le volet de navigation de gauche, choisissez Clusters, puis Créer un cluster.

  3. Dans la section Options de dimensionnement et de provisionnement du cluster, choisissez Utiliser un dimensionnement automatique personnalisé. Sous Politiques de dimensionnement automatique personnalisées, cliquez sur le bouton d'action Plus pour ajouter une échelle dans les politiques. Nous vous recommandons d'ajouter à la fois des politiques Scale in et Scale out. L'ajout d'un seul ensemble de politiques signifie qu'Amazon EMR n'effectuera qu'un dimensionnement unidirectionnel et que vous devrez effectuer les autres actions manuellement.

  4. Choisissez toutes les autres options qui s'appliquent à votre cluster.

  5. Pour lancer cluster, choisissez Créer un cluster.

AWS CLI
Pour configurer le comportement de réduction à l'aide du AWS CLI
  • Utilisez l'option --scale-down-behavior pour spécifier TERMINATE_AT_INSTANCE_HOUR ou TERMINATE_AT_TASK_COMPLETION.