En mode autonome Spark, il existe des noeuds maîtres et des noeuds ouvriers.
Voici quelques questions:
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.
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.
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.
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 rdd
s et effectuons une opération reduce
, alors filter
HIH
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.
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 .