Apache Spark vs Akka

Ani*_*uri 56 parallel-processing distributed-computing bigdata akka apache-spark

你能否告诉我Apache Spark和AKKA之间的区别,我知道这两个框架都意味着编程分布式和并行计算,但我没有看到它们之间的链接或区别.

此外,我想得到适合他们每个人的用例.

hve*_*iga 95

Apache Spark实际上是在Akka上构建的.

Akka是一个通用框架,用于在Scala或Java中创建反应式,分布式,并行和弹性的并发应用程序.Akka使用Actor模型隐藏所有与线程相关的代码,并为您提供非常简单且有用的界面,以便轻松实现可伸缩和容错系统.Akka的一个很好的例子是一个实时应用程序,它消耗和处理来自移动电话的数据并将它们发送到某种存储.

Apache Spark(不是Spark Streaming)是一个使用map-reduce算法的通用版本来处理批量数据的框架.Apache Spark的一个很好的例子是计算存储数据的一些指标,以便更好地了解您的数据.数据按需加载和处理.

Apache Spark Streaming能够在近乎实时的小批量数据上执行类似的操作和功能,就像数据已经存储一样.

2016年4月更新

从Apache Spark 1.6.0开始,Apache Spark不再依赖Akka进行节点之间的通信.感谢@EugeneMi的评论.

  • 我相信,Spark 1.6 Spark不再使用Akka - Akka被Netty取代.无论如何,Spark只使用Akka进行节点之间的通信,而不是处理. (13认同)
  • 通过反应,我的意思是你的应用程序将是事件驱动的,它将__react__到eventd.在Akka的情况下,这些事件通过演员之间的消息发送.通过弹性我的意思是你的应用程序将容忍失败,它将能够从它们恢复.Akka追求"让它崩溃"的理念.你可以在这里阅读更多:http://doc.akka.io/docs/akka/snapshot/scala/fault-tolerance.html (2认同)

Che*_*sin 28

Spark用于数据处理,Akka用于管理应用程序中的数据和指令流.

TL; DR

Spark和Akka是两个不同的框架,具有不同的用途和用例.

在构建分布式或其他应用程序时,可能需要通过并行方法(例如使用线程)来调度和管理任务.想象一下拥有大量线程的庞大应用程序.这有多复杂?

TypeSafe(现在称为Lightbend)Akka工具包允许您使用Actor系统(最初从Erlang派生),它为您提供线程上的抽象层.这些参与者能够通过将任何事物和所有内容作为消息传递来相互通信,并且可以并行执行并且不会阻止其他代码.

Akka为您提供了在分布式环境中运行Actors的方法.

另一方面,Apache Spark是一个无法手动处理的海量数据集的数据处理框架.Spark使用我们称之为RDD(或弹性分布式数据集)的RDD(或弹性分布式数据集),它是传统数据结构上的分布式列表,例如抽象层,以便可以在彼此平行的不同节点上执行操作.

Spark利用Akka工具包在不同节点之间调度作业.


Rav*_*abu 16

Apache Spark:

Apache Spark™是一种用于大规模数据处理的快速通用引擎.

Spark运行程序在内存中比Hadoop MapReduce快100倍,在磁盘上快10倍.

Spark为我们提供了一个全面,统一的框架来管理大数据处理需求,其中包括各种不同的数据集(文本数据,图形数据等)以及数据源(批量对实时流数据) .

  1. 与Hadoop生态系统和数据源(HDFS,Amazon S3,Hive,HBase,Cassandra等)完美集成

  2. 可以在由Hadoop YARNApache Mesos管理的集群上运行,也可以在独立模式下运行

  3. 提供Scala,JavaPython API ,并在途中支持其他语言(如R)

  4. 除Map和Reduce操作外,它还支持SQL查询,流数据,机器学习和图形数据处理.

我们应该将Spark看作是Hadoop MapReduce的替代品,而不是Hadoop的替代品.

看看infoQtoptal文章,以便更好地理解.

Spark的主要用例:

  1. 机器学习算法
  2. 交互式分析
  3. 流数据

阿卡:来自Letitcrash

Akka是一个事件驱动的中间件框架,用于在Java和Scala中构建高性能和可靠的分布式应用程序.Akka将业务逻辑与线程,锁和非阻塞IO等低级机制分离.使用Akka,您可以轻松配置演员在失败时如何创建,销毁,计划和重新启动.

看看这个类型安全的文章,以便更好地理解Actor框架.

Akka基于管理层次结构提供容错.每个Actor都可以创建其他Actors,然后监督它们,如果应该恢复,重新启动,退役或者问题应该升级,则做出决定.

看看Akka文章和SO问题

主要用例:

  1. 事务处理
  2. 并发/并行
  3. 模拟
  4. 批量处理
  5. 游戏和投注
  6. 复杂事件流处理