Supposons pour la suite que seule une Étincelle d'emploi est en cours d'exécution à chaque point dans le temps.
Ce que j'ai jusqu'à présent
Voici ce que je comprends ce qui se passe dans Spark:
- Lorsqu'un
SparkContext
est créé, chaque travailleur nœud démarre un exécuteur testamentaire. Les exécuteurs sont des processus distincts (JVM), qui se connecte au programme pilote. Chaque interprète a le pot de la pilote du programme. Fermeture d'un pilote, s'arrête, les exécuteurs testamentaires. Chaque interprète peut contenir des partitions. - Lorsqu'une tâche est exécutée, un plan d'exécution est créé selon la lignée graphique.
- L'exécution du travail est divisé en étapes, où les étapes contenant autant de voisins (dans la lignée graphique) et les transformations de l'action, mais pas de mélange. Ainsi, les étapes sont séparées par des remaniements.
Je comprends que
- Une tâche est une commande envoyée par le conducteur d'un exécuteur testamentaire par la sérialisation de l'objet de Fonction.
- L'exécuteur désérialise (avec le jar du pilote), la commande (de la tâche) et s'exécute sur une partition.
mais
Question(s)
Comment puis-je diviser la scène en ces tâches?
Plus précisément:
- Sont les tâches que déterminée par les transformations et les actions ou peut-être plusieurs transformations/actions dans une tâche?
- Sont les tâches déterminées par la partition (par exemple, une tâche par par étape par partition).
- Sont les tâches déterminées par les nœuds (par exemple, une tâche par étape par nœud)?
Ce que je pense (seulement partielle de la réponse, même si à droite)
Dans https://0x0fff.com/spark-architecture-shufflele shuffle est expliqué avec l'image
et j'ai l'impression que la règle est
chaque étape est divisée en #nombre de partitions de tâches, sans aucun égard pour le nombre de nœuds
Pour ma première image, je dirais que j'aurais 3 carte tâches et 3 réduire les tâches.
Pour l'image de 0x0fff, je dirais il y a 8 carte tâches et 3 réduire les tâches (en supposant qu'il y a seulement trois d'orange et trois vert foncé fichiers).
Des questions ouvertes dans tous les cas
Est-ce exact? Mais même si c'est correct, mes questions ci-dessus ne sont pas tous répondu, parce que c'est toujours ouverte, si de multiples opérations (par exemple, plusieurs cartes) sont dans une tâche ou sont séparés dans l'une des tâches par opération.
Ce que disent les autres
Ce qui est une tâche Spark? Comment l'Étincelle travailleur d'exécuter le fichier jar? et Comment ne l'Apache Spark planificateur de diviser des fichiers en plusieurs tâches? sont similaires, mais je n'ai pas l'impression que ma question a été répondue clairement là.