9
votes

Spark Worker Memory

J'ai configuré une étincelle (1.6) cluster autonome. Avoir 1 maître et ajouté 3 machines sous le fichier Conf / Slaves en tant que travailleurs. Même si j'ai alloué la mémoire de 4 Go à chacun de mes ouvriers dans Spark, pourquoi n'utilise-t-il que 1024 Mo lorsque l'application est en cours d'exécution? Je voudrais que cela utilise tous les 4 Go alloués. Aidez-moi à comprendre où et ce que je fais mal.

Ci-dessous est la capture d'écran de la page Spark Master (lorsque l'application est en cours d'exécution à l'aide de Spark-Soumettre) dans laquelle la colonne mémoire indique 1024,0 Mo utilisé entre crochets à côté de 4,0 Go.

J'ai aussi essayé de définir - option de mémoire 4G avec Spark-Soumettre et cela ne fonctionne pas (comme suggéré dans Comment changer de mémoire par nœud pour Apache Spark Worker ).

Ce sont les options que j'ai définies dans le fichier Spark-env.sh

Exporter spark_worker_cores = 3

Export Spark_worker_Memory = 4G

Export Spark_worker_Instances = 2

 Entrez la description de l'image ici


0 commentaires

3 Réponses :


1
votes

Le paramètre que vous recherchez est exécutant-mémoire Essayez de fournir à votre application Spark lorsque vous le démarrez.

- exécuteur-mémoire 4G

Lorsque vous définissez la mémoire ouvrière à 4G, le plus grand exécuteur que vous exécutez sur ce travailleur est de 4G. PS: Vous pouvez avoir des configurations différentes (chacune ayant une mémoire de travail différente).


1 commentaires

Comme si j'avais mentionné dans mon message d'origine, j'ai essayé l'option -executor-Memory 4G lorsque je démarre ma candidature et il n'y a toujours pas de changement. Merci.



5
votes

Une autre solution de contournement est d'essayer de définir les paramètres suivants à l'intérieur du Conf / Spark-par défaut.conf Fichier: xxx

une fois que vous avez défini ci-dessus (seulement le dernier Ligne dans votre cas) Arrêtez tous les travailleurs à la fois et redémarrez-les. Il est préférable d'initialiser la mémoire des exécuteurs de cette façon, car votre problème semble être qu'aucun exécuteur ne peut allouer toute la mémoire disponible de son travailleur.


2 commentaires

Où il doit être fixé. Cela doit être dans le noeud maître (pilote ???). Dans mon cas, le maître et le pilote sont les mêmes. Une fois que j'ai défini le Spark.Executor.Memory en tant que 3G en Spark-Parfault.Conf, la mémoire utilisée a augmenté à 3G. Peut-être que c'était dans la documentation et je l'ai manqué. Mais merci pour le début. Je vais donc marquer cela comme réponse.


Je vous en prie. De ma compréhension Passer le paramètre Spark.Executor.Memory via le script initialise l'exécuteur sur le travailleur avec la mémoire spécifiée. Bien que le drapeau - EXECTOR-EXECTOR-EXECTORUT-MEMORY sur le pilote définit la quantité de mémoire réservée à partir de chaque exécuteur afin que le travail de soumission puisse être exécuté.



0
votes

Créer un fichier appelé Spark-env.sh dans l'annuaire Spark / Conf. ajouter cette ligne Spark_Executeur_Memory = 4G


0 commentaires