Nous créons un système composé de plusieurs applications Spark Streaming avec chaque application ayant plusieurs récepteurs. Autant que j'ai compris, chaque récepteur a besoin de son propre noyau dans le cluster. Nous avons besoin de plusieurs récepteurs pour accueillir les pics, mais nous n'en avons pas besoin tout le temps. Les applications sont assez petites et ne font qu'une seule tâche afin de les (re) soumettre sur le cluster sans distraire les autres tâches &.Utilisation principale des applications Spark Streaming
1) En supposant que nous ayons 5 tâches avec 5 récepteurs chacune, nous aurions besoin d'au moins 25 cœurs dans le cluster seulement pour que les récepteurs puissent fonctionner + les cœurs pour le traitement. Est-ce correct?
2) Y a-t-il une possibilité de faire une allocation de ressources plus dynamique ou est-ce qu'un noyau est strictement lié à un récepteur?
3) J'ai jeté un coup d'oeil sur le serveur de repos d'étincelles qui offre la possibilité de partager le contexte d'étincelle sur différents travaux. Pouvez-vous penser à avoir un SparkStreamingContext pour tous les Jobs (~ 100)?
Nous exécutons le cluster en mode autonome avec un cluster Cassandra sur les mêmes noeuds.
merci pour la réponse. 1. L'approche directe serait une option, si nous utilisions Kafka ;-) 2. J'ai appris (après avoir demandé ici) que l'allocation dynamique n'est pas encore supportée pour Spark Streaming. Au moins pas la mise à l'échelle automatique, mais seulement en l'implémentant soi-même. 3. Nous utilisons plusieurs threads dans une seule application Spark. Cela semble ok jusqu'à présent, mais nous avons encore quelques problèmes avec les frais généraux de démarrage des tâches. Cela nécessite une certaine optimisation. – mniehoff