Spark 1.6可以配置为使用AKKA或Netty for RPC。如果配置了Netty,这是否意味着Spark运行时不使用actor模型进行消息传递(例如,在worker和驱动程序块管理器之间),或者甚至在netty配置的情况下,依赖于Netty使用自定义简化actor模型。
我认为AKKA本身依赖于netty而Spark只使用了AKKA的一部分。但是,与netty相比,配置AKKA对于可扩展性(就工人数而言)更好吗?有关这种特殊火花配置的任何建议吗?
答案 0 :(得分:4)
添加到@ user6910411s指针,该指针很好地解释了设计决策。
由link解释灵活性和消除对Akka的依赖是设计决策..
问题:
我认为AKKA本身依赖于netty而Spark只使用了一部分 AKKA。仍然,配置AKKA对于可扩展性更好(就其而言 工人数量与净额相比?对此有任何建议 特别是火花配置?
是可以将Spark 1.6配置为使用AKKA或Netty for RPC。
可以通过spark.rpc
进行配置,即val rpcEnvName = conf.get("spark.rpc", "netty")
,即默认值:netty。
这里有更多的见解,比如何去寻找......
Akka和Netty都处理异步处理和消息处理,但它们在W.R.T scalablity的不同级别工作。
Akka 是 更高级别框架 ,用于构建事件驱动,可伸缩,容错的应用程序。它侧重于用于消息处理的Actor类。演员有等级安排,父母演员负责监督他们的儿童演员。
Netty 也适用于消息,但它是稍低级别,并且更多地处理网络问题。它的核心是NIO。 Netty具有许多使用各种协议(如HTTP,FTP,SSL等)的功能。此外,您还可以对线程模型进行更细粒度的控制。
Netty实际上是在Akka w.r.t中使用的。分布式演员。
所以尽管它们都是异步的和面向消息,有 Akka你在你的问题领域中更抽象地思考,并且 Netty你更关注网络实施。
spark.rpc
标志,我的意思是val rpcEnvName = conf.get("spark.rpc", "netty")
不可用。在Spark2.0 code see RpcEnv.scala。