Configuration des types d'instances de cluster Amazon EMR et des meilleures pratiques pour les instances Spot - 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.

Configuration des types d'instances de cluster Amazon EMR et des meilleures pratiques pour les instances Spot

Utilisez les consignes de cette section pour déterminer les types d'instance, les options d'achat, ainsi que la quantité de stockage à allouer à chaque type de nœud dans un cluster EMR.

Quel type d'instance dois-je utiliser ?

Il existe plusieurs méthodes pour ajouter des EC2 instances Amazon à un cluster. La méthode que vous devez choisir varie selon que vous utilisez la configuration des groupes d'instances ou la configuration des parcs d'instances pour le cluster.

  • Groupes d'instances

    • Ajoutez manuellement des instances du même type aux groupes d'instances principaux et de tâches existants.

    • Ajoutez manuellement un groupe d'instances de tâches pouvant utiliser un type d'instance différent.

    • Configurez le dimensionnement automatique dans Amazon EMR pour un groupe d'instances, en ajoutant et en supprimant des instances automatiquement en fonction de la valeur d'une CloudWatch métrique Amazon que vous spécifiez. Pour de plus amples informations, veuillez consulter Utilisez le dimensionnement du cluster Amazon EMR pour vous adapter à l'évolution des charges de travail.

  • Parcs d'instances

Une manière de planifier les instances de votre cluster consiste à exécuter un cluster de test avec un ensemble représentatif d'échantillons de données et à surveiller l'utilisation des nœuds dans le cluster. Pour de plus amples informations, veuillez consulter Afficher et surveiller un cluster Amazon EMR pendant qu'il exécute des tâches. Une autre méthode consiste à calculer la capacité des instances que vous envisagez et à comparer cette valeur à la taille de vos données.

En général, le type de nœud principal, qui assigne les tâches, ne nécessite pas d'EC2 instance dotée d'une grande puissance de traitement ; les EC2 instances Amazon pour le type de nœud principal, qui traitent les tâches et stockent les données dans HDFS, ont besoin à la fois de puissance de traitement et de capacité de stockage ; les EC2 instances Amazon pour le type de nœud de tâche, qui ne stockent pas de données, ont uniquement besoin de puissance de traitement. Pour obtenir des directives concernant EC2 les instances Amazon disponibles et leur configuration, consultezConfigurer les types d' EC2 instances Amazon à utiliser avec Amazon EMR.

Les consignes suivantes s'appliquent à la plupart des clusters Amazon EMR.

  • Il existe une limite de vCPU pour le nombre total d' EC2instances Amazon à la demande que vous exécutez sur un AWS compte par compte. Région AWS Pour plus d'informations sur la limite de vCPU et sur la manière de demander une augmentation de limite pour votre compte, consultez la section Instances à la demande dans le guide de EC2 l'utilisateur Amazon pour les instances Linux.

  • Le nœud primaire n'a généralement pas de grandes exigences en matière de calcul. Pour les clusters comportant un grand nombre de nœuds, ou pour les clusters dont les applications sont spécifiquement déployées sur le nœud principal (HueJupyterHub, etc.), un nœud principal plus grand peut être nécessaire et peut contribuer à améliorer les performances du cluster. Par exemple, envisagez d'utiliser une instance m5.xlarge pour les petits clusters (50 nœuds ou moins) et de passer à un type d'instance plus grand pour les clusters plus importants.

  • Les besoins en calcul des nœuds principaux et de tâches dépendent du type de traitement que votre application effectue. De nombreuses tâches peuvent être exécutées sur les types d'instances à usage général, qui offrent des performances équilibrées en termes d'UC, d'espace disque et d'E/S. Les clusters nécessitant des calculs intensifs peuvent bénéficier d'une exécution sur des instances à CPU intensif, qui ont proportionnellement plus de ressources CPU que de RAM. Les applications de base de données et de mise en cache en mémoire peuvent bénéficier d'une exécution sur des instances à mémoire élevée. Les applications nécessitant beaucoup de ressources CPU et réseau, telles que les applications d'analyse, NLP et de Machine Learning, peuvent bénéficier d'une exécution sur des instances de calcul en cluster, qui fournissent proportionnellement des ressources d'UC intensives et des performances réseau accrues.

  • Si des phases différentes de votre cluster ont des exigences de capacité différentes, vous pouvez commencer avec un petit nombre de nœuds principaux et augmenter ou diminuer le nombre de nœuds de tâches pour satisfaire aux exigences de capacité variables de votre flux de travail.

  • La quantité de données que vous pouvez traiter dépend de la capacité de vos nœuds principaux et de la taille de vos données en entrée, au cours du traitement et en sortie. Les ensembles de données d'entrée, intermédiaires et de sortie résident tous sur le cluster au cours du traitement.

