Apache Spark vs Akka


Podría por favor decirme la diferencia entre Apache Spark y AKKA, sé que ambos frameworks significaban programar cómputos distribuidos y paralelos, sin embargo no veo el vínculo o la diferencia entre ellos.

Además, me gustaría obtener los casos de uso adecuados para cada uno de ellos.

Author: hveiga, 2015-03-17

3 answers

Apache Spark está construido en Akka.

Akka es un framework de propósito general para crear aplicaciones concurrentes reactivas, distribuidas, paralelas y resilientes en Scala o Java. Akka utiliza el modelo Actor para ocultar todo el código relacionado con el hilo y le ofrece interfaces realmente simples y útiles para implementar un sistema escalable y tolerante a errores fácilmente. Un buen ejemplo para Akka es una aplicación en tiempo real que consume y procesa datos procedentes de teléfonos móviles y los envía a algunos una especie de almacén.

Apache Spark (no Spark Streaming) es un framework para procesar datos por lotes usando una versión generalizada del algoritmo map-reduce. Un buen ejemplo para Apache Spark es un cálculo de algunas métricas de datos almacenados para obtener una mejor visión de sus datos. Los datos se cargan y procesan bajo demanda.

Apache Spark Streaming es capaz de realizar acciones y funciones similares en pequeños lotes de datos casi en tiempo real de la misma manera que lo haría si los datos fueran ya está almacenado.

ACTUALIZACIÓN ABRIL 2016

Desde Apache Spark 1.6.0, Apache Spark ya no depende de Akka para la comunicación entre nodos. Gracias a @EugeneMi por el comentario.

 82
Author: hveiga,
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
2016-04-15 14:36:06

Spark es para el procesamiento de datos lo que Akka es para administrar el flujo de datos e instrucciones en una aplicación.

TL; DR

Spark y Akka son dos frameworks diferentes con diferentes usos y casos de uso.

Al compilar aplicaciones, distribuidas o no, uno puede necesitar programar y administrar tareas a través de un enfoque paralelo, como por ejemplo mediante el uso de subprocesos. Imagina una gran aplicación con muchos hilos. ¿Qué tan complicado sería eso?

Kit de herramientas Akka de TypeSafe le permite utilizar sistemas de actores (originalmente derivados de Erlang) que le da una capa de abstracción sobre hilos. Estos actores son capaces de comunicarse entre sí pasando cualquier cosa y todo como mensajes, y hacer las cosas en paralelo y sin bloquear otro código.

Akka le da una cereza en la parte superior al proporcionarle formas de ejecutar a los Actores en un entorno distribuido.

Apache Spark, por otro lado, es un marco de procesamiento de datos para conjuntos de datos masivos que no pueden ser manejado manualmente. Spark hace uso de lo que llamamos un RDD (o Conjuntos de datos Distribuidos Resilientes) que es una lista distribuida como una capa de abstracción sobre sus estructuras de datos tradicionales para que las operaciones se puedan realizar en diferentes nodos paralelos entre sí.

Spark hace uso del kit de herramientas Akka para programar trabajos entre diferentes nodos.

 25
Author: Chetan Bhasin,
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-17 14:17:03

Apache Spark:

Apache Spark™ es un motor rápido y general para el procesamiento de datos a gran escala.

Spark ejecuta programas hasta 100 veces más rápido que Hadoop MapReduce en memoria o 10 veces más rápido en disco.

Spark nos brinda un marco integral y unificado para administrar los requisitos de procesamiento de big data con una variedad de conjuntos de datos que son de naturaleza diversa (datos de texto, datos de gráficos, etc.), así como la fuente de los datos (lote v. datos de transmisión en tiempo real).

  1. Se integra bien con el ecosistema Hadoop y las fuentes de datos (HDFS, Amazon S3, Hive, HBase, Cassandra, etc.)

  2. Puede ejecutarse en clústeres administrados por Hadoop YARN o Apache Mesos , y también puede ejecutarse en modo Independiente

  3. Proporciona APIs en Scala, Java y Python , con soporte para otros lenguajes (como R) en el camino

  4. En además de Mapear y Reducir operaciones, admite consultas SQL , transmisión de datos, aprendizaje automático y procesamiento de datos de gráficos.

Deberíamos mirar a Spark como una alternativa a Hadoop MapReduce en lugar de un reemplazo de Hadoop.

Echa un vistazo a InfoQy toptal artículos para una mejor comprensión.

Casos de uso principales para Spark:

  1. Algoritmos de aprendizaje automático
  2. Interactivo análisis
  3. Transmisión de datos

Akka: de Letitcrash

Akka es un framework middleware basado en eventos, para crear aplicaciones distribuidas confiables y de alto rendimiento en Java y Scala. Akka desacopla la lógica de negocio de mecanismos de bajo nivel como hilos, bloqueos y E / S sin bloqueo. Con Akka, puede configurar fácilmente cómo se crearán, destruirán, programarán y reiniciarán los actores en caso de fallo.

Echa un vistazo a este artículo typesafe para una mejor comprensión de Actor framework.

Akka proporciona tolerancia a fallos basada en jerarquías de supervisores. Cada Actor puede crear otros Actores, que luego supervisará, tomando decisiones si deben reanudarse, reiniciarse, retirarse o si el problema debe intensificarse.

Echa un vistazo a Akka artículo & SO questions

Casos de uso principales:

  1. Procesamiento de transacciones
  2. Concurrencia/paralelismo
  3. Simulación
  4. Procesamiento por lotes
  5. Juegos y apuestas
  6. Procesamiento de Flujo de Eventos Complejos
 12
Author: Ravindra babu,
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
2017-10-25 05:18:10