2012-02-21 2 views
8

J'ai lu environ Storm et jouer avec les exemples de storm-starter.Bon usage de la tempête?

Je crois que j'ai compris le concept et qu'il s'applique très bien à de nombreux cas. J'ai un projet de test que je veux faire pour en savoir plus, mais je me demande si Storm est vraiment adapté à cela.

Le problème conceptuel que j'ai est avec la définition 'streaming'. Il semble que Storms fonctionnera comme un charme qui s'abonne à un flux et le traite en temps réel, mais je n'ai pas vraiment de flux, mais plutôt une collection finie de données que je veux traiter.

Je sais qu'il y a hadoop pour cela, mais je suis intéressé par les capacités en temps réel de Storm ainsi que d'autres points intéressants que Nathan, qui a écrit Storm, mentionne dans ses entretiens.

Alors je me demandais, est-ce que les gens écrivent des becs qui interrogent les API non-streaming, puis diff les résultats pour émuler un flux?

Le deuxième point important est que les topologies Storm ne finissent jamais le traitement avant d'être interrompues, ce qui ne s'applique pas à mon cas. Je voudrais que ma topologie sache qu'une fois ma liste finie de données source terminée, le traitement peut se terminer et un résultat final peut être émis. Donc, est-ce que tout cela a du sens en termes de tempête ou est-ce que je regarde la mauvaise chose? Si oui, quelles alternatives proposez-vous pour ce type de besoins de calcul parallèle en temps réel?

Merci!

Répondre

6

J'ai trouvé la réponse dans le storm google group. Il semble que les topologies DRCP émettent un tuple avec des paramètres reçus par le flux DRCP en tant que flux, puis indiquent à nouveau quand le traitement est terminé (Utilisation d'un identifiant unique appelé Request ID).

Dans ce même fil dit que hadoop est probablement le mieux adapté pour ces cas, à moins que les données ne sont pas assez grandes et peuvent être traitées entièrement tout le temps.

0

Il est certainement possible d'utiliser Storm pour traiter une collection de données finie et d'arrêter une fois que tous les éléments ont été traités. Les topologies DRPC sont un moyen de le faire, mais rouler votre propre solution n'est pas difficile. L'idée est de garder trace des éléments de votre ensemble de données finis qui ont été traités ou non, qui est facilement fait dans le bec en utilisant les méthodes ack() et fail().

0

Si vous recherchez une solution de traitement par lots rapide, interactivement utilisable et compatible avec les développeurs, vous pouvez regarder Apache Spark au lieu de Storm. Trident/DRPC est plus utile lorsque vous souhaitez exécuter des requêtes sur votre calcul en continu.