Apache Spark vs Akka
你能告诉我ApacheSpark和Akka之间的区别吗?我知道这两个框架都是用来编程分布式和并行计算的,但是我看不到它们之间的联系和区别。
此外,我还希望得到适合于每一个用例的用例。
阿帕奇火花实际上是建立在阿卡。
AKKA是在Scala或Java中创建反应性、分布式、并行和弹性并发应用的通用框架。AKKA使用actor模型隐藏所有与线程相关的代码,并为您提供非常简单和有用的接口,以轻松实现可扩展和容错系统。AKKA的一个很好的例子是一个实时应用程序,它使用和处理来自手机的数据,并将它们发送到某种存储中。
ApacheSark(非Spark流)是一个框架,用于使用通用版本的map reduce算法处理批处理数据。ApacheSark的一个很好的例子是计算存储数据的一些度量,以便更好地了解数据。数据将按需加载和处理。
ApacheSarkStreaming能够对几乎实时的小批量数据执行类似的操作和功能,就像在数据已经存储的情况下那样。
2016年4月更新
从ApacheSark1.6.0开始,ApacheSark不再依靠Akka进行节点间的通信。感谢@eugenemi的评论。
Spark用于数据处理,正如Akka用于管理应用程序中的数据和指令流一样。
DR
Spark和Akka是两个不同的框架,具有不同的用途和用例。
在构建分布式或其他应用程序时,可能需要通过并行方法(如使用线程)来调度和管理任务。想象一个拥有大量线程的巨大应用程序。这会有多复杂?
typesafe的(现在称为lightbend)akka工具包允许您使用actor系统(最初从erlang派生),它为您提供了线程上的抽象层。这些参与者能够通过以消息的形式传递任何东西来进行通信,并且能够并行地进行工作,而不会阻塞其他代码。
Akka为您提供了在分布式环境中运行参与者的方法,使您在顶部获得了一个樱桃。
另一方面,ApacheSpark是一个用于大量数据集的数据处理框架,这些数据集不能手动处理。Spark利用了我们所称的RDD(或弹性分布式数据集),它是一个分布式的列表式抽象层,覆盖在传统的数据结构上,这样就可以在彼此平行的不同节点上执行操作。
spark使用akka工具包在不同节点之间调度作业。
阿帕奇星火:
Apache Spark? is a fast and general engine for large-scale data processing.
Spark运行程序的速度比Hadoop MapReduce在内存中快100倍,或者磁盘上快10倍。
Spark为我们提供了一个全面、统一的框架,用各种性质不同的数据集(文本数据、图形数据等)以及数据源(第五批实时流数据)来管理大数据处理需求。
与Hadoop生态系统和数据源(HDF、Amazon S3、Hive、HBase、Cassandra等)完美集成。
可以在hadoop-yarn或apache-meos管理的集群上运行,也可以以独立模式运行
在Scala、Java和Python中提供API,同时支持其他语言(例如R)
除了映射和减少操作外,它还支持SQL查询、流式数据、机器学习和图形数据处理。
我们应该把Spark看作Hadoop MapReduce的替代品,而不是Hadoop的替代品。
请看一下InfoQ和Toptal的文章,以便更好地理解。
Spark的主要用例:
阿卡:来自莱蒂奇普拉斯
Akka is an event-driven middleware framework, for building high performance and reliable distributed applications in Java and Scala. Akka decouples business logic from low-level mechanisms such as threads, locks and non-blocking IO. With Akka, you can easily configure how actors will be created, destroyed, scheduled, and restarted upon failure.
请看一下这个类型安全的文章,以便更好地理解actor框架。
Akka provides fault-tolerance based on supervisor hierarchies. Every Actor can create other Actors, which it will then supervise, making decisions if they should be resumed, restarted, retired or if the problem should be escalated.
查看AKKA文章&so问题
主要用例: