你能否告诉我Apache Spark和AKKA之间的区别,我知道这两个框架都意味着编程分布式和并行计算,但我没有看到它们之间的链接或区别 .
此外,我想得到适合他们每个人的用例 .
Apache Spark实际上是在Akka上构建的 .
Akka是一个通用框架,用于在Scala或Java中创建反应式,分布式,并行和弹性的并发应用程序 . Akka使用Actor模型隐藏所有与线程相关的代码,并为您提供非常简单且有用的界面,以便轻松实现可伸缩和容错系统 . Akka的一个很好的例子是一个实时应用程序,它消耗和处理来自移动电话的数据并将它们发送到某种存储 .
Apache Spark(不是Spark Streaming)是一个使用map-reduce算法的通用版本来处理批量数据的框架 . Apache Spark的一个很好的例子是计算存储数据的一些指标,以便更好地了解您的数据 . 数据按需加载和处理 .
Apache Spark Streaming能够在近乎实时的小批量数据上执行类似的操作和功能,就像数据已经存储一样 .
UPDATE APRIL 2016
从Apache Spark 1.6.0开始,Apache Spark不再依赖Akka进行节点之间的通信 . 感谢@EugeneMi的评论 .
Spark用于数据处理,Akka用于管理应用程序中的数据和指令流 .
TL;DR
Spark和Akka是两个不同的框架,具有不同的用途和用例 .
在构建分布式或其他应用程序时,可能需要通过并行方法(例如使用线程)来调度和管理任务 . 想象一下拥有大量线程的庞大应用程序 . 这有多复杂?
TypeSafe的Akka工具包允许您使用Actor系统(最初从Erlang派生),它为您提供线程上的抽象层 . 这些参与者能够通过将任何事物和所有内容作为消息传递来相互通信,并且可以并行执行并且不会阻止其他代码 .
Akka为您提供了在分布式环境中运行Actors的方法 .
另一方面,Apache Spark是一个无法手动处理的海量数据集的数据处理框架 . Spark使用我们称之为RDD(或弹性分布式数据集)的RDD(或弹性分布式数据集),它是传统数据结构上的分布式列表,例如抽象层,以便可以在彼此平行的不同节点上执行操作 .
Spark利用Akka工具包在不同节点之间调度作业 .
Apache Spark:
Apache Spark™是一种用于大规模数据处理的快速通用引擎 .
Spark运行程序在内存中比Hadoop MapReduce快100倍,在磁盘上快10倍 .
Spark为我们提供了一个全面,统一的框架来管理大数据处理需求,其中包括各种不同的数据集(文本数据,图形数据等)以及数据源(批量对实时流数据) .
与Hadoop生态系统和数据源( HDFS, Amazon S3, Hive, HBase, Cassandra 等)很好地集成
可以在 Hadoop YARN 或 Apache Mesos 管理的集群上运行,也可以在 Standalone 模式下运行
在 Scala, Java 和 Python 中提供API,在途中支持其他语言(如R)
除了Map和Reduce操作外,它还支持 SQL 查询,流数据,机器学习和图形数据处理 .
我们应该将Spark看作是Hadoop MapReduce的替代品,而不是Hadoop的替代品 .
请查看infoQ和toptal文章以便更好地理解 .
Major Use cases for Spark:
机器学习算法
交互式分析
流数据
Akka: 来自Letitcrash
Akka是一个事件驱动的中间件框架,用于在Java和Scala中构建高性能和可靠的分布式应用程序 . Akka将业务逻辑与线程,锁和非阻塞IO等低级机制分离 . 使用Akka,您可以轻松配置演员在失败时如何创建,销毁,计划和重新启动 .
看看这篇typesafe文章,以便更好地理解Actor框架 .
Akka基于主管层次结构提供容错功能 . 每个Actor都可以创建其他Actors,然后由它监督,制作决定是否应该恢复,重新启动,退役或者问题是否应该升级 .
看看Akka文章&SO questions
主要用例:
交易处理
并发/并行
模拟
批处理
游戏和投注
复杂事件流处理
3 回答
Apache Spark实际上是在Akka上构建的 .
Akka是一个通用框架,用于在Scala或Java中创建反应式,分布式,并行和弹性的并发应用程序 . Akka使用Actor模型隐藏所有与线程相关的代码,并为您提供非常简单且有用的界面,以便轻松实现可伸缩和容错系统 . Akka的一个很好的例子是一个实时应用程序,它消耗和处理来自移动电话的数据并将它们发送到某种存储 .
Apache Spark(不是Spark Streaming)是一个使用map-reduce算法的通用版本来处理批量数据的框架 . Apache Spark的一个很好的例子是计算存储数据的一些指标,以便更好地了解您的数据 . 数据按需加载和处理 .
Apache Spark Streaming能够在近乎实时的小批量数据上执行类似的操作和功能,就像数据已经存储一样 .
UPDATE APRIL 2016
从Apache Spark 1.6.0开始,Apache Spark不再依赖Akka进行节点之间的通信 . 感谢@EugeneMi的评论 .
Spark用于数据处理,Akka用于管理应用程序中的数据和指令流 .
TL;DR
Spark和Akka是两个不同的框架,具有不同的用途和用例 .
在构建分布式或其他应用程序时,可能需要通过并行方法(例如使用线程)来调度和管理任务 . 想象一下拥有大量线程的庞大应用程序 . 这有多复杂?
TypeSafe的Akka工具包允许您使用Actor系统(最初从Erlang派生),它为您提供线程上的抽象层 . 这些参与者能够通过将任何事物和所有内容作为消息传递来相互通信,并且可以并行执行并且不会阻止其他代码 .
Akka为您提供了在分布式环境中运行Actors的方法 .
另一方面,Apache Spark是一个无法手动处理的海量数据集的数据处理框架 . Spark使用我们称之为RDD(或弹性分布式数据集)的RDD(或弹性分布式数据集),它是传统数据结构上的分布式列表,例如抽象层,以便可以在彼此平行的不同节点上执行操作 .
Spark利用Akka工具包在不同节点之间调度作业 .
Apache Spark:
Spark运行程序在内存中比Hadoop MapReduce快100倍,在磁盘上快10倍 .
Spark为我们提供了一个全面,统一的框架来管理大数据处理需求,其中包括各种不同的数据集(文本数据,图形数据等)以及数据源(批量对实时流数据) .
与Hadoop生态系统和数据源( HDFS, Amazon S3, Hive, HBase, Cassandra 等)很好地集成
可以在 Hadoop YARN 或 Apache Mesos 管理的集群上运行,也可以在 Standalone 模式下运行
在 Scala, Java 和 Python 中提供API,在途中支持其他语言(如R)
除了Map和Reduce操作外,它还支持 SQL 查询,流数据,机器学习和图形数据处理 .
我们应该将Spark看作是Hadoop MapReduce的替代品,而不是Hadoop的替代品 .
请查看infoQ和toptal文章以便更好地理解 .
Major Use cases for Spark:
机器学习算法
交互式分析
流数据
Akka: 来自Letitcrash
看看这篇typesafe文章,以便更好地理解Actor框架 .
看看Akka文章&SO questions
主要用例:
交易处理
并发/并行
模拟
批处理
游戏和投注
复杂事件流处理