Tempête-Kafka plusieurs becs, comment répartir la charge de travail?
Je suis en train de partager les tâches entre plusieurs becs. J'ai une situation, où je reçois un tuple/message à la fois de source externe et je veux avoir plusieurs instances d'un bec verseur, l'intention principale derrière est le partage de la charge et augmenter l'efficacité des performances.
Je peux faire la même avec un Bec verseur lui-même, mais j'ai envie de partager la charge sur plusieurs becs. Je ne suis pas en mesure d'obtenir la logique de répartir la charge. Depuis le décalage des messages ne seront pas connus jusqu'à ce que le particulier bec finitions de la consommation de la partie (j'.e, basée sur la taille du tampon set).
Quelqu'un peut s'il vous plaît mettre quelque lumière sur la façon de travailler sur la logique/algorithme?
Merci d'avance pour votre temps.
Mise à jour en réponse à des réponses:
Maintenant utilisée multi-partitions sur Kafka (j'.e 5
)
Voici le code utilisé:
builder.setSpout("spout", new KafkaSpout(cfg), 5);
Testé par les inondations avec 800 MB
données sur chaque partition, et il a fallu ~22 sec
de finir de lire.
Encore une fois, utilisé le code avec parallelism_hint = 1
c'est à dire builder.setSpout("spout", new KafkaSpout(cfg), 1);
Maintenant, il a pris plus de ~23 sec
! Pourquoi?
Selon Tempête Docs setSpout() déclaration est la suivante:
public SpoutDeclarer setSpout(java.lang.String id,
IRichSpout spout,
java.lang.Number parallelism_hint)
où,
parallelism_hint - le nombre de tâches que doit être attribué à l'exécution de ce bec. Chaque tâche s'exécute sur un fil dans un processus quelque part autour de l'amas.
OriginalL'auteur Amol M Kulkarni | 2013-08-16
Vous devez vous connecter pour publier un commentaire.
J'étais tombé sur une discussion dans tempête de l'utilisateur de discuter de quelque chose de similaire.
Lire Relation entre le Bec de parallélisme et le nombre de kafka partitions.
2 choses à noter lors de l'utilisation de kafka-bec à la tempête
Donc, si nous avons un cas où kafka partitions par hôte est configuré à 1 et le nombre d'hôtes est à 2. Même si on le bec de parallélisme que 10, la valeur max qui est repected ne seront 2, qui est le nombre de partitions.
Comment mentionner le numéro de la partition à la Kafka-bec?
Comme vous pouvez le voir, ici, les courtiers peuvent être ajoutés à l'aide de
hosts.add
et la partion nombre est spécifié comme 4 dans lenew KafkaConfig.StaticHosts(hosts, 4)
extrait de code.Comment oublier le parallélisme allusion à la Kafka-bec?
Vous pouvez parler de la même lors de l'ajout de votre bec dans la topologie à l'aide de
setSpout
méthode. Ici 4 est le parallélisme de l'indice.Plus de liens qui pourraient t'aider
Comprendre-les-parallélisme-de-la Tempête-la topologie
quelle-est-la-tâche-en-twitter-tempête-parallélisme
Avertissement:
!! je suis nouveau à la fois l'orage et de la java !!!! Ainsi les pls modifier/ajouter si son nécessaire de certains où les.
OriginalL'auteur mithunsatheesh