Spark最新2.x源码一SparkRPC背景简介--sparkRPC的发展演化史

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

欢迎访问:https://blog.youkuaiyun.com/qq_21439395/article/details/82817475

交流QQ: 824203453

  1. Spark RPC简介

RPC(Remote Procedure Call Protocol)--远程过程调用协议

RPC是分布式项目的基石,Spark RPC被deploy、scheduler、shuffle、storage等多个模块使用,掌握了rpc就能轻松掌握spark的底层运行机制。spark底层通信最初使用akka的actor实现,并在spark1.4版本标准化了rpc相关的接口。

spark为了底层通信框架的通用性,改造出来的一个简易的rpc通信框架。

标准化接口是为了能够实现基于其他技术的rpc方案,在spark1.6版本中rpc的默认实现由基于akka的actor转变为基于netty,解决了实际项目中可能存在的akka版本问题。

使用netty替代akka的原因:

  1. akka在传输大文件的时候,性能不佳。
  2. 很多Spark用户也使用Akka,但是由于Akka不同版本之间无法互相通信,这就要求用户必须使用跟Spark完全一样的Akka版本,导致用户无法升级Akka。

 

简而言之,spark虽然在1.6之后,使用Netty替代了Akka,但是由于1.4版本中做了接口规范。接口规范的语法风格非常类似于Akka,最底层的服务可以任意选用netty或者Akka。

所以,如果掌握了akka的通信机制,那么就能轻松上手spark源码了。而无需掌握netty。

 

在讲spark的源码分析之前,需要先熟悉下akka的通信机制,以及了解一下netty。

  1. Akka快速上手

Akka ,scala语言开发的用于处理分布式的框架。

Actor 模型。

只能通过发送消息来进行通信。

Actor: 参与通信的双方,都是一个Actor。

ActorSystem: Actor 都由ActorSystem来创建。

一个jvm中,有一个ActorySystem,有多个Actor。

 

Actor, ActorRef, ActorSystem

 

简单示例

spark简易RPC通信框架。利用Akka,Actor来实现的。

完整示例代码可以加qq:824203453索取。

或关注www.51doit.com,源码解析视频稍后会同步在腾讯课堂上架。敬请关注:

https://51doit.ke.qq.com/#tab=1&category=-1

 

    1. Netty的快速上手

Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

通俗而言,就是个程序,封装了java NIO。

是建立在客户端和服务端之间的,用于Socket通信。

Spark2.2中使用的netty 版本:

 

netty的maven依赖:

https://search.maven.org/

<!-- Netty -->
<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.1.6.Final</version>
</dependency>

  1. spark中的网络通信

spark中的网络通信无处不在:

driver和master的通信,比如driver会向master发送RegisterApplication消息

master和worker的通信,比如worker会向master上报worker上运行Executor信息

executor和driver通信,executor运行在worker上,spark的tasks被分发到运行在各个executor中,executor需要通过向driver注册,心跳,发送任务运行结果等操作。

其他的一些通信

 

通信主要分为两类:

1,汇报信息。 task状态,executor状态,worker状态等

2,传输数据,spark shuffle(也就是reduce从上游map的输出中汇集输入数据)阶段存在大量的数据传输。

在spark中这两种采用了不同的实现方式,第一种, spark基于netty实现了简单的rpc框架,第二种基于netty实现了数据传输服务。

 

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

欢迎访问:https://blog.youkuaiyun.com/qq_21439395/article/details/82817475

交流QQ: 824203453

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值