web-dev-qa-db-fra.com

Quelle est la relation entre les travailleurs, les instances de travail et les exécuteurs?

En mode autonome Spark, il existe des noeuds maîtres et des noeuds ouvriers.

Voici quelques questions:

  1. Est-ce que 2 instance de travail signifie un noeud de travail avec 2 processus de travail?
  2. Chaque instance de travail contient-elle un exécuteur pour une application spécifique (qui gère le stockage, la tâche) ou un nœud de travail contient-il un exécuteur?
  3. Existe-t-il un organigramme expliquant comment spark), tel que le nombre de mots?
62
edwardsbean

Je suggère de lire le Docs du cluster Spark d’abord, mais plus encore ceci article de blog Cloudera expliquant ces modes.

Votre première question dépend de ce que vous entendez par "instances". Un nœud est une machine et il n’ya pas de bonne raison d’exécuter plus d’un ouvrier par machine. Donc, deux nœuds de travail signifient généralement deux machines, chacune étant un Spark travailleur.

Les travailleurs détiennent de nombreux exécutants, pour de nombreuses applications. Une application a des exécuteurs sur de nombreux travailleurs.

Votre troisième question n'est pas claire.

48
Sean Owen

Pour en arriver à d’autres bonnes réponses, j’aimerais décrire avec quelques images.

Dans Spark en mode autonome, il existe des noeuds maître et des noeuds de travail.

Si nous représentons à la fois le maître et les ouvriers au même endroit pour le mode autonome.

Spark Standalone mode

Si vous êtes curieux de savoir comment Spark fonctionne avec YARN? Consultez ce message Spark on YARN

1. Est-ce que 2 instance de travail signifie un noeud de travail avec 2 processus de travail?

En général, nous appelons instance de travailleur en tant qu'esclave, car il s'agit d'un processus à exécuter spark tâches/travaux . Mappage suggéré pour le noeud (une machine physique ou virtuelle) et le travailleur est,

1 Node = 1 Worker process

2. Chaque instance de travail contient-elle un exécuteur pour une application spécifique (qui gère le stockage, la tâche) ou un nœud de travail contient-il un exécuteur?

Oui, un noeud de travail peut contenir plusieurs exécuteurs (processus) s'il dispose de suffisamment de CPU, de mémoire et de stockage.

Vérifiez le noeud Worker dans l'image donnée. A Worker node in cluster

BTW, nombre d'exécuteurs dans un noeud de travail à un moment donné dépend entièrement de la charge de travail du cluster et possibilité du noeud d'exécuter combien d'exécuteurs.

3. Existe-t-il un organigramme expliquant comment spark runtime?

Si nous examinons l'exécution de Spark prospective sur un gestionnaire de ressources pour un programme, qui join deux rdds et effectuons une opération reduce, alors filter

Spark runtime for a sample code

HIH

32
mrsrinivas

Je sais que c'est une vieille question et la réponse de Sean était excellente. Mon article porte sur SPARK_WORKER_INSTANCES dans le commentaire de MrQuestion. Si vous utilisez Mesos ou YARN en tant que gestionnaire de cluster, vous pouvez exécuter plusieurs exécuteurs sur le même ordinateur avec un seul ouvrier. Il est donc inutile d'exécuter plusieurs ouvriers par ordinateur. Toutefois, si vous utilisez le gestionnaire de cluster autonome, il ne permet toujours qu'un seul exécuteur par processus de travail sur chaque ordinateur physique. Ainsi, si vous avez une machine très grande et que vous souhaitez y exécuter plusieurs exécuteurs, vous devez démarrer plus d’un processus de travail. C'est ce à quoi SPARK_WORKER_INSTANCES dans spark-env.sh est destiné. La valeur par défaut est 1. Si vous utilisez ce paramètre, assurez-vous de définir explicitement SPARK_WORKER_CORES afin de limiter le nombre de cœurs par travailleur, sinon chaque travailleur tentera utiliser tous les noyaux.

Cette limitation de gestionnaire de cluster autonome devrait bientôt disparaître. Selon ce SPARK-1706 , ce problème sera corrigé et publié dans Spark 1.4.

30
Lan

Comme le disait Lan, l’utilisation de plusieurs instances de travail n’est pertinente que dans le mode autonome. Il existe deux raisons pour lesquelles vous souhaitez avoir plusieurs instances: (1) le collecteur de pauses ordures peut nuire au débit des machines virtuelles de grande taille (2) Une taille de segment de mémoire supérieure à 32 Go ne peut pas utiliser CompressedOoops.

En savoir plus sur comment configurer plusieurs instances de travail .

7
Uli Bethke