Spark RPC阅读笔记(初稿)

原创 2016年06月01日 19:07:48

阅读代码的版本为2.0.0-SNAPSHOT。在最新的Spark源码中,RPC统一采用了Netty作为传输框架。主要由RpcEnv,RpcEndpointRpcEndpointRef组成,他们之间的关系图如下:
这里写图片描述

RpcEnv必须由RpcEnvFactory实现,RpcEnv可以理解一个容器,所有的RpcEndpoint都必须像RpcEnv注册,并得到对应的RpcEndpointRef,这样就可以由RpcEndpointRef 发送消息到RpcEnv,由RpcEnv找到对应的RpcEndpoint并对收到的消息进行处理和反馈。接下来简单介绍下这三个类:

RpcEnv

RpcEnv的类的注释如下:
An RPC environment. RpcEndpoints need to register itself will process messages sent from RpcEndpointRef or remote nodes, and deliver them to corresponding RpcEndpoints. For uncaught exceptions caught by RpcEnv, RpcEnv will use RpcCallContext.sendFailure to send exceptions back to the sender, or logging them if no such sender or to retrieve RpcEndpointRefs given name or uri.

大致意思就是上面我写的那段话,对于出现了错误,RpcEnv会将错误发回到Sender或者日志记录。

注册方法:

/**
   Register a RpcEndpoint with a name and return its RpcEndpointRef. RpcEnv
does not guarantee thread-safety.
   */
  def setupEndpoint(name: String, endpoint: RpcEndpoint): RpcEndpointRef

注册RpcEndpointRpcEnv,并返回对应的RpcEndpointRef.

类中还有一些获得对应RpcEndpointRef的方法。

RpcEndpoint

RpcEndpoint类的注释:
An end point for the RPC that defines what functions to trigger given a message. It is guaranteed that onStart, receive and onStop will be called in sequence. The life-cycle of an endpoint is: constructor -> onStart -> receive -> onStop

Note: receive can be called concurrently. If you want receive to be thread-safe, please use ThreadSafeRpcEndpoint. If any error is thrown from one of RpcEndpoint methods except onError, onError will be invoked with the cause. If onError throws an error, RpcEnv will ignore it.

RpcEndpoint定义了一系列对接受到的消息做出反应的方法.RpcEndpoint的内部的生命周期是constructor -> onStart -> receive -> onStop。主要的处理逻辑是根据在receive收到消息,然后调用相应的处理方法。
receive可以并发访问,Spark提供了ThreadSafeRpcEndpoint线程安全的版本。

RpcEndpointRef

RpcEndpointRef类的注释:
A reference for a remote RpcEndpoint. RpcEndpointRef is thread-safe.

可以理解为是RpcEndpoint的远程引用,内部的方法主要是发送消息的一些方法。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Spark源码学习笔记6-RpcEnv(Rpc实现层)

继5-RpcEnv(Rpc抽象层) 之后,我们再来了解下Rpc框架下的实现层。

Spark源码学习笔记5-RpcEnv(Rpc抽象层)

继4-SparkEnv 之后,我们再来详细研究下SparkEnv中出现的一个核心RpcEnv。

Spark RPC之RpcEndpointVerifier

RpcEndpointVerifier的作用是,当RpcEndpointRef访问对应的RpcEndpoint前,判断RpcEndpoint是否存在

Spark RPC之Netty启动

Spark RPC概述中我们介绍了Spark RPC接口的设计和使用,并且spark1.6版本中RPC底层实现使用netty,并在后续2.x版本中彻底移除了akka,因此,我们看下Spark RPC内...

Spark底层通信RPC源码分析

这是本人自己看着源码和经验来进行分析,可能排版或者文章里面有错误或者错别字,敬请谅解,也可加本人QQ:157788748来进行交流,如果真的对你有帮助麻发个红包支持一下作者 谢谢

Spark RPC之Dispatcher、Inbox、Outbox

概要 Dispatcher、Inbox、Outbox完成了Spark RPC底层对请求消息的分发及处理流程,Dispatcher和Inbox作用于server端,处理请求,Outbox作用于clie...

Spark RPC之Master实现

上篇文章Spark RPC概述介绍了Spark RPC的实现思路,有了上述基础,我们看一个具体例子,就是standalone模式下的Master和Worker,主要关注Worker如何向Master注...

Spark Rpc通信分析

Spark 1.6+推出了以RPCEnv、RPCEndpoint、RPCEndpointRef为核心的新型架构下的RPC通信方式。其具体实现有Akka和Netty两种方式,Akka是基于Scala的A...

Spark RPC之RpcEnvFileServer

spark运行时executor需要远程下载driver上的jar或文件,对应的内部实现为RpcEnvFileServer,RpcEnvFileServer的子类有NettyStreamManager...

Spark RPC概述

概要 Spark RPC被deploy、scheduler、shuffle、storage等多个模块使用,是深入学习这些模块的前提。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)