Spark fil cluster vs client - comment choisir lequel utiliser?
L'étincelle docs ont le paragraphe suivant que desceibes la différence entre les fils de client et de fils de cluster:
Il y a deux déployer des modes qui peuvent être utilisés pour lancer des Étincelles applications sur le FILS. En mode cluster, l'Étincelle pilote s'exécute à l'intérieur d'une application de maîtriser le processus qui est géré par le FIL sur le cluster, et le client peut s'en aller après le lancement de l'application. En mode client, le pilote s'exécute dans le processus de client, et l'application de maître est utilisé uniquement pour demander des ressources à partir de FILS.
Je suppose il y a deux choix pour une raison. Si oui, comment voulez-vous choisir lequel utiliser?
Veuillez utiliser les faits pour justifier votre réponse, de sorte que cette question et une réponse(s) répond stackoverflow.
Il y a quelques questions similaires sur stackoverflow, toutefois, ces questions mettent l'accent sur la différence entre les deux approches, mais ne pas se concentrer sur quand on l'approche est plus adapté que les autres.
OriginalL'auteur Chris Snow | 2016-12-13
Vous devez vous connecter pour publier un commentaire.
Une commune de la stratégie de déploiement est de soumettre votre application à partir d'un ordinateur de la passerelle qui est physiquement co-localisé avec votre travailleur machines (par exemple Master nœud autonome EC2 cluster). Dans cette configuration, le client de mode est adéquat. En mode client, le pilote est lancé directement dans l'étincelle soumettre processus qui agit comme un client pour le cluster. L'entrée et la sortie de l'application est connectée à la console. Ainsi, ce mode est particulièrement adapté pour les applications qui impliquent le REPL (par exemple Étincelle shell).
Alternativement, si votre demande est présentée à partir d'une machine de mesure de la travailleuse machines (par exemple, en local sur votre ordinateur portable), il est courant de usecluster mode pour réduire la latence du réseau entre les pilotes et les exécuteurs testamentaires. Notez que le mode cluster est actuellement pas pris en charge pour Mesos clusters. Actuellement, seul le FIL prend en charge le mode cluster pour Python applications." -- La Soumission Des Demandes
Ce que je comprends, c'est que les deux stratégies d'utilisation du cluster à la répartition des tâches; la différence est là que le "programme pilote" s'exécute: localement par étincelle de soumettre, ou, également dans le cluster.
Lorsque vous devez utiliser l'une d'elles est détaillée dans la citation ci-dessus, mais j'ai fait aussi une autre chose: pour les gros pots, j'ai utilisé rsync pour copier sur le cluster (ou même nœud maître) avec 100 fois la vitesse du réseau, et ensuite soumis par le cluster. Cela peut être mieux que "le mode cluster" de grandes jarres. Notez que le client de mode n'a pas probablement transférer le bocal du maître. À ce moment, la différence entre les 2 est minime. Probablement en mode client est mieux quand le pilote est en veille la plupart du temps, de faire pleinement usage de cœurs sur la machine locale, et peut-être d'éviter de transférer le bocal du maître (même sur l'interface loopback un grand bocal prend un peu de secondes). Et avec le mode client vous pouvez transférer (rsync) le pot sur un nœud de cluster.
D'autre part, si le pilote est très, très gourmand en cpu ou I/O, le mode cluster peut être plus approprié, afin de mieux équilibrer le cluster (en mode client, la machine locale irait à la fois le pilote et en tant que grand nombre possible de travailleurs, ce qui représente plus de chargement et de faire que les tâches seront plus lentement, en faisant en sorte que l'ensemble du travail peut mettre fin à attendre pour un couple de tâches à partir de la machine locale).
Conclusion :
OriginalL'auteur Ram Ghadiyaram
Étincelle Travaux en cours d'Exécution sur le FILS
Lors de l'exécution de l'Étincelle sur le FIL, chaque Étincelle exécuteur s'exécute en tant que FILS de conteneur. Où MapReduce les horaires d'un conteneur et d'incendies en place d'une JVM pour chaque tâche, une Étincelle héberge plusieurs tâches dans le même conteneur. Cette approche permet à plusieurs ordres de grandeur plus rapide de la tâche de temps de démarrage.
Étincelle prend en charge deux modes pour l'exécution sur le FILS, “fil-cluster” et en mode “fil-client” mode. Globalement, fils de mode de cluster de sens que pour les emplois de production, tandis que le fil-mode client a du sens pour l'interactif et le débogage des utilisations où vous souhaitez voir votre demande de sortie immédiate.
De comprendre la différence qui exige la connaissance du FILS de l'Application Maître-concept. Dans le FIL, chaque instance de l'application est une Application de Maîtriser le processus, qui est le premier conteneur commencé pour cette application. L'application est responsable de la demande de ressources de la classe ResourceManager, et, lorsqu'ils sont affectés, disant NodeManagers pour commencer à conteneurs sur son nom. Demande de Maîtres d'éviter l'achat pour un client actif — le processus de démarrage de l'application peut aller loin et la coordination continue à partir d'un processus géré par le FIL en cours d'exécution sur le cluster.
Fil-mode cluster, le pilote s'exécute dans l'Application de Maître. Cela signifie que le même processus est à la fois responsable de la conduite de la demande et de demander des ressources à partir de FILS, et ce processus s'exécute à l'intérieur d'un récipient de FIL. Le client qui démarre l'application n'a pas besoin de rester dans les parages pour l'ensemble de sa durée de vie.
fil-mode cluster
Le fil-mode client, cependant, n'est pas bien adapté à l'utilisation de l'Étincelle de manière interactive. Spark applications qui nécessitent la saisie de l'utilisateur, comme la spark-shell et PySpark, besoin de l'Étincelle pilote à exécuter à l'intérieur du processus client qui déclenche l'Étincelle de l'application. Fil-mode client, la Demande de Maître est simplement de présenter à la demande exécuteur des conteneurs à partir de FILS. Le client communique avec ces conteneurs pour planifier le travail après leur départ:
fil-mode client
Ce tableau propose une liste concise des différences entre ces modes de jeu:
entrez la description de l'image ici
Référence: https://blog.cloudera.com/blog/2014/05/apache-spark-resource-management-and-yarn-app-models/
OriginalL'auteur Thirupathi Chavati