天天看點

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

繼續閱讀