Apache Ignite vs. Apache Storm (in depth)

Apache Ignite and Apache Storm are two quite different technologies in many aspects - especially since Storm has one very specific use case, while Ignite has a pretty large toolbox under one roof. As far as I understand, the core of Ignite is its storage in memory. Built on this is its location-sensitive location by location. All sorts of cool "toys" built on this. I'm interested in the Streaming function, which is mainly a listener when changing a cache in memory.

If I set a sliding window to one tuple, Ignite provides - like Storm - functionality with a single tuple in time. Data is stored in Ignite memory. Storm does not "store" data in memory, but tuples, of course, are also stored in memory. Therefore, in both cases, I have streaming, and I have data in memory, and I can distribute my calculations.

It seems to me that writing programs that perform many steps of data conversion is easier to write in Storm due to the abstractions of both technologies. What can be said about this?

Second question: what about performance? I would suggest that localizing Ignite data might give it an edge. On the other hand, I think that several steps can be better distributed in Storm (various bolts on all kinds of machines), while the Ignite program cannot be divided so easily.

If I still wanted to distribute the stream (not only to the data, but also the steps on different machines). I think I would have to write some Ignite feeds that communicate through Caches, right? That would be harder to write than in Storm (bringing us back to the first question).

+5
source share
1 answer

It seems to me that writing programs that take many steps of data conversion is easier to write in a storm due to the abstractions of both technologies. What can be said about this?

You are probably right. It seems that several conversions would be easier in the storm, although Ignite also has decent support for it, streams of newly formed tuples into another cache.

What about performance? I would suggest that localizing Ignite data might give it an edge. On the other hand, I think that several steps can be better distributed in Storm (various bolts on all kinds of machines), while the Ignite program cannot be divided so easily.

From what I hear in the community, Ignite should be an order of magnitude faster than Storm.

If I still wanted to distribute the stream (not only to the data, but also the steps on different machines). I think I would have to write some Ignite feeds that communicate through Caches, right?

Yes you are right. Having multiple caches in Ignite is not bad, and is actually recommended. Most users have a dozen or two.

That would be harder to write than in Storm (bringing us back to the first question).

Sounds like you need to decide how important performance is to you.

+2
source

Source: https://habr.com/ru/post/1236893/


All Articles