spark通信环境

spark通信环境

早期spark利用 Akka 作为内部通信部件,后来使用Netty替代Akka
在这里插入图片描述
BIO(阻塞式IO):当多个线程等待同一种资源时,在BIO模式下,未等到资源的线程会被阻塞

NIO(非阻塞式IO):当多个线程等待同一种资源时,在NIO模式下,未等到资源的线程可以先去做其他操作,但是在这个过程中会轮询等待的资源

AIO(异步非阻塞式IO):当多个线程等待同一种资源时,在AIO模式下,未等到资源的线程可以完全去做其他操作,等资源轮到该线程,就把资源送到指定位置即可

由于linux对AIO支持不好,因此linux利用Epoll的方式模仿AIO操作

Driver和Executor通信机制

在这里插入图片描述
在Driver和Executor中其实组件是相似的

inbox:收件箱,用来收来自各个Executor的信件

ouboxes:发件箱,用来向Driver等发信件

TransportClient:Netty 通信客户端,一个 OutBox 对应一个TransportClient,TransportClient不断轮询 OutBox,根据 OutBox 消息的receiver 信息,请求对应的远程 TransportServer

TransportServer:Netty 通信服务端,一个 RpcEndpoint 对应一个 TransportServer,接受远程消息后调用 Dispatcher 分发消息至对应收发件箱

每个TransportClient实例只能和一个远端的RPC服务通信,所以Spark中的组件如果想要和多个RPC服务通信,就需要持有多个TransportClient实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值