2016-09-01 7 views
2

Je construis une application Spark, dans laquelle je soumets plusieurs travaux (pyspark). J'utilise des fils pour les faire fonctionner en parallèle, et aussi je suis en train: conf.set (« spark.scheduler.mode », « FAIR »)spark schedulingMode

encore, je vois les travaux sont exécutés en série de manière FIFO. Ai-je raté quelque chose?

EDIT: Après avoir écrit à la liste de diffusion Spark, je suis arrivé deux ou trois choses plus:

je manque totalement ce dernier point

+0

[Apparemment pas] (http://spark.apache.org/docs/latest/job-scheduling.html#scheduling-within-an-application). –

+1

J'ai lu la documentation, mais je peux vous assurer qu'ils fonctionnent toujours en mode FIFO, sans round robin –

+0

What [master] (http://spark.apache.org/docs/latest/submitting-applications.html# master-urls) url avez-vous passé? –

Répondre

0

Apparemment, l'étincelle ne supporte pas le filetage pour tous les types d'emplois. Vous pouvez uniquement soumettre un travail en parallèle s'il s'agit d'une action d'étincelle .

À l'intérieur d'une application Spark donnée (instance SparkContext), plusieurs tâches parallèles peuvent s'exécuter simultanément si elles ont été soumises à partir de threads distincts. Par "travail", dans cette section, nous entendons une action Spark (par exemple, enregistrer, collecter) et toutes les tâches qui doivent être exécutées pour évaluer cette action. Le planificateur Spark est entièrement sécurisé pour les threads et prend en charge ce cas d'utilisation pour activer les applications qui servent plusieurs requêtes (par exemple, des requêtes pour plusieurs utilisateurs).

s'il vous plaît suivre cette link

0

Combien de exécuteurs avez-vous?

Si vous avez 1 exécuteur, FIFO est identique à FAIR. Je le dis parce que, par défaut, le mode autonome crée 2 exécuteurs et en mode «cluster», votre travail prendrait 1 pour le pilote et 1 pour l'exécuteur.

Vous avez donc besoin de 4 exécuteurs pour exécuter 2 tâches en mode cluster.