2017-09-11 9 views
0

Je luttais la mémoire de fil (physique + virtuel) pour comprendre comment fonctionne la gestion de la mémoire avec Spark sur fil:Spark sur l'utilisation

Mon spark-submit a

--executor-memory 48g 
--num-executors 2 

Quand je lance top -p <pids_of_2_yarn_containers/executors>

VIRT RES %MEM 
51.059g 0.015t ~4 (container 1) 
51.039g 0.012t ~3 (container 2) 

La mémoire totale du système est de 380g.

Et enfin, sur le fil quand je clique sur chacun des conteneurs page je peux voir:

Resource: 54272 Memory (container 1) 
Resource: 54272 Memory (container 2) 

Pourquoi chacune des mesures ci-dessus ne correspond pas? Je demande 48g sur chaque exécuteur d'étincelle, cependant YARN montre 54g, OS rapporte 15gb de mémoire physique utilisée (colonne RES en haut) et 51g de mémoire virtuelle utilisée (colonne VIRT).

Répondre

0

En fil-site.xml

yarn.scheduler.minimum-allocation-mb (Cette valeur de changements de fonction de la capacité de RAM de cluster) - L'allocation minimale pour chaque demande de conteneurs au RM, en MBs. Les demandes de mémoire inférieures à cette valeur ne prendront pas effet et la valeur spécifiée sera allouée au minimum et de manière similaire. Taille de conteneur maximale

yarn.scheduler.maximum-allocation-mb (Cette valeur varie en fonction de la capacité du cluster) allocation maximale pour chaque demande de conteneur à la RM, en Mo. Les demandes de mémoire supérieures à cette valeur ne prendront pas effet et seront limitées à cette valeur

yarn.nodemanager.resource.memory-mb - Quantité de mémoire physique, en Mo, pouvant être allouée aux conteneurs. Yarn.nodemanager.vmem-pmem-ratio - La limite supérieure de la mémoire virtuelle (mémoire physique + paginée) pour chaque tâche Map and Reduce est déterminée par le taux de mémoire virtuelle de chaque conteneur YARN autorisé. Ceci est défini par la configuration suivante et la valeur par défaut est 2.1

yarn.nodemanager.resource.cpu-vcores - Cette propriété contrôle la somme maximale des cœurs utilisés par les conteneurs sur chaque nœud.

Dans mapred-site.xml

mapreduce.map.memory.mb - Mémoire maximale chaque tâche de carte utilisera.

mapreduce.reduce.memory.mb - Mémoire maximale que chaque tâche de réduction utilisera.

mapreduce.map.java.opts - Taille de segment JVM pour la tâche de carte.

mapreduce.reduce.java.opts - Taille de segment JVM pour la tâche de carte.

paramètres Spark

La --executor mémoire/spark.executor.memory contrôle la taille du tas d'exécuteur testamentaire, mais JVMs peut également utiliser une mémoire de tas, par exemple pour cordes interné et des tampons d'octets directs. La valeur de la propriété spark.yarn.executor.memoryOverhead est ajoutée à la mémoire de l'exécuteur pour déterminer la demande de mémoire complète à YARN pour chaque exécuteur. La valeur par défaut est max (384, .07 * spark.executor.memory)

L'indicateur de ligne de commande --num-executors ou spark.executor.instance configuration property contrôle le nombre d'exécuteurs requis

Vous pouvez donc spécifier les valeurs de tous ces paramètres mentionnés ci-dessus. Cela aidera à calculer les allocations de mémoire dans votre cas.