【问题标题】:Which is more scalable with Spark 1.6 (RPC): Netty or AKKA?使用 Spark 1.6 (RPC) 哪个更具可扩展性:Netty 还是 AKKA?
【发布时间】:2016-12-25 14:58:49
【问题描述】:

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

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

【问题讨论】:

    标签: apache-spark akka netty rpc


    【解决方案1】:

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

    正如link 所解释的那样,灵活性和消除对 Akka 的依赖是设计决策..

    问题:

    我认为 AKKA 本身依赖于 netty 而 Spark 只使用了 阿卡。尽管如此,配置 AKKA 是否更适合可扩展性(在 工人数量)与净值相比?对此有任何建议 特定的火花配置?

    是的,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。

    Netty 也适用于消息,但它是较低级别,更多地处理网络。它的核心是 NIO。 Netty 有很多功能可以使用各种协议,如 HTTP、FTP、SSL 等。此外,您可以更细粒度地控制线程模型。

    Netty 实际上是在 Akka w.r.t. 中使用的。分布式演员。

    因此,即使它们都是异步且面向消息的,但 Akka,您在问题领域中的思考更加抽象,并且 Netty 你更专注于网络实现。

    结论:Netty 和 Akka 都具有同等的可扩展性。请注意,Spark2 以后的默认值为 Netty,我看不到 Akka 为 spark.rpc 标志,我的意思是 val rpcEnvName = conf.get("spark.rpc", "netty") 不可用。在Spark2.0 code see RpcEnv.scala

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 2011-03-05
      • 1970-01-01
      • 2017-01-15
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多