Apache Spark vs Apache Storm
Potrzeba strumieniowania danych w czasie rzeczywistym rośnie wykładniczo ze względu na wzrost ilości danych w czasie rzeczywistym. Z technologiami strumieniowymi wiodącymi w świecie Big Data, wybór odpowiedniej platformy strumieniowej w czasie rzeczywistym może być trudny dla użytkowników. Dwie z najbardziej popularnych technologii czasu rzeczywistego, które można rozważyć przy wyborze to Apache Spark i Apache Storm.
Jedną z głównych kluczowych różnic pomiędzy frameworkami Spark i Storm jest to, że Spark wykonuje obliczenia Data-Parallel, podczas gdy Storm zajmuje się obliczeniami Task-Parallel
Apache Spark
Apache Spark jest uniwersalnym, szybkim, klastrowym frameworkiem technologicznym, używanym do szybkich obliczeń na dużej skali przetwarzania danych. Może zarządzać zarówno wsadowymi, jak i działającymi w czasie rzeczywistym zadaniami analitycznymi i przetwarzaniem danych.
Apache Storm
Apache Storm jest systemem obliczeniowym typu open-source, skalowalnym, odpornym na błędy i przetwarzającym strumienie danych w czasie rzeczywistym. Jest to framework dla rozproszonego przetwarzania danych w czasie rzeczywistym, który koncentruje się na przetwarzaniu strumieniowym lub przetwarzaniu zdarzeń. Może być używany z dowolnym językiem programowania i może być zintegrowany przy użyciu dowolnej technologii kolejkowania lub bazy danych.
Różnice między Spark i Storm
- Model przetwarzania: Apache spark zapewnia przetwarzanie wsadowe, podczas gdy storm zapewnia przetwarzanie mikrowsadowe
- Język programowania: Apache spark Obsługuje mniej języków jak Java, Scala podczas gdy storm z drugiej strony Obsługuje wiele języków, takich jak Scala, Java, Clojure.
- Stream Sources: Apache użył HDFS podczas gdy Apache Storm używa spout.
- Messaging: Apache apark używa Akka, Netty podczas gdy Apache storm używa ZeroMQ, Netty
- Zarządzanie zasobami: Dla Apache spark Yarn i Meson są odpowiedzialne, podczas gdy dla Apache storm Yarn i Mesos są odpowiedzialne.
- Latencja: Wyższa latencja w porównaniu do Apache Spark podczas gdy Apache storm zapewnia lepszą niską latencję z mniejszymi ograniczeniami
- Stream Primitives: Apache spark używa DStream podczas gdy Apache Storm używa Tuple, Partition
- Koszt rozwoju: Apache spark używa tego samego kodu do przetwarzania wsadowego i strumieniowego, podczas gdy w Apache storm ten sam kod nie może być użyty.
- Trwałość: Apache spark używa per RDD podczas gdy Apache storm używa MapState
- Odporność na błędy: W Apache spark obsługuje restartowanie pracowników przez menedżera zasobów, którym może być YARN, Mesos lub jego samodzielny menedżer, podczas gdy w Apache storm, jeśli proces zawiedzie, proces nadzorujący zrestartuje go automatycznie, ponieważ zarządzanie stanem jest obsługiwane przez zookeeper
- Provisioning: Apache spark wspiera podstawowy monitoring używając Ganglia, podczas gdy Apache storm używa Apache Ambari
- Przepustowość: Apache spark serwuje 100k rekordów na węzeł na sekundę podczas gdy Apache storm serwuje 10k rekordów na węzeł na sekundę.
- Zarządzanie stanem: Zmiana i utrzymanie stanu w Apache Spark może być aktualizowana poprzez UpdateStateByKey, ale żadna strategia pluggable nie może być zastosowana w zewnętrznym systemie do implementacji stanu. Natomiast Storm nie dostarcza żadnych ram do przechowywania jakichkolwiek danych wyjściowych jako stan. Stąd każda aplikacja musi stworzyć stan dla siebie, kiedy tylko jest to wymagane.
- Specjalność: Apache spark używa zunifikowanego przetwarzania (wsadowego, SQL itp.), podczas gdy Apache storm używa rozproszonego RPC
Apache Storm i Apache Spark są świetnymi rozwiązaniami, które rozwiązują problem streaming ingestion i transformacji.
Czytaj więcej… http://entradasoft.com/blogs/apache-spark-vs-apache-storm
.