apache-spark - 哪个使用 Spark 1.6 (RPC) : Netty or AKKA? 更具可扩展性

标签 apache-spark akka netty rpc

Spark 1.6 可以配置为使用 AKKA 或 Netty 进行 RPC。如果配置了 Netty,这是否意味着 Spark 运行时不使用 Actor 模型进行消息传递(例如,在工作人员和驱动程序 block 管理器之间),甚至在 Netty 配置的情况下,依赖于 Netty 使用自定义简化的 Actor 模型。

我认为 AKKA 本身依赖于 netty,而 Spark 只使用了 AKKA 的一个子集。尽管如此,与 netty 相比,配置 AKKA 是否更适合可扩展性(就 worker 数量而言)?对这种特殊的 Spark 配置有什么建议吗?

最佳答案

添加到@user6910411s 指针,很好地解释了设计决策。

正如 link 所解释的那样灵 active 和消除对 Akka 的依赖是设计决策。

Question :

I think AKKA itself relies on netty and Spark uses only a subset of AKKA. Still, is configuring AKKA is better for scalability (in terms of number of workers) as compared to netty? any suggestion on this particular spark configuration?



是的,Spark 1.6 可以配置为使用 AKKA 或 Netty 进行 RPC。

可以通过spark.rpc配置即 val rpcEnvName = conf.get("spark.rpc", "netty") 这意味着默认值:netty。

see 1.6 code base

这里有更多的见解,什么时候去做什么......

Akka 和 Netty 都处理异步处理和消息处理,但它们工作在不同级别的 W.R.T 可扩展性。

Akka 更高层次的框架用于构建事件驱动、可扩展、容错的应用程序。它侧重于消息处理的 Actor 类。 Actor 有等级安排,父 Actor 负责监督他们的子 Actor。

网络 也适用于消息,但它是 稍微低一点并更多地处理网络。它的核心是 NIO。 Netty 具有许多使用各种协议(protocol)(如 HTTP、FTP、SSL 等)的功能。此外,您可以对线程模型进行更细粒度的控制。

Netty 实际上在 Akka w.r.t. 中使用。分布式 Actor 。

So even though they are both asynchronous & message-oriented, with Akka you are thinking more abstractly in your problem domain, and with Netty you are more focused on the networking implementation.



结论:Netty 和 Akka 都具有同等的可扩展性。另请注意,Spark2 及更高版本默认为 Netty,我无法将 Akka 视为 spark.rpc标记那里我的意思是val rpcEnvName = conf.get("spark.rpc", "netty")不可用。在 Spark2.0 code see RpcEnv.scala .

关于apache-spark - 哪个使用 Spark 1.6 (RPC) : Netty or AKKA? 更具可扩展性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41322171/

相关文章:

scala - 按键分组时,Spark 内存不足

python - 如何格式化pyspark中的数字列?

java - 在 Java 中使用 Akka 的 REST API

java - 无法使用自定义用户监护人从外部在 ActorSystem 上创建顶级 Actor [clusterSingletonManager]

Java Spark - java.lang.OutOfMemoryError : GC overhead limit exceeded - Large Dataset

scala - 在scala Spark中将文件读入数组列表

json - 使用 AKKA Stream 解码分块 JSON

netty - 如何获取 Netty channel 的一些 ID?

java - 修改Netty ServerBootstrap ChannelInitializer

java - Netty IO 无所事事的编解码器?