Live data from Hacker News

History of Apache Storm and Lessons Learned

nathanmarz.com

11–20 of 22 posts

Re: History of Apache Storm and Lessons Learned

#11
post #7
post #4

I've seen Samza's documentation comparing itself to Storm, I wonder what the reverse-perspective is...

As I understood it Samza ties in with Hadoop/HBase, so if you already have that, it might be easier (or even possible at all) to integrate, whereas Storm has nothing to do with with that and only does stream processing.

Samza can run on a Hadoop 2 cluster using YARN. As far as I know, there is no other connection to Hadoop or HBase.

Re: History of Apache Storm and Lessons Learned

#12

Earlier quoted context omitted.

Interesting question and response. I haven't used either but read about both systems independently. A bit more googling and I found: http://www.slideshare.net/gschmutz/kafka-andstromeventproces... Slides 42 and 43 describe an architecture with all three ... hadoop, storm and kafka. Seems like a beast and I don't have applications but pretty cool combo of technologies.

http://manning.com/marz/ - this is often the trifecta used in the "lambda architecture", coined by nathan marz. This is also the system they built @ backtype to do their real-time analytics system.

Also worth checking out http://radar.oreilly.com/2014/07/questioning-the-lambda-arch... from Jay Kreps, who's part of the Kafka braintrust.

Re: History of Apache Storm and Lessons Learned

#13
post #5

How does it compare to Apache Kafka? (I haven't used either.)

Complementary technologies, often used together. In fact, in Storm 0.9.x, Storm actually bundles a JVM implementation of a Storm Spout that plugs directly into Kafka:

https://github.com/apache/storm/tree/master/external/storm-k...

Re: History of Apache Storm and Lessons Learned

#14
I think I get the concept (and it's interesting); but I'm a bit baffled by the terminology:

> That led me to the idea of "spouts" and "bolts" – a spout produces brand new streams, and a bolt takes in streams as input and produces streams as output.

Spout I can grasp; why "bolt"? Why these two, together? I'd have really appreciated an extra sentence or two here as to why he chose these terms -- naming is so crucial, and the fact that both "spouts" and "bolts" sound like sources/producers to me (one of water, another of electricity...?) made it harder to grasp how Storm works.

Re: History of Apache Storm and Lessons Learned

#15
post #14

I think I get the concept (and it's interesting); but I'm a bit baffled by the terminology: > That led me to the idea of "spouts" and "bolts" – a spout produces brand new streams, and a bolt takes in streams as input and produces streams as output. Spout I can grasp; why "bolt"? Why these two, together? I'd have really appreciated an extra sentence or two here as to why he chose these terms -- naming is so crucial, a…

Bolt here probably references thunderbolt, and they both references (rain)storms.

Re: History of Apache Storm and Lessons Learned

#16
post #14

I think I get the concept (and it's interesting); but I'm a bit baffled by the terminology: > That led me to the idea of "spouts" and "bolts" – a spout produces brand new streams, and a bolt takes in streams as input and produces streams as output. Spout I can grasp; why "bolt"? Why these two, together? I'd have really appreciated an extra sentence or two here as to why he chose these terms -- naming is so crucial, a…

I always assumed that "bolt" refers to the threaded fasteners, not electrical bolts. The analogy they are going for is that they are the components responsible for "bolting" spouts together (although, the mixing of metaphors bothers me a little bit... why are we using bolts to fasten fluids together?)

To be super clear about it, a "topology" in Storm is a directed acyclical graph. The nodes are called "bolts" and the edges are called "spouts".

Re: History of Apache Storm and Lessons Learned

#17
post #5

How does it compare to Apache Kafka? (I haven't used either.)

In no way -- apples vs. oranges. Kafka is queue, Storm is processing engine. A better question how it's compared to other processing engines like Spark Streaming, Samza, etc. But just Google it :)

Re: History of Apache Storm and Lessons Learned

#19
post #14

I think I get the concept (and it's interesting); but I'm a bit baffled by the terminology: > That led me to the idea of "spouts" and "bolts" – a spout produces brand new streams, and a bolt takes in streams as input and produces streams as output. Spout I can grasp; why "bolt"? Why these two, together? I'd have really appreciated an extra sentence or two here as to why he chose these terms -- naming is so crucial, a…

Spout? Bolt? Firehose? No wonder confusion reigns within and especially outside programmers' worlds. I think I'll bring the campaign for plain English to meetings and ask programmers and marketing people to leave their Gibson paperbacks at the door. Everything doesn't have to sound like a new script for Keanu Reeves.

Jeezuz. Call a spade a spade.

Re: History of Apache Storm and Lessons Learned

#20
post #14

I think I get the concept (and it's interesting); but I'm a bit baffled by the terminology: > That led me to the idea of "spouts" and "bolts" – a spout produces brand new streams, and a bolt takes in streams as input and produces streams as output. Spout I can grasp; why "bolt"? Why these two, together? I'd have really appreciated an extra sentence or two here as to why he chose these terms -- naming is so crucial, a…

I always assumed that "bolt" refers to the threaded fasteners, not electrical bolts. The analogy they are going for is that they are the components responsible for "bolting" spouts together (although, the mixing of metaphors bothers me a little bit... why are we using bolts to fasten fluids together?) To be super clear about it, a "topology" in Storm is a directed acyclical graph. The nodes are called "bolts" and the…

> a "topology" in Storm is a directed acyclical graph. The nodes are called "bolts" and the edges are called spouts"

Not really. Edges are streams and nodes are either spouts or bolts. Spouts have no predecessors and inject external data into the system. Bolts gather one or more input streams and produce zero or more output streams.

These names are a bit confusing, but only during the very first steps of a project. Quickly every developers grasp the concepts.

I have nevertheless a concern regarding spouts and bolts. In practice, when a topology is refactored, bolts have frequently to be transformed into spouts. This occurs when a topology is split in two to ease deployment; and when a persistent queue is added along a stream. This highlights that the distinction between spouts and bolts is bit artificial.

Post reply on HN