Quand faut-il utiliser des instances Spot ?

Lorsque vous lancez un cluster dans Amazon EMR, vous pouvez choisir de lancer des instances principales, de noyau ou de tâche sur des instances Spot. Comme chaque type de groupe d'instances joue un rôle différent dans le cluster, il existe des implications du lancement de chaque type de nœud sur des instances Spot. Vous ne pouvez pas modifier l'option d'achat d'une instance lorsque le cluster est en cours d'exécution. Pour modifier un groupe d'instances à la demande en instances Spot ou inversement, vous devez suspendre le cluster et en lancer un nouveau pour les nœuds principaux et de noyau. Pour les nœuds de tâches, vous pouvez lancer un nouveau groupe d'instances de tâche ou un parc d'instances et supprimer l'ancien.

Paramètres Amazon EMR pour empêcher l'échec de tâche en raison d'une résiliation d'instance Spot de nœud de tâche

Les instances Spot étant souvent utilisées pour exécuter des nœuds de tâches, Amazon EMR dispose d'une fonctionnalité par défaut pour planifier les tâches YARN afin que les tâches en cours n'échouent pas lorsque les nœuds de tâches s'exécutant sur des instances Spot sont résiliés. Pour ce faire, Amazon EMR autorise les processus principaux de l'application à s'exécuter uniquement sur les nœuds principaux. Le processus principal de l'application contrôle les tâches en cours d'exécution et doit rester actif pendant toute la durée de vie de la tâche.

Les versions 5.19.0 et ultérieures d'Amazon EMR utilisent la fonctionnalité intégrée d'étiquettes de nœuds YARN pour y parvenir. (Les versions antérieures utilisaient un correctif de code). Les propriétés des classifications de configuration yarn-site et capacity-scheduler sont configurées par défaut afin que le planificateur de capacité YARN et le planificateur équitable tirent parti des étiquettes des nœuds. Amazon EMR étiquette automatiquement les nœuds principaux avec l'étiquette CORE et définit les propriétés de manière à ce que les maîtres d'applications soient planifiés uniquement sur les nœuds portant le label CORE. La modification manuelle des propriétés associées dans les classifications de configuration de yarn-site et de capacity-scheduler, ou directement dans les fichiers XML associés, pourrait interrompre cette fonctionnalité ou la modifier.

Amazon EMR configure par défaut les propriétés et valeurs suivantes. Faites attention lorsque vous configurez ces propriétés.

Note

À partir de la série Amazon EMR version 6.x, la fonction des étiquettes de nœud YARN est désactivée par défaut. Les processus principaux des applications peuvent s'exécuter à la fois sur les nœuds de noyau et sur les nœuds de tâche par défaut. Vous pouvez activer la fonction d'étiquetage des nœuds YARN en configurant les propriétés suivantes :

  • yarn.node-labels.enabled: true

  • yarn.node-labels.am.default-node-label-expression: 'CORE'

  • yarn-site (yarn-site.xml) sur tous les nœuds

    • yarn.node-labels.enabled: true

    • yarn.node-labels.am.default-node-label-expression: 'CORE'

    • yarn.node-labels.fs-store.root-dir: '/apps/yarn/nodelabels'

    • yarn.node-labels.configuration-type: 'distributed'

  • yarn-site (yarn-site.xml) sur les nœuds principaux et de noyau

    • yarn.nodemanager.node-labels.provider: 'config'

    • yarn.nodemanager.node-labels.provider.configured-node-partition: 'CORE'

  • capacity-scheduler (capacity-scheduler.xml) sur tous les nœuds

    • yarn.scheduler.capacity.root.accessible-node-labels: '*'

    • yarn.scheduler.capacity.root.accessible-node-labels.CORE.capacity: 100

    • yarn.scheduler.capacity.root.default.accessible-node-labels: '*'

    • yarn.scheduler.capacity.root.default.accessible-node-labels.CORE.capacity: 100

Nœud primaire sur une instance Spot

