-2
votes

Le numéro de tâche peut-il être supérieur au noyau exécuteur?

Que se passe-t-il lorsque le nombre de tâches d'étincelles soit plus grand que le noyau exécuteur? Comment ce scénario est-il traité par Spark


4 commentaires

Nombre de noyaux exécutants?


Je demande à propos d'un scénario était le numéro de Core exécutant> Nombre total de tâches


Je vais ajouter du nombre de.


Pouvez-vous accepter une réponse selon le protocole sur ce site Pls?


3 Réponses :


2
votes

Je pense que la question est un peu éteinte. Il est peu probable que ce que vous demandez. Pourquoi?

  • Avec beaucoup de données, vous aurez de nombreuses partitions et vous pouvez repartitionner.
  • Dites que 10 000 partitions équivalent à 10 000 tâches.
  • Un exécuteur (noyau) servira une partition efficacement une tâche (mappage 1: 1) et lorsque vous avez terminé de passer à la tâche suivante, jusqu'à ce que toutes les tâches soient terminées dans la scène, puis commencera ensuite (si elle est en plan / DAG).
  • Il est plus probable que vous n'ayez pas de groupe de 10 000 noyaux exécutants au plus de lieux (pour votre application), mais il y a des sites qui ont cela, c'est vrai.

  • Si vous avez plus de noyaux alloués que nécessaire, ils restent inactifs et non utilisables pour les autres. Mais avec une allocation de ressources dynamique, les exécuteurs peuvent être abandonnés. J'ai travaillé avec le fil et l'étincelle autonome, comment c'est avec K8, je ne suis pas sûr.

  • Les transformations modifient ce dont vous avez besoin en termes de ressources. Par exemple. une commande par peut entraîner moins de partitions et peut donc contribuer à l'oisiveté.


0 commentaires

2
votes

Oui, ce scénario peut arriver. Dans ce cas, certains cœurs seront inactifs. Scénarios où cela peut arriver:

  • Vous appelez coalesce ou repartition avec un certain nombre de partitions
  • Vous utilisez le nombre par défaut de spartik.sql.shuffle.partitions (= 200) Et vous avez plus de 200 cœurs disponibles. Ce sera un problème pour Joignons, tri et agrégation. Dans ce cas, vous voudrez peut-être augmenter spartik.sql.shuffle.partitions

    Notez que même si vous avez suffisamment de tâches, certaines (ou la plupart) d'entre eux pourraient être vides. Cela peut se produire si vous avez une grosse données de données ou que vous faites quelque chose comme groupby () ou ou sans une partition . Dans ce cas, les partitions vides seront terminées immédiatement, tournant la plupart de vos noyaux inactifs


0 commentaires

2
votes

est-ce lié à Cette question?

Quoi qu'il en soit, vous pouvez vérifier cela Cloudera Comment . Dans la section "Allocation de ressources de réglage", il est expliqué qu'une application d'étincelle peut demander aux exécuteurs en allumant la propriété d'allocation dynamique. Il est également important de définir des propriétés de cluster tels que Num-Exécuteurs, Executor-Cooks, la mémoire exécutante ... de sorte que Spark demande s'intégrer à ce que votre gestionnaire de ressources est disponible.


0 commentaires