Apache Kafka vs Apache Storm
Apache Kafka: Distributed messaging system
Apache Storm: Przetwarzanie Wiadomości W Czasie Rzeczywistym
Jak możemy wykorzystać obie technologie w potoku danych w czasie rzeczywistym do przetwarzania danych zdarzeń?
Pod względem potoku danych w czasie rzeczywistym oba wydają mi się wykonywać pracę identyczną. Jak możemy wykorzystać obie technologie w potoku danych?
6 answers
Używasz Apache Kafka jako rozproszonej i solidnej kolejki, która może obsługiwać dane o dużej objętości i umożliwia przekazywanie wiadomości z jednego punktu końcowego do drugiego.
Storm to nie Kolejka. Jest to system, który rozproszył możliwości przetwarzania w czasie rzeczywistym, co oznacza, że można wykonywać wszystkie rodzaje manipulacji na danych w czasie rzeczywistym równolegle.
Wspólny przepływ tych narzędzi (jak wiem) przebiega następująco:
Real-time-system -- > Kafka -- > Storm -- > NoSql --> BI (opcjonalne)
Więc Twoja aplikacja w czasie rzeczywistym obsługuje dane o dużej objętości, wysyła je do kolejki Kafka. Storm wyciąga dane z Kafki i stosuje pewne wymagane manipulacje. W tym momencie zazwyczaj chcesz uzyskać pewne korzyści z tych danych, więc albo wysyłasz je do jakiegoś Nosql db w celu dodatkowych obliczeń BI, albo możesz po prostu odpytywać ten NoSql z dowolnego innego systemu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-16 07:53:08
Kafka i burza mają nieco inny cel:
Kafka jest rozproszonym brokerem komunikatów, który może obsłużyć dużą liczbę wiadomości na sekundę. Używa paradygmatu publikuj-subskrybuj i opiera się na tematach i partycjach. Kafka używa Zookeeper do udostępniania i zapisywania stanu między brokerami. Kafka jest więc w zasadzie odpowiedzialna za przesyłanie wiadomości z jednej maszyny do drugiej.
Storm to skalowalny, odporny na błędy system analityczny w czasie rzeczywistym (myśl jak Hadoop w realtime). Zużywa dane ze źródeł (Wylewki) i przekazuje je do rurociągu (śruby). Można je łączyć w topologii. Storm jest więc w zasadzie jednostką obliczeniową (agregacja, uczenie maszynowe).
Ale możesz ich używać razem: na przykład Twoja aplikacja używa Kafki do wysyłania danych do innych serwerów, które używają storm do wykonywania obliczeń na nim.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-26 07:48:14
Wiem, że jest to starszy wątek i porównania Apache Kafka i Storm były poprawne i poprawne, kiedy zostały napisane, ale warto zauważyć, że Apache Kafka ewoluował wiele lat i od wersji 0.10 (Kwiecień 2016) Kafka zawiera Kafka Streams API, które zapewnia możliwości przetwarzania strumienia bez potrzeby dodatkowego oprogramowania, takiego jak Storm. Kafka zawiera również Connect API do łączenia się z różnymi źródłami i zlewozmywakami (miejscami docelowymi) z data.
Blog ogłoszeniowy - https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/
Aktualna dokumentacja Apache- https://kafka.apache.org/documentation/streams/
W 0.11 Kafka funkcjonalność przetwarzania strumienia została dodatkowo rozszerzona, aby zapewnić dokładnie raz semantykę i transakcje.
Https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-19 19:29:05
Tak to działa
Kafka - aby zapewnić strumień w czasie rzeczywistym
Storm - aby wykonać kilka operacji na tym strumieniu
Możesz rzucić okiem na projekt GitHub https://github.com/abhishekgoel137/kafka-nodejs-d3js .
(D3js jest biblioteką reprezentacji grafów)
Idealny przypadek:
Realtime application -> Kafka -> Storm -> NoSQL -> d3js
To repozytorium jest oparte na:
Realtime application -> Kafka -> <plain Node.js> -> NoSQL -> d3js
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-05 06:30:35
Jak każdy wyjaśnia, że Apache Kafka: jest kolejką komunikatów ciągłych
Apache Storm: is continuous processing tool
Tutaj w tym aspekcie Kafka pobierze dane z dowolnej strony internetowej, takiej jak FB, Twitter za pomocą API i że dane są przetwarzane za pomocą Apache Storm i możesz przechowywać przetworzone dane w dowolnych bazach danych, które lubisz.
Https://github.com/miguno/kafka-storm-starter
Po prostu podążaj za nim dowiesz się czegoś
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 12:12:25
Kiedy mam przypadek użycia, który wymaga ode mnie wizualizacji lub ostrzegania o wzorcach (pomyśl o trendach na Twitterze), kontynuując przetwarzanie zdarzeń, mam kilka wzorców.
NiFi pozwoli mi przetworzyć Zdarzenie i zaktualizować trwały magazyn danych z niską (er) agregacją wsadową z bardzo, bardzo małym niestandardowym kodowaniem.
Storm (dużo niestandardowego kodowania) pozwala mi prawie w czasie rzeczywistym na dostęp do trendów.
Jeśli mogę czekać wiele sekund, to mogę wsadzić z Kafki, do hdfs (Parkiet) i proces.
Jeśli muszę wiedzieć w kilka sekund, potrzebuję NiFi, a prawdopodobnie nawet Storm. (Pomyśl o monitorowaniu tysięcy stacji naziemnych, gdzie muszę zobaczyć małe warunki pogodowe w regionie dla ostrzeżeń o tornadach).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-07 06:04:43