À partir des versions EMR 3.49.0 et 5.15.0, EMR définit dynamiquement les valeurs de mémoire par défaut pour les composants YARN lors de la création du cluster, en fonction des types d'instance sélectionnés et des services déployés. Ajustez ces valeurs dans la console EMR après la création du cluster.
Si les composants YARN reçoivent moins de mémoire que prévu après l'initialisation du cluster, vérifiez les points suivants :
Le nombre de services déployés dans le cluster. EMR répartit la mémoire disponible entre tous les services déployés ; ainsi, plus il y a de services, moins chaque composant dispose de mémoire.
La conformité des spécifications des instances Elastic Compute Service (ECS) du groupe de nœuds avec les exigences en matière de mémoire de tous les services déployés.
Taille du tas (heap) pour les composants YARN
Dans l'onglet Configure de la page du service YARN de la console EMR, configurez les paramètres suivants dans les fichiers yarn-env.sh ou mapred-env.sh. Tous les paramètres s'appliquent au niveau du cluster et nécessitent un redémarrage des composants pour prendre effet.
|
Component |
Parameter |
Config file |
When to adjust |
Constraints |
|
ResourceManager |
|
yarn-env.sh |
Ralentissement du ResourceManager dû à un volume élevé de petites tâches |
Valeur minimale : 1024. Redémarrez ResourceManager pour appliquer la modification. |
|
NodeManager |
|
yarn-env.sh |
Déclenchement du garbage collection (GC) complet car Shuffle Service occupe une mémoire excessive du NodeManager |
Redémarrez NodeManager pour appliquer la modification. |
|
WebAppProxyServer |
|
yarn-env.sh |
La valeur par défaut est insuffisante |
Redémarrez WebAppProxyServer pour appliquer la modification. |
|
TimelineServer |
|
yarn-env.sh |
La valeur par défaut est insuffisante |
Redémarrez TimelineServer pour appliquer la modification. |
|
TimelineServer |
|
yarn-env.sh |
Pression sur la mémoire directe de TimelineServer |
Valeur minimale : 512m. Redémarrez TimelineServer pour appliquer la modification. |
|
MRHistoryServer |
|
mapred-env.sh |
La valeur par défaut est insuffisante |
Redémarrez MRHistoryServer pour appliquer la modification. |
Configuration des ressources du cluster pour YARN
Dans l'onglet Configure de la page du service YARN de la console EMR, configurez les paramètres yarn-site.xml suivants.
Limites d'allocation du planificateur
Ces paramètres s'appliquent au niveau du cluster et contrôlent les plafonds et les seuils minimaux des ressources par conteneur. Les modifications nécessitent un redémarrage de ResourceManager.
|
Parameter |
Description |
Default |
When to adjust |
|
|
Mémoire maximale qu'un seul conteneur peut demander au planificateur |
— |
Augmentez cette valeur pour les charges de travail qui soumettent des tâches volumineuses dans un seul conteneur. Une valeur excessivement élevée peut entraîner une fragmentation des ressources. |
|
|
Mémoire minimale qu'un seul conteneur peut demander au planificateur |
— |
Ce paramètre nécessite rarement un ajustement. |
|
|
Nombre maximal de vCPU qu'un seul conteneur peut demander au planificateur |
32 |
Augmentez cette valeur pour les charges de travail qui soumettent des tâches volumineuses dans un seul conteneur. Une valeur excessivement élevée peut entraîner une fragmentation des ressources. |
|
|
Nombre minimal de vCPU qu'un seul conteneur peut demander au planificateur |
1 |
Ce paramètre nécessite rarement un ajustement. |
Limites de ressources du NodeManager
Ces paramètres s'appliquent au niveau du groupe de nœuds. Lors de leur configuration, sélectionnez Node group level configuration dans la console EMR ; sinon, la modification ne prendra pas effet. EMR prend en charge différents types d'instances au sein des groupes de nœuds, toutes les instances ECS d'un même groupe de nœuds partageant le même type d'instance. La configuration des ressources NodeManager au niveau du groupe de nœuds évite la surcharge des nœuds plus petits et la sous-utilisation des nœuds plus grands.
|
Parameter |
Description |
Default |
When to adjust |
|
|
Mémoire physique totale disponible pour les conteneurs via NodeManager |
Définie lors de la création du cluster en fonction du type d'instance |
Configurez ce paramètre en fonction de votre déploiement de cluster. Redémarrez NodeManager pour appliquer la modification. |
|
|
Nombre total de vCPU disponibles pour les conteneurs via NodeManager |
Nombre de vCPU correspondant au type d'instance. Pour les types d'instance à haute mémoire, la valeur par défaut correspond au double du nombre de vCPU d'un type d'instance à mémoire standard. |
Ajustez ce paramètre en fonction des caractéristiques de la charge de travail. Redémarrez NodeManager pour appliquer la modification. |
Relation entre la mémoire du planificateur et celle du NodeManager
La valeur de yarn.scheduler.maximum-allocation-mb doit être supérieure à celle de yarn.nodemanager.resource.memory-mb afin de garantir une planification correcte des tâches.
Tenez compte des points suivants lors de la gestion de ces deux paramètres :
EMR vous permet de configurer les deux paramètres lors de la création d'un cluster ou lors de la première mise à l'échelle horizontale par ajout d'un groupe de nœuds.
Lorsque vous mettez à niveau les spécifications d'instance d'un groupe de nœuds ou modifiez manuellement
yarn.nodemanager.resource.memory-mb,yarn.scheduler.maximum-allocation-mbn'est pas mis à jour automatiquement. Mettez-le à jour manuellement si nécessaire.Lors de la première configuration de
yarn.scheduler.maximum-allocation-mbpour un nouveau groupe de nœuds, ResourceManager n'est pas redémarré automatiquement. Redémarrez manuellement ResourceManager pour appliquer la modification.
Le redémarrage de ResourceManager peut entraîner l'échec des tâches en cours d'exécution. Effectuez le redémarrage pendant les heures creuses.