¿Dónde difieren Apache Samza y Apache Storm en sus casos de uso?


Me he topado con este artículo que pretende contrastar Samza con Storm, pero parece que solo aborda los detalles de la implementación.

¿Dónde difieren estos dos motores de computación distribuidos en sus casos de uso? ¿Para qué tipo de trabajo sirve cada herramienta?

Author: zenbeni, 2015-03-18

3 answers

La mayor diferencia entre Apache Storm y Apache Samza se reduce a cómo transmiten los datos para procesarlos.

Apache Storm realiza cálculos en tiempo real usando topología y obtiene feed en un clúster donde el nodo maestro distribuye el código entre los nodos de trabajo que lo ejecutan. En topología, los datos se pasan entre caños que escupen flujos de datos como conjuntos inmutables de pares clave-valor.

Aquí está la arquitectura de Apache Storm: introduzca la descripción de la imagen aquí

Apache Samza flujos mediante el procesamiento de mensajes a medida que vienen en uno a la vez. Los flujos se dividen en particiones que son una secuencia ordenada donde cada una tiene un ID único. Es compatible con el procesamiento por lotes y se usa típicamente con YARN de Hadoop y Apache Kafka.

Aquí está la arquitectura de Apache Samza: introduzca la descripción de la imagen aquí

Lea más sobre las formas específicas en que cada uno de los sistemas ejecuta los específicos a continuación.

CASO DE USO

Apache Samza fue creado por LinkedIn.

Un ingeniero de software escribió un post siting :

Ha estado en producción en LinkedIn durante varios años y actualmente se ejecuta en cientos de máquinas en varios centros de datos. Nuestro trabajo más grande de Samza es procesar más de 1,000,000 de mensajes por segundo durante las horas pico de tráfico.

Recursos utilizados:

Comparación Tormenta vs. Samza

Referencias arquitectónicas útiles de Storm y Samza

 21
Author: mprithibi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-22 17:47:27

Bueno, he estado investigando estos sistemas durante unos meses, y no creo que difieran profundamente en sus casos de uso. Creo que es mejor compararlos a lo largo de estas líneas en su lugar:

  1. Edad: Storm es el proyecto más antiguo, y el original en este espacio, por lo que generalmente es más maduro y probado en batalla. Samza es un nuevo proyecto de segunda generación que parece estar informado por las lecciones que se aprendieron de Storm.
  2. Kafka: Samza creció de la El ecosistema de Kafka, y está muy centrado en Kafka. Por ejemplo, la documentación dice que permiten conectar diferentes sistemas de mensajería... siempre y cuando proporcionen una semántica de particionamiento, ordenación y repetición similar a la de Kafka. Storm, siendo un sistema más antiguo, no está tan especializado para trabajar con Kafka.
  3. Complejidad: Samza, en parte porque hace suposiciones más fuertes sobre su entorno ("puede tener cualquier infraestructura que desee siempre y cuando funcione como Kafka") y en parte porque es más nuevo, me parece generalmente más simple que Storm, en el buen sentido. Pero una tal vez menos buena manera que Samza es más simple es que (deliberadamente?) carece del concepto de Storm de topologías (gráficos de ejecución complejos). Si necesita un procesador complejo de varias etapas, debe implementarse como tareas independientes que se comuniquen a través de Kafka. Esto tiene ventajas, así como desventajas, pero Samza hace la elección para usted, mientras que Storm le da más opcion.
  4. Administración de estados: Muchas aplicaciones Storm necesitan usar un almacén externo como Redis cuando necesitan mantener un gran volumen de estado para procesar tuplas entrantes. Esta situación parece ser una de las principales cosas que motivaron el diseño de Samza; una de las características más distintivas de Samza es que proporciona a sus tareas su propio almacén local de clave/valor basado en disco para usarlo con este propósito si lo necesitan.
 41
Author: Luis Casillas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-05 04:29:57

Aquí hay un artículo de Tony Siciliani que proporciona una comparación de casos de uso (y arquitectura) para Storm, Spark y Samza. Apache.org a continuación también se proporcionan enlaces a casos de uso reales.

Https://tsicilian.wordpress.com/2015/02/16/streaming-big-data-storm-spark-and-samza/

Con respecto a los casos de uso de Samza y Storm, escribe:

Los tres frameworks son particularmente adecuados para procesar eficientemente cantidades continuas y masivas de datos en tiempo real. Tan cuál utilizar? No hay reglas duras, a lo sumo algunas pautas generales.

Apache Samza

Si tiene una gran cantidad de estados con los que trabajar (por ejemplo, muchos gigabytes por partición), Samza co-localiza el almacenamiento y el procesamiento en las mismas máquinas, lo que permite trabajar eficientemente con estados que no caben en la memoria. El marco también ofrece flexibilidad con su API conectable: sus motores de ejecución, mensajería y almacenamiento predeterminados se pueden reemplazar con su elección de alternativas. Además, si tiene varias etapas de procesamiento de datos de diferentes equipos con diferentes bases de código, los trabajos de grano fino de Samza serían particularmente adecuados, ya que se pueden agregar/eliminar con efectos de ondulación mínimos.

Algunas empresas que utilizan Samza: LinkedIn, Intuit, Metamarkets, Quantiply, Fortscale {

Lista de casos de uso de Samza: https://cwiki.apache.org/confluence/display/SAMZA/Powered+By

Apache Tormenta

Si desea un sistema de procesamiento de eventos de alta velocidad que permita cálculos incrementales, Storm estaría bien para eso. Si además necesita ejecutar cálculos distribuidos bajo demanda, mientras el cliente espera sincrónicamente los resultados, tendrá RPC distribuido (DRPC) listo para usar. Por último, pero no menos importante, debido a que Storm utiliza Apache Thrift, puede escribir topologías en cualquier lenguaje de programación. Si necesita persistencia de estado y / o entrega exactamente una vez sin embargo, debe mirar la API Trident de nivel superior, que también ofrece micro-lotes.

Algunas empresas que usan Storm: Twitter, Yahoo!, Spotify, The Weather Channel {

Lista de casos de uso de Storm: http://storm.apache.org/documentation/Powered-By.html

 10
Author: Grokify,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-22 05:47:07