Je suis nouveau sur Apache Spark et je viens d'apprendre que Spark prend en charge trois types de cluster:
Depuis que je suis nouveau sur Spark, je pense que je devrais essayer Standalone premier. Mais je me demande lequel est le recommandé. Supposons qu'à l'avenir, je dois créer un grand cluster (des centaines d'instances), à quel type de cluster dois-je accéder?
Je pense que les meilleurs pour répondre à cette question sont ceux qui travaillent sur Spark. Donc, de Learning Spark
Commencez avec un cluster autonome s'il s'agit d'un nouveau déploiement. Le mode autonome est le plus facile à configurer et fournira presque toutes les mêmes fonctionnalités que les autres gestionnaires de clusters si vous utilisez uniquement Spark.
Si vous souhaitez exécuter Spark avec d'autres applications ou utiliser des fonctionnalités plus complètes de planification des ressources (par exemple, des files d'attente), YARN et Mesos fournissent ces fonctionnalités. Parmi celles-ci, YARN sera probablement préinstallé dans de nombreux Distributions Hadoop.
Un des avantages de Mesos par rapport au mode autonome et au mode YARN réside dans son option de partage fine qui permet aux applications interactives telles que le Spark de réduire l’allocation de leur processeur entre les commandes. Cela le rend attrayant dans les environnements. où plusieurs utilisateurs exécutent des shells interactifs.
Dans tous les cas, il est préférable d'exécuter Spark sur les mêmes nœuds que HDFS pour un accès rapide au stockage. Vous pouvez installer manuellement Mesos ou le gestionnaire de cluster autonome sur les mêmes nœuds, ou la plupart des distributions Hadoop. installez déjà YARN et HDFS ensemble.
Spark Standalone Manager: Gestionnaire de cluster simple, inclus avec Spark, facilite la configuration d'un cluster. Par défaut, chaque application utilise tous les nœuds dans le cluster.
Quelques avantages de YARN par rapport à Standalone & Mesos:
[~ # ~] yarn [~ # ~]vous permet de partager dynamiquement et de configurer de manière centralisée le même pool de ressources de cluster entre tous les environnements exécutés sur [~ # ~ ] fil [~ # ~].
Vous pouvez tirer parti de toutes les fonctionnalités de [~ # ~] fil [~ # ~]ordonnanceurs/ordonnanceurs pour catégoriser, isoler et hiérarchiser les charges de travail.
Le mode autonome Spark requiert que chaque application exécute un exécuteur sur chaque nœud du cluster; alors qu'avec YARN, vous choisissez le nombre d’exécuteurs à utiliser
[~ # ~] yarn [~ # ~]gère directement la localisation des bâtis et des machines dans vos demandes, ce qui est pratique.
Le modèle de demande de ressource est étrangement inversé dans Mesos. Dans [~ # ~] fil [~ # ~], vous (le framework) demandez des conteneurs avec une spécification donnée et indiquez les préférences de localité. Dans Mesos, vous recevez des "offres" de ressources et choisissez d'accepter ou de rejeter celles-ci en fonction de votre propre politique de planification. Le modèle Mesos est sans doute plus flexible, mais apparemment plus de travail pour la personne qui met en œuvre le cadre.
Si vous avez déjà un gros cluster Hadoop en place, [~ # ~] yarn [~ # ~]est le meilleur choix.
Le gestionnaire autonomerequiert que l'utilisateur configure chacun des nœuds avec le secret partagé. Le module d’authentification par défaut Mesos’, Cyrus SASL, peut être remplacé par un module personnalisé. [~ # ~] fil [~ # ~]est sécurisé pour l'authentification, l'autorisation de niveau de service, l'authentification pour les consoles Web et la confidentialité des données. L'authentification Hadoop utilise Kerberos pour vérifier que chaque utilisateur et service est authentifié par Kerberos.
Liens utiles:
spark page de documentation
agildata article
Autonome est assez clair, comme mentionné dans les autres, il ne devrait être utilisé que lorsque vous avez spark seulement la charge de travail.
Entre fil et mesos, une chose à considérer est le fait que, contrairement à mapreduce, spark job saisit les exécuteurs et le conserve pendant toute la durée d'un travail. Où mapreduce permet d'obtenir et de libérer des mappeurs réducteurs sur la durée de vie.
si vous avez depuis longtemps spark des travaux qui, au cours de leur durée de vie, n'utilisent pas toutes les ressources qu'il a reçues au début, vous souhaiterez peut-être partager ces ressources avec une autre application et pouvoir les utiliser. faites uniquement via Mesos ou Spark dynamique. https://spark.Apache.org/docs/2.0.2/job-scheduling.html#scheduling-across-applications Donc avec fil, le seul moyen d'avoir une allocation dynamique pour spark est en utilisant spark a fourni une allocation dynamique. Le fil n'interférera pas dans ce processus alors que Mesos Encore une fois, ce point n’est important que si vous avez une longue application spark et que vous souhaitez l’agrandir et la réduire dynamiquement de manière dynamique.