Le nœud primaire contrôle et dirige le cluster. Lorsque le cluster est arrêté, il prend fin, si bien que vous devez lancer uniquement le nœud primaire en tant qu'instance Spot si vous exécutez un cluster où un arrêt soudain est acceptable. Ce peut être le cas, si vous testez une nouvelle application, si vous avez un cluster qui conserve périodiquement des données dans un magasin externe tel qu'Amazon S3, ou si vous exécutez un cluster où le coût est plus important que l'exécution du cluster jusqu'à la fin.

Lorsque vous lancez le groupe d'instances maître en tant qu'instance Spot, le cluster ne démarre pas tant que cette demande d'instance Spot n'est pas satisfaite. Ceci doit être pris en compte lorsque vous sélectionnez votre prix Spot maximum.

Vous pouvez uniquement ajouter un nœud primaire d'instances Spot lorsque vous lancez le cluster. Vous ne pouvez pas ajouter ou supprimer des nœuds primaires d'un cluster en cours d'exécution.

En général, il suffirait d'exécuter le nœud primaire en tant qu'instance Spot si vous exécutez l'ensemble du cluster (tous les groupes d'instances) sous forme d'instances Spot.

Nœuds de noyau sur les instances Spot

Les nœuds principaux traitent les données et stockent les informations à l'aide de HDFS. La résiliation d'une instance de noyau risque la perte de données. Pour cette raison, vous devez uniquement exécuter des nœuds de noyau sur des instances Spot ou des pertes de données HDFS partielles sont tolérables.

Lorsque vous lancez le groupe d'instances principal sous forme d'instances Spot, Amazon EMR attend de pouvoir mettre en service toutes les instances principales demandées avant de lancer le groupe d'instances. En d'autres termes, si vous demandez six EC2 instances Amazon et que seules cinq sont disponibles au prix spot maximum ou en dessous, le groupe d'instances ne sera pas lancé. Amazon EMR continue d'attendre que les six EC2 instances Amazon soient disponibles ou que vous mettiez fin au cluster. Vous pouvez modifier le nombre d'instances Spot dans un groupe d'instances de noyau pour ajouter de la capacité à un cluster en cours d'exécution. Pour plus d'informations sur la façon de travailler avec des groupes d'instances et comment les instances Spot fonctionnent avec des parcs d'instances, consultez : Créez un cluster Amazon EMR avec des flottes d'instances ou des groupes d'instances uniformes.

Nœuds de tâche sur les instances Spot

Les nœuds de tâches traitent les données, mais ne conservent pas de données persistantes dans HDFS. S'ils sont suspendus car le prix Spot a augmenté et dépasse votre prix Spot maximum, aucune donnée n'est perdue et l'effet sur votre cluster est minimal.

Lorsque vous lancez un ou plusieurs groupes d'instances de tâches sous forme d'instances Spot, Amazon EMR met en service autant de nœuds de tâches que possible à votre prix Spot maximum. Cela signifie que si vous demandez un groupe d'instances de tâches à six nœuds et que seules cinq instances Spot sont disponibles à votre prix Spot maximum ou sous ce prix, Amazon EMR lance le groupe d'instances avec cinq nœuds et ajoute le sixième plus tard, si cela est possible.

Le lancement des groupes d'instances de tâches sous forme d'instances Spot est un moyen stratégique d'étendre la capacité de votre cluster tout en réduisant au maximum les coûts. Si vous lancez vos groupes d'instances maîtres et principaux en tant qu'instances à la demande, leur capacité est garantie pour l'exécution du cluster. Vous pouvez ajouter des instances de tâches à vos groupes d'instances de tâches en fonction des besoins, afin de gérer les pics de trafic ou d'accélérer le traitement de données.

Vous pouvez ajouter ou supprimer des nœuds de tâches à l'aide de la console ou de l'API. AWS CLI Vous pouvez également ajouter des groupes de tâches supplémentaires, mais vous ne pouvez pas supprimer un groupe de tâches après sa création.

Configurations d'instances pour les scénarios d'application

Le tableau suivant est une référence rapide pour les options et configurations de types de nœuds qui sont généralement adaptés à plusieurs scénarios d'applications. Cliquez sur le lien pour afficher des informations supplémentaires sur chaque type de scénario.

Scénario d'application Option d'achat du nœud primaire Option d'achat de nœuds principaux Option d'achat de nœuds de tâches
Entrepôts des données et clusters de longue durée À la demande Combinaison d'instances à la demande ou de parc d'instances Combinaison d'instances Spot ou de parc d'instances
Charges de travail axées sur les coûts Spot Spot Spot
Charges de travail essentielles pour les données À la demande À la demande Combinaison d'instances Spot ou de parc d'instances
Tests d'application Spot Spot Spot

