Apache Spark vs Apache Storm
La necesidad de streaming de datos en tiempo real está creciendo exponencialmente debido al aumento de datos en tiempo real. Con las tecnologías de streaming liderando el mundo del Big Data, puede ser difícil para los usuarios elegir la plataforma de streaming en tiempo real adecuada. Dos de las tecnologías en tiempo real más populares que podrían considerar para optar son Apache Spark y Apache Storm.
Una de las principales diferencias clave entre los frameworks Spark y Storm es que Spark realiza cálculos de Datos-Paralelos, mientras que Storm ocupa cálculos de Tareas-Paralelas
Apache Spark
Apache Spark es un marco de tecnología de computación de clústeres de propósito general y muy rápido, utilizado para el cálculo rápido en el procesamiento de datos a gran escala. Puede gestionar cargas de trabajo de análisis y procesamiento de datos tanto por lotes como en tiempo real.
Apache Storm
Apache Storm es un sistema de computación de código abierto, escalable, tolerante a fallos y de procesamiento de flujos en tiempo real. Es un marco de trabajo para el procesamiento de datos distribuidos en tiempo real, que se centra en el procesamiento de flujos o eventos. Se puede utilizar con cualquier lenguaje de programación y se puede integrar utilizando cualquier tecnología de colas o bases de datos.
Diferencias entre Spark y Storm
- Modelo de procesamiento: Apache spark proporciona procesamiento por lotes mientras que storm proporciona procesamiento por micro lotes
- Lenguaje de programación: Apache spark Soporta lenguajes menores como Java, Scala mientras que storm por otro lado Soporta múltiples lenguajes, como Scala, Java, Clojure.
- Stream Sources: Apache utiliza HDFS mientras que Apache Storm utiliza spout.
- Mensajería: Apache apark utiliza Akka, Netty mientras que Apache storm utiliza ZeroMQ, Netty
- Gestión de recursos: Para Apache spark son responsables Yarn y Meson mientras que para Apache storm son responsables Yarn y Mesos.
- Latencia: Mayor latencia en comparación con Apache Spark mientras que Apache storm proporciona una mejor latencia baja con menos restricciones
- Stream Primitives: Apache spark utiliza DStream mientras que Apache Storm utiliza Tuple, Partition
- Coste de desarrollo: Apache spark utiliza el mismo código para el procesamiento de lotes y flujos mientras que en Apache storm no se puede utilizar el mismo código.
- Persistencia: Apache spark utiliza por RDD mientras que Apache storm utiliza MapState
- Tolerancia a fallos: En Apache spark maneja el reinicio de los trabajadores a través del gestor de recursos que puede ser YARN, Mesos o su gestor independiente mientras que en Apache storm si el proceso falla el proceso supervisor lo reiniciará automáticamente ya que la gestión del estado se maneja a través de zookeeper
- Aprovisionamiento: Apache spark soporta la monitorización básica utilizando Ganglia mientras que Apache storm utiliza Apache Ambari
- Rendimiento: Apache spark sirve 100k registros por nodo por seg mientras que Apache storm sirve 10k registros por nodo por seg.
- Gestión de Estado: El cambio y mantenimiento de estado en Apache Spark se puede actualizar a través de UpdateStateByKey, pero no se puede aplicar ninguna estrategia enchufable en el sistema externo para la implementación del estado. Mientras que Storm no proporciona ningún marco para el almacenamiento de cualquier salida de perno intervenido como un estado. Por lo tanto, cada aplicación tiene que crear un estado para sí mismo siempre que sea necesario.
- Especialidad: Apache spark utiliza un procesamiento unificado (batch, SQL, etc.) mientras que Apache storm utiliza RPC distribuido
Apache Storm y Apache Spark son grandes soluciones que resuelven el problema de la ingesta y transformación de streaming.
Leer más… http://entradasoft.com/blogs/apache-spark-vs-apache-storm