Publier cette question pour savoir comment Apache Spark collecte et coordonne les résultats des exécuteurs.

Supposons que j'exécute un travail avec 3 exécuteurs. Mon DataFrame est partitionné et fonctionne sur ces 3 exécuteurs. Alors maintenant, quand j'exécute une action count () ou collect () sur le DataFrame comment spark va coordonner les résultats de ces 3 exécuteurs?

val prods = spark.read.format("csv").option("header", "true").load("testFile.csv")

prods.count(); // How spark collect data from three executors? Who will coordinate the result from different executors and give it to driver?
0
ѕтƒ 4 nov. 2019 à 09:11

2 réponses

Oki, quelle partie n'êtes-vous pas clair?

Permettez-moi de le rendre générique, le programme client / pilote démarre et demande au maître local / autonome maître / fil alias Cluster Manager que le programme de pilote veut des ressources pour effectuer des tâches, alors allouez le pilote avec les travailleurs pour cela.Le gestionnaire de cluster en retour alloue les travailleurs , lance les exécuteurs sur les nœuds de travail et donne au programme client les informations que vous pouvez utiliser ces travailleurs pour faire votre travail.Ainsi, les données sont divisées dans chaque nœud de travail et les tâches / transformations parallèles sont effectuées.Une fois collect () ou count () est appelé (je suppose que c'est la dernière partie du travail). Ensuite, chaque exécuteur renvoie son résultat au pilote.

0
tarun 4 nov. 2019 à 09:18

prods.count (); // Comment spark collecte-t-elle les données de trois exécuteurs? Qui coordonnera le résultat des différents exécuteurs et le remettra au conducteur?

Lorsque vous effectuez spark-submit, vous spécifiez master un programme client (pilote) commence à s'exécuter sur le fil, si le fil est spécifié master ou local si local spécifié. https://spark.apache.org/docs/latest/submitting-applications.html

Puisque vous avez ajouté tag yarn dans la question, je suppose que vous voulez dire yarn-url, donc yarn lance le programme client (pilote) sur l'un des nœuds du cluster et enregistre et affecte des travailleurs (exécuteurs) au pilote afin que la tâche soit exécutée sur chaque nœud.Chaque transformation / action est exécutée en parallèle sur chaque nœud de travail (exécuteur) .Une fois que chaque nœud a terminé le travail, il renvoie les résultats au programme de pilote.

0
tarun 4 nov. 2019 à 07:15