2013-06-17 16 views
5

Ich entwerfe einen Prototyp Echtzeitmonitor für die Verarbeitung ziemlich großer Mengen (> 30G/Tag) von Streaming-numerischen Daten. Ich würde das gerne in Clojure schreiben, da die Sprache gut zu der Art von "Observer + State Machine" -System passt, mit dem dies wahrscheinlich enden wird.Lamina vs Storm

Die zwei Hauptkandidaten, die ich für einen Rahmen gefunden habe, sind Lamina und Storm. Es gibt auch Riemann und Pulse, aber ersteres scheint eher eine vollständige Lösung als ein Framework zu sein, und ich möchte mich lieber nicht auf ein endgültiges Design festlegen; Das Repo von Pulse sieht ein wenig nicht gepflegt aus?

Was ich gerne wissen würde ist; Für welche Arten von Daten- und Arbeitsfluss sind diese beiden Projekte optimiert? Storm scheint reifer zu sein, aber Lamina scheint kompostierbarer und "Clojureic" (mein Hintergrund ist Python, also neige ich dazu, dies hoch zu bewerten).

Was ich aus der Lektüre online gefunden habe:

  • Sturm scheint Big Data (Strom) fokussiert zu sein, wobei der Kern gerade Java mit einem Clojure DSL ist. Es sieht so aus, als habe es für eine Anzahl von existierenden Datenquellen bereits vorbereitete Handler.

  • Lamina ist mehr eine leichte, wiederverwendbare Komponente, die die Clojure-Sache der Codierung zu Abstraktionen macht, was bedeutet, dass es reused as a base for other eventing systems sein kann. Die Datenquellen müssen in Code behandelt werden.

  • Beide haben einen nützlichen Satz von Aggregation/Splitting/Berechnung Bibliothek Funktionen aus der Box. Lamina Graphviz Integration ist eine nette Geste.

Antwort

4

Sturm enthält Cluster-Management und den Umgang mit ausgefallenen Knoten in der Strömung, weil es entworfen wurde, eine Art „wie Hadoop, aber für das Streaming“ zu sein, was von dem, was ich Ihre Anforderungen zu verstehen scheint, um Ihre Nutzung näher zu sein Fall.

+0

Es gibt eine Menge Sachen gebündelt, also werde ich es versuchen und sehen, ob es übertrieben ist. Lamina, von meinem Basteln her, scheint ein bisschen zu niedrig, obwohl sehr stromlinienförmig und elegant. Vielen Dank! – CLF

1

Lamina scheint eine gute Wahl zu sein, aber es scheint völlig zu fehlen die Killer-Funktion von Storm - Cluster-Computing-Management. Ein Storm-Cluster kümmert sich um den größten Teil der schmutzigen Arbeit der Verteilung Ihrer Berechnungen über einen Cluster von Knoten, sodass Sie sich nur auf Ihre Geschäftslogik konzentrieren können, solange Sie sie in das Storm-Framework einfügen. Lamina, von dem, was ich sehen kann, bietet eine gute Möglichkeit, Ihre Berechnungen zu organisieren, aber dann müssen Sie auf alle Details der Skalierung achten, wenn Sie das brauchen.

8

Storm ist wahrscheinlich keine schlechte Wahl, aber "über 30 GB pro Tag" von numerischen Daten sind keine großen Daten, es sind winzige Daten. Jeder semi-moderne Computer kann so viele Daten problemlos auf einem Knoten mit Lamina verarbeiten. Vielleicht möchtest du sowieso mit Storm gehen, so dass du, sobald du in einen Bereich kommst, in dem du mehr Server benötigst, leicht skalieren kannst, aber ich stelle mir vor, dass es einige anfängliche Reibereien gibt, um Storm einzurichten (und einige andauernde Reibung bei der Wartung des Clusters) , die verschwendet werden, wenn Sie nie größer werden müssen.