¿Qué elegirías entre Flume, Yahoo S4 y Backtype / Twitter Storm, y por qué? Digamos que quieres clonar Quora o Facebook.

Odio decirlo así, pero la única forma en que puedo responder a esta pregunta es pedirle más datos:

Esta pregunta es equivalente a preguntar: ¿qué elegirías para ir a la luna: la NASA Saturno, la Soyuz de la Agencia Espacial Federal Rusa o la Ariane 5 de la Agencia Espacial Europea?

En la superficie, todos parecen hacer lo mismo: llevar cosas al espacio, pero en realidad, cada uno de ellos tiene diferentes características de rendimiento, diferentes capacidades de carga útil y otras variaciones y limitaciones menores pero muy importantes.

Volviendo a su pregunta, generalmente no hay una respuesta “correcta” para ella. Todo es una cuestión de compensaciones. Estas compensaciones se realizan teniendo en cuenta el tiempo / fluidez del desarrollador con las tecnologías, la interoperabilidad del software elegido con la capa de almacenamiento y las fuentes de datos.

Aquí hay algunos recursos que pueden ayudarlo a tomar una decisión:
[1] ¿Cómo se compara S4 con Flume? en Quora
[2] La publicación de Twitter Engineering Blog que analiza Storm http://engineering.twitter.com/2… [Sección: Relación con el procesamiento de eventos complejos donde se comparan S4 y Storm]

Un par de notas para completar esta respuesta:
Como he dicho antes, la elección entre los 3 sistemas es una función de su capa de almacenamiento de datos, sus preferencias de administración del sistema (centralizado, distribuido), las características de la fuente de datos, las limitaciones de rendimiento del sistema y sus preferencias de desarrollador. Lo que es correcto para usted podría no ser adecuado para otra persona. Así que tenlo en mente.

No quería cerrar esta respuesta porque estaba mal hecha y no daba una respuesta difícil, así que aquí está mi opinión:

Personalmente, me gusta la arquitectura de Storm. Su capa subyacente de paso de mensajes es ZeroMQ (http://www.zeromq.org/), que fue construida por Peter Hintjens (uno de los miembros fundadores de AMQP, el sistema de paso de mensajes que se está construyendo para sistemas financieros) y las garantías otorgadas por el servicio parece excelente (especialmente procesamiento de mensajes garantizado y sin tareas huérfanas, lo cual es bastante difícil de lograr en sistemas distribuidos). Además, ZeroMQ tiene un conjunto de optimizaciones ingeniosas bajo el capó que le brinda un rendimiento increíble en modo por lotes (afirman que es más rápido que TCP). Desafortunadamente, no tengo experiencia personal en el uso del servicio, así que siéntase libre de tomar esto con un grano de sal.


Actualización: un amigo mío llamó a esto también una respuesta diplomática. Aquí está la versión sin filtro: S4 tiene errores, Flume es una tubería de procesamiento de registros y Storm es increíble. 🙂

Hice una contribución al núcleo S4 y escribí un par de aplicaciones usando S4. La respuesta dada por Divye es perfecta. Desarrollé pequeñas aplicaciones en Strom recientemente. Storm es simplemente increíble con una combinación perfecta de tecnologías de código abierto utilizadas en la arquitectura. Es muy fácil escribir aplicaciones distribuidas en tiempo real en tormentas que S4 con alto rendimiento. Flume no es comparable al procesamiento de flujo en tiempo real o al CEP, es una tubería de procesamiento de registro.

No estoy muy familiarizado con herramientas como Flume. Por otro lado, si puede montar el clúster a través de NFS, simplemente puede tener los datos allí cuando esté listo para ejecutar trabajos de MapReduce en él. Simplemente haga que el proceso que genera los datos (weblogs o lo que sea) lo genere directamente en el clúster.

S4 ahora es un proyecto de Incubadora Apache: http://incubator.apache.org/s4/

Hay bastantes similitudes entre S4 y Storm, ya que ambas usan ZooKeeper para la gestión de clústeres.