apache-storm apache-samza

¿En qué se diferencian Apache Samza y Apache Storm en sus casos de uso?



apache-storm apache-samza (3)

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

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

Respecto a los casos de uso de Samza y Storm, escribe:

Los tres marcos son particularmente adecuados para procesar de manera eficiente grandes cantidades de datos en tiempo real. Entonces, ¿cuál usar? No hay reglas duras, a lo sumo unas pautas generales.

Apache samza

Si tiene una gran cantidad de estado para trabajar (por ejemplo, muchos gigabytes por partición), Samza ubica el almacenamiento y el procesamiento en las mismas máquinas, lo que permite trabajar de manera eficiente con el estado que no cabe en la memoria. El marco también ofrece flexibilidad con su API conectable: sus motores de ejecución, mensajería y almacenamiento predeterminados pueden ser reemplazados con alternativas de su elección. 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 pueden agregarse / eliminarse con un mínimo efecto de rizado.

Algunas compañías que usan Samza: LinkedIn, Intuit, Metamarkets, Quantiply, Fortscale ...

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

Tormenta apache

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 a pedido, mientras el cliente está esperando sincrónicamente los resultados, tendrá RPC distribuido (DRPC) listo para usar. Por último, pero no menos importante, ya que Storm utiliza Apache Thrift, puede escribir topologías en cualquier lenguaje de programación. Sin embargo, si necesita persistencia de estado y / o una entrega exactamente una vez, debe consultar la API de Trident de nivel superior, que también ofrece micro lotes.

Algunas compañías que usan Storm: Twitter, Yahoo !, Spotify, The Weather Channel ...

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

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

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


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 de esta manera:

  1. Age: 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 proyecto de segunda generación más reciente que parece estar informado por las lecciones aprendidas de Storm.
  2. Kafka: Samza surgió del ecosistema 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 particiones similares, ordenamientos y repeticiones semánticas como lo hace Kafka. Storm, al ser un sistema más antiguo, no está tan especializado para trabajar con Kafka.
  3. Complejidad: Samza, en parte porque hace suposiciones más sólidas sobre su entorno ("puedes tener cualquier infraestructura que quieras siempre y cuando funcione como Kafka") y en parte porque es más reciente, me parece que, en general, es más simple que Storm. . Pero una manera quizás menos buena de que Samza sea más simple es que (¿deliberadamente?) Carece del concepto de topología de Storm (gráficos de ejecución complejos). Si necesita un procesador complejo de varias etapas, debe implementarse como tareas independientes que se comunican a través de Kafka. Esto tiene ventajas y desventajas, pero Samza toma la decisión por usted, mientras que Storm le ofrece más opciones.
  4. Administración del estado: muchas aplicaciones de Storm necesitan usar una tienda externa como Redis cuando necesitan mantener un gran volumen de estado para procesar las 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 sus tareas con su propio almacén local de clave / valor basado en disco para usar para este propósito si lo necesitan.

La mayor diferencia entre Apache Storm y Apache Samza se debe a la forma en que transmiten los datos para procesarlos.

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

Aquí está la arquitectura de Apache Storm:

Apache Samza transmite procesando mensajes a medida que vienen de uno en uno. Las secuencias se dividen en particiones que son una secuencia ordenada donde cada una tiene una ID única. Es compatible con el procesamiento por lotes y se utiliza normalmente con YARN de Hadoop y Apache Kafka.

Aquí está la arquitectura de Apache Samza:

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

CASO DE USO

Apache Samza fue creado por LinkedIn.

Un ingeniero de software escribió una ubicación de publicación :

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

Recursos utilizados:

Tormenta vs. Samza Comparación

Referencias arquitectónicas útiles de Storm y Samza