Bonnes pratiques pour la configuration 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.

Bonnes pratiques pour la configuration des clusters

Suivez les instructions de cette section pour vous aider à déterminer les types d'instances, les options d'achat et la quantité de stockage à allouer pour chaque type de nœud d'un EMR cluster.

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 Utiliser la mise à l'échelle des clusters.

  • Parcs d'instances

    • Ajoutez un parc d'instances de tâches unique.

    • Modifiez la capacité cible des instances à la demande et des instances Spot pour les parcs d'instances principaux et de tâches existants. Pour de plus amples informations, veuillez consulter Configuration de 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 Affichage et surveillance d'un cluster. 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'EC2instance 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éesHDFS, 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, consultezConfiguration des EC2 instances Amazon.

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

  • Il existe une CPU limite de v 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 CPU limite v 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 des types d'instances à usage général, qui offrent des performances équilibrées en termes d'CPUespace disque et d'entrées/sorties. Les clusters à forte intensité de calcul peuvent tirer parti de l'exécution sur des CPU instances hautes, qui en ont proportionnellement plus de. CPU 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 intensives et CPU intensives en réseau, telles que l'analyse syntaxique et l'apprentissage automatiqueNLP, peuvent tirer parti de l'exécution sur des instances de calcul en cluster, qui fournissent des CPU ressources proportionnellement élevées 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 sur AmazonEMR, vous pouvez choisir de lancer des instances principales, principales ou de tâches sur des instances ponctuelles. 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.

EMRParamètres Amazon pour éviter l'échec des tâches en raison de la fermeture de l'instance Spot du nœud de tâches

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 YARN tâches afin que l'exécution des tâches n'échoue pas lorsque les nœuds de tâches exécutés sur des instances Spot sont fermé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 EMR versions 5.19.0 et ultérieures d'Amazon utilisent la fonctionnalité intégrée d'étiquettes de YARN nœuds pour y parvenir. (Les versions antérieures utilisaient un correctif de code). Les propriétés des classifications de capacity-scheduler configuration yarn-site et de configuration sont configurées par défaut afin que le planificateur de YARN capacité et le planificateur équitable tirent parti des étiquettes des nœuds. Amazon étiquette EMR automatiquement les nœuds principaux avec cette CORE étiquette et définit les propriétés de telle sorte que les maîtres d'applications soient planifiés uniquement sur les nœuds dotés de cette CORE étiquette. La modification manuelle des propriétés associées dans les classifications de configuration Yarn-Site et Capacity Scheduler, ou directement dans XML les fichiers associés, pourrait interrompre cette fonctionnalité ou la modifier.

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

Note

À compter de la série de versions Amazon EMR 6.x, la fonctionnalité d'étiquettes de YARN nœuds 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 fonctionnalité d'étiquettes de YARN nœuds 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 deHDFS. La résiliation d'une instance de noyau risque la perte de données. Pour cette raison, vous ne devez exécuter des nœuds principaux sur des instances Spot que lorsqu'une perte de HDFS données partielle est tolérable.

Lorsque vous lancez le groupe d'instances principal en tant qu'instances ponctuelles, Amazon EMR attend de pouvoir fournir 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éation d'un cluster avec des parcs 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 contiennent pas de données persistantesHDFS. 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 en tant qu'instances ponctuelles, EMR Amazon met en service autant de nœuds de tâches que possible, en utilisant votre prix spot maximum. Cela signifie que si vous demandez un groupe d'instances de tâches avec six nœuds et que seules cinq instances ponctuelles sont disponibles au prix spot maximum ou en dessous, Amazon EMR lance le groupe d'instances avec cinq nœuds, en ajoutant le sixième ultérieurement si 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 AWS CLI, ouAPI. 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 EMR cluster Amazon.

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

Si vous gérez un EMR cluster Amazon persistant dont la capacité de calcul varie de manière prévisible, tel qu'un entrepôt de données, vous pouvez gérer les pics 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 principaux et principaux en tant qu'instances à la demande garantit que vos données sont conservées HDFS et que le cluster est protégé contre toute résiliation en raison des fluctuations du marché au comptant, tout en permettant de réaliser des économies grâce à l'exécution des groupes d'instances de tâches en tant qu'instances ponctuelles.

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 HDFS capacité requise d'un cluster

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

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

  • Capacité du magasin d'EC2instances 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.

  • Le nombre et la taille des EBS volumes Amazon attachés aux nœuds principaux.

  • Un facteur de réplication, qui tient compte de la manière dont chaque bloc de données est stocké HDFS pour RAID une redondance similaire. 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 HDFS capacité d'un cluster, pour chaque nœud principal, ajoutez la capacité du volume de stockage de l'instance à la capacité de EBS stockage d'Amazon (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 avec 10 nœuds principaux de type i2.xlarge, qui dispose de 800 Go de stockage d'instance sans aucun EBS volume Amazon attaché, dispose d'un total d'environ 2 666 Go pour HDFS (10 nœuds x 800 Go ÷ 3 facteurs de réplication).

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

  • Création d'un cluster avec des EBS volumes Amazon supplémentaires ou ajout de groupes d'instances avec des EBS volumes Amazon attachés à un cluster existant

  • En ajoutant d'autres nœuds principaux

  • Choisir un type d'EC2instance 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 prudence car elle réduit la redondance des HDFS données et la capacité du cluster à récupérer des blocs perdus ou endommagésHDFS.