1. 程式人生 > >Spark2.1內部原理剖析與源碼閱讀、程序設計與企業級應用案例

Spark2.1內部原理剖析與源碼閱讀、程序設計與企業級應用案例

封裝 以及 url string 計算機網絡 內部原理 企業級 目標 sql

1、本文目標以及其它說明:

本文或者本次系列主要是弄清楚spark.2.2.0版本中,spark core 包下rpc通信情況。從源代碼上面看到,底層通信是用的netty,因為本系列以及本文是專項學習spark,故netty只會涉及到不會去講解。在讀源碼前考慮到spark的體系結構有spark core / spark sql / spark streaming / spark machinelearning / spark graphx ,所有的都是依賴於spark core ,所以先從spark core 開始研究,又因為看源碼的過程中腦子裏老是在想底層通信是怎麽回事,故首先就是從一個子項目的底層模塊一個一個地突破。整體研究思路是模塊中的數據結構,以及數據結構之間是什麽關系,以及數據結構之間的算法。即(軟件 = 數據結構 + 算法)

2、rpc 包下面的數據結構說明

研究思路說明: 因為軟件 = 數據結構+算法。算法是基於數據結構,所以會先研究數據結構。先從包裏面最簡單的數據結構開始,由簡單到復雜的數據結構。包括數據結構簽名、作用、以及封裝抽象的類型等等。

a: 樣例類 RpcAddress:封裝的是 IP+端口。

聯想計算機網絡:

1 、由計算機網絡可以知道,通過IP+端口我們就能夠定位到網絡中具體的某個進程,並能夠和她通信,建立聯系。

2、因為是spark的RPC,通信用的協議是spark專有的。類比於HTTP協議

private[spark] case class RpcAddress(host: String, port: Int) {

  def hostPort: String = host + ":" + port

  /** Returns a string in the form of "spark://host:port". */
def toSparkURL: String = "spark://" + hostPort override def toString: String = hostPort }

Spark2.1內部原理剖析與源碼閱讀、程序設計與企業級應用案例