为什么Spark 1.6不使用Akka?

高源伯*_*高源伯 21 akka apache-spark

当我读取Master类的spark-1.6源代码时,receiveAndReply方法似乎没有使用Akka.[比照 在这里.]

为什么不使用Akka?他们用什么取代了Akka?

zer*_*323 36

使Spark独立于Akka背后的动机在SPARK-5293中得到了很好的描述,这是Akka相关问题的总括任务.

引用原始描述:

Spark取决于Akka,[因此]用户不可能依赖不同版本,过去我们收到了许多请求,要求获得有关此特定问题的帮助.例如,Spark Streaming可能被用作Akka消息的接收者 - 但我们对Akka的依赖要求上游Akka actor也使用相同版本的Akka.

由于我们对Akka的使用是有限的(主要用于RPC和单线程事件循环),我们可以用替代的RPC实现和Spark中的常见事件循环替换它.

如您所见,主要原因很简单 - 为用户提供更多创建自己的应用程序的灵活性.

同样消除了像Akka这样的复杂依赖关系,而Spark还没有广泛使用,这意味着维护成本更低.

  • Akka被`org.apache.spark.rpc`取代,它提供了与Akka类似的接口,但使用了Netty和Java NIO.请参阅[this commit](https://github.com/apache/spark/commit/bc1babd63da4ee56e6d371eb24805a5d714e8295). (9认同)