Il existe plusieurs scénarios dans lesquels les instances Spot sont utiles pour exécuter un cluster Amazon EMR.

Entrepôts des données et clusters de longue durée

Si vous exécutez un cluster Amazon EMR persistant qui présente une variation prévisible de sa capacité de calcul (tel qu'un entrepôt des données), vous pouvez gérer un pic de demande à moindre coût grâce aux instances Spot. Vous pouvez lancer vos groupes d'instances primaires et principales sous forme d'instances à la demande pour gérer la capacité normale et lancer le groupe d'instances de tâches sous forme d'instances Spot pour gérer les exigences des pics de charge.

Charges de travail axées sur les coûts

Si vous exécutez des clusters transitoires pour lesquels une réduction des coûts est plus importante que la durée d'exécution, et qu'une perte partielle de travail est acceptable, vous pouvez exécuter l'ensemble du cluster (groupes d'instances principales, centrales et de tâches) sous forme d'instances Spot, afin de bénéficier des plus grandes économies de coûts possibles.

Charges de travail essentielles pour les données

Si vous exécutez un cluster pour lequel le coût inférieur est plus important que le délai d'exécution, mais que la perte d'un travail partiel n'est pas acceptable, lancez les groupes d'instances principales et de noyau en tant qu'instances à la demande et complétez avec un ou plusieurs groupes d'instances de tâche des instances Spot. L'exécution des groupes d'instances principales et centrales en tant qu'instances à la demande garantit la persistance de vos données dans HDFS et la protection du cluster contre une résiliation en raison des fluctuations du marché Spot, tout en permettant de réaliser des économies qui découlent de l'exécution des groupes d'instances de tâches en tant qu'instances Spot.

Tests d'application

Lorsque vous testez une nouvelle application afin de préparer son lancement dans un environnement de production, vous pouvez exécuter l'ensemble du cluster (groupes d'instances principales, centrales et de tâches) sous forme d'instances Spot pour réduire les coûts des tests.

Calcul de la capacité HDFS requise pour un cluster

La quantité de stockage HDFS disponible pour votre cluster dépend des facteurs suivants :

  • Le nombre d' EC2 instances Amazon utilisées pour les nœuds principaux.

  • Capacité du magasin d' EC2 instances Amazon pour le type d'instance utilisé. Pour plus d'informations sur les volumes de stockage d'instance, consultez Amazon Amazon EC2 instance store dans le guide de EC2 l'utilisateur Amazon.

  • Nombre et taille des volumes Amazon EBS attachés aux nœud principaux.

  • Facteur de réplication, qui représente le mode de stockage de chaque bloc de données dans HDFS pour assurer une redondance similaire à RAID. Par défaut, le facteur de réplication est égal à trois pour un cluster composé de 10 nœuds principaux ou plus, à deux pour un cluster de 4 à 9 nœuds principaux, et à un pour un cluster de trois nœuds ou moins.

Pour calculer la capacité HDFS d'un cluster, pour chaque nœud principal, ajoutez la capacité du volume de stockage d'instance à la capacité de stockage Amazon EBS (le cas échéant). Multipliez le résultat par le nombre de nœuds principaux, puis divisez le total par le facteur de réplication en fonction du nombre de nœuds principaux. Par exemple, un cluster contenant 10 nœuds principaux de type i2.xlarge qui possèdent 800 Go de stockage d'instance sans volumes Amazon EBS associés dispose au total d'environ 2 666 Go disponibles pour HDFS (10 nœuds x 800 Go ÷ facteur de réplication de 3).

Si la valeur de capacité HDFS calculée est inférieure à vos données, vous pouvez augmenter la quantité de stockage HDFS de différentes manières :

  • En créant un cluster avec des volumes Amazon EBS supplémentaires, ou en ajoutant des groupes d'instances avec des volumes Amazon EBS attachés à un cluster existant

  • En ajoutant d'autres nœuds principaux

  • Choisir un type d' EC2 instance Amazon avec une plus grande capacité de stockage

  • En utilisant la compression des données

  • En modifiant les paramètres de configuration de Hadoop pour réduire le facteur de réplication

La réduction du facteur de réplication doit être utilisée avec précautions, car elle réduit la redondance des données HDFS et l'aptitude du cluster à récupérer après la perte ou l'endommagement de blocs HDFS.