天天看点

spark学习-72-源代码:Endpoint模型介绍(4)-Spark为何使用Netty通信框架替代Akka

spark学习-72-源代码:Endpoint模型介绍(4)-Spark为何使用Netty通信框架替代Akka

问题导读:

  1. spark 如何在1.6.0之后使用Netty替代了Akka?
  2. Spark Network Common怎么实现?
  3. BlockTransfer 与 Shuffle 之间的联系?
  4. Akka 实现原理是什么?

解决方案:

一直以来,基于Akka实现的RPC通信框架是Spark引以为豪的主要特性,也是与Hadoop等分布式计算框架对比过程中一大亮点,但是时代和技术都在演化,从Spark1.3.1版本开始,为了解决大块数据(如Shuffle)的传输问题,Spark引入了Netty通信框架,到了1.6.0版本,Netty居然完成取代了Akka,承担Spark内部所有的RPC通信以及数据流传输。

网络IO扫盲贴

在Linux操作系统层面,网络操作即为IO操作,总共有:阻塞式,非阻塞式,复用模型,信号驱动和异步五种IO模型。其中

阻塞式IO操作请求发起以后,从网卡等待/读取数据,内核/到用户态的拷贝,整个IO过程中,用户的线程都是处于阻塞状态。

非阻塞与阻塞的区别在于应用层不会等待网卡接收数据,即在内核数据未准备好之前,IO将返回E

继续阅读