【发布时间】:2016-05-25 22:35:10
【问题描述】:
当我阅读 Master 类的 spark-1.6 源代码时,receiveAndReply 方法似乎没有使用 Akka。 [参照。 here.]
为什么不使用 Akka ?他们用什么代替了 Akka?
【问题讨论】:
标签: apache-spark akka
当我阅读 Master 类的 spark-1.6 源代码时,receiveAndReply 方法似乎没有使用 Akka。 [参照。 here.]
为什么不使用 Akka ?他们用什么代替了 Akka?
【问题讨论】:
标签: apache-spark akka
SPARK-5293 很好地描述了使 Spark 独立于 Akka 背后的动机,这是 Akka 相关问题的总括任务。
引用原描述:
Spark 依赖于 Akka,[所以] 用户不可能依赖不同的版本,过去我们收到了很多关于这个特定问题的请求。例如,Spark Streaming 可能被用作 Akka 消息的接收器 - 但我们对 Akka 的依赖要求上游 Akka 参与者也使用相同版本的 Akka。
由于我们对 Akka 的使用是有限的(主要用于 RPC 和单线程事件循环),我们可以用替代的 RPC 实现和 Spark 中的通用事件循环来替换它。
如您所见,主要原因很简单 - 让用户在创建自己的应用程序时更加灵活。
还去除了像 Akka 这样的复杂依赖,反正 Spark 还没有广泛使用它,这意味着维护成本更低。
【讨论】:
org.apache.spark.rpc 取代,org.apache.spark.rpc 提供与 Akka 类似的接口,但使用 Netty 和 Java NIO。见this commit。