Apache Kafka vs Apache Storm

Apache Kafka: gedistribueerd berichtensysteem
Apache Storm: realtime berichtverwerking

Hoe kunnen we beide technologieën gebruiken in een realtime datapijplijn voor het verwerken van gebeurtenisgegevens?

In termen van realtime datapijplijn lijken beide mijn werk identiek te doen. Hoe kunnen we beide technologieën op een datapijplijn gebruiken?


Antwoord 1, autoriteit 100%

Je gebruikt Apache Kafka als een gedistribueerde en robuuste wachtrij die grote datavolumes aankan en waarmee je berichten van het ene eindpunt naar het andere kunt doorgeven.

Storm is geen wachtrij. Het is een systeem met gedistribueerde realtime verwerkingscapaciteiten, wat betekent dat je alle soorten manipulaties op realtime gegevens parallel kunt uitvoeren.

De gemeenschappelijke stroom van deze tools (zoals ik die ken) gaat als volgt:

real-time-systeem –> Kafka –> Onweer –> NoSql –> BI(optioneel)

Dus uw realtime-app verwerkt grote hoeveelheden gegevens en stuurt deze naar de Kafka-wachtrij. Storm haalt de gegevens uit kafka en past de vereiste manipulatie toe. Op dit moment wil je meestal wat voordeel halen uit deze gegevens, dus je stuurt ze ofwel naar een of andere Nosql-database voor aanvullende BI-berekeningen, of je kunt deze NoSql eenvoudig opvragen vanuit een ander systeem.


Antwoord 2, autoriteit 24%

Kafka en Storm hebben een iets ander doel:

Kafkais een gedistribueerde berichtenmakelaar die grote hoeveelheden berichten per seconde kan verwerken. Het maakt gebruik van publiceren-abonneren paradigma en vertrouwt op onderwerpen en partities. Kafka gebruikt Zookeeper om de staat tussen makelaars te delen en op te slaan. Dus Kafka is in principe verantwoordelijk voor het overbrengen van berichten van de ene machine naar de andere.

Stormis een schaalbaar, fouttolerant, realtime analysesysteem (denk aan Hadoop in realtime). Het verbruikt gegevens uit bronnen (Spouts) en geeft deze door aan pijpleidingen (Bolts). U kunt ze combineren in de topologie. Storm is dus eigenlijk een rekeneenheid (aggregatie, machine learning).


Maar u kunt ze samen gebruiken: uw toepassing gebruikt bijvoorbeeld kafka om gegevens naar andere servers te verzenden, die storm gebruikt om er berekeningen op uit te voeren.


Antwoord 3, autoriteit 23%

Ik weet dat dit een oudere thread is en dat de vergelijkingen van Apache Kafka en Storm geldig en correct waren toen ze werden geschreven, maar het is vermeldenswaard dat Apache Kafka in de loop der jaren en sinds versie 0.10 (april 2016) veel is geëvolueerd. Kafka heeft een Kafka Streams API toegevoegd die streamverwerkingsmogelijkheden biedt zonder dat er extra software zoals Storm nodig is. Kafka bevat ook de Connect API om verbinding te maken met verschillende bronnen en sinks (bestemmingen) van gegevens.

Aankondigingsblog – https://www. confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/

Huidige Apache-documentatie – https://kafka.apache.org/documentation/streams/

In 0.11 Kafka werd de streamverwerkingsfunctionaliteit verder uitgebreid om Exactly Once Semantics and Transactions te bieden.

https ://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/


Antwoord 4, autoriteit 10%

Zo werkt het

Kafka– Om een realtime stream te bieden

Storm – Om enkele operaties op die stroom uit te voeren

U kunt een kijkje nemen op de GitHub project nemen https://github.com/abhishekgoel137/ kafka-NodeJS-d3js .

(D3js een grafiek vertegenwoordiging library)

Ideale case:

Realtime application -> Kafka -> Storm -> NoSQL -> d3js

Deze repository is gebaseerd op:

Realtime application -> Kafka -> <plain Node.js> -> NoSQL -> d3js

Antwoord 5, Autoriteit 2%

Als een ieder uit te leggen je dat
Apache Kafka: continu messaging wachtrij

Apache Storm: continu verwerking gereedschap

hier in dit aspect Kafka worden de gegevens van een website zoals FB, Twitter te krijgen door het gebruik van API’s en die gegevens worden verwerkt met behulp van Apache Storm en u kunt de verwerkte gegevens op te slaan in een van beide in een databases die u wilt.

https://github.com/miguno/kafka-storm-starter

volg het Net vindt u een idee te krijgen


Antwoord 6, Autoriteit 2%

Als ik een use case die vereist dat me te visualiseren of alert op patronen (denk aan twitter trends), terwijl u de gebeurtenissen te verwerken, ik heb een aantal patronen.
Nifi me zou toestaan ​​om een ​​gebeurtenis te verwerken en te actualiseren een persistente data op te slaan met een lage (re) batch aggregatie met zeer, zeer weinig aangepaste codering.
Storm (veel aangepaste codering) laat me bijna real-time toegang tot de trending evenementen.
Als ik kan wachten voor vele seconden, dan kan ik batch van kafka, in HDFS (parket) en het proces.
Als ik het binnen enkele seconden moet weten, heb ik NiFi nodig, en waarschijnlijk zelfs Storm. (Denk aan het monitoren van duizenden grondstations, waar ik de weersomstandigheden in kleine regio’s moet zien voor tornado-waarschuwingen).


Antwoord 7

Stuur gewoon Kafkade berichten van node naar een andere , en Stormverwerk de berichten . Bekijk dit voorbeeld van hoe u Integratie van Apache Kafka met Storm

kunt doen

Other episodes