Spark內(nèi)核分析之Spark的HA源碼分析

????????Spark作業(yè)運(yùn)行的集群環(huán)境有兩種,分別基于standalone模式和Yarn集群模式。我們知道Yarn集群提供了HA來保證了集群的高可用,而standalone也提供了一種集群高可用的方法,即通過配置可以實(shí)現(xiàn)雙master機(jī)制,保證在一個(gè)master掛掉以后,另外一個(gè)master立即啟用。spark的主備切換提供了兩種模式,一種是基于文件系統(tǒng)的,另外一種是基于zookeeper的。下面我們來看看spark集群的master主備切換是怎么實(shí)現(xiàn)的,如下圖所示;

Master主備切換原理圖

1.當(dāng)active master掛掉以后,通知standby master啟動(dòng),并使用持久化引擎對(duì)持久化數(shù)據(jù)進(jìn)行讀取;

2.持久化引擎將不為空的數(shù)據(jù)全部注冊(cè)到master的內(nèi)存緩沖中;

3.master向所有的Application,Worker發(fā)送自己的地址信息;

4.Application,Driver,Worker收到消息并返回一個(gè)消息告知master;

5.master一一接收到來自各個(gè)Application,worker,Driver的消息以后,開始過濾掉沒有響應(yīng)的節(jié)點(diǎn)信息,然后開始調(diào)用scheduler()方法,開始為相關(guān)進(jìn)程分配資源;

通過以上原理的介紹,下面看看我們的源碼具體是怎么實(shí)現(xiàn)的,

worker過濾具體實(shí)現(xiàn)
application過濾實(shí)現(xiàn)
Driver過濾實(shí)現(xiàn)

????????關(guān)于持久化引擎的補(bǔ)充說明,在spark中引入了三種持久化引擎,分別是基于文件的持久化引擎,基于zookeeper的持久化引擎,BlackHolePersistenceEngine引擎;系統(tǒng)默認(rèn)采用的是基于文件的持久化引擎,可以通過spark.deploy.recoveryMode參數(shù)配置具體采用那種持久化引擎,該參數(shù)的設(shè)置位置時(shí)spark-env.sh中。

設(shè)置為zookeeper的方式:

//spark.deploy.recoveryMode=ZOOKEEPER

//spark.deploy.zookeeper.url=192.168.1.100:2181,192.168.1.101:2181

// /spark是默認(rèn)的,可以不寫

//spark.deploy.zookeeper.dir=/spark

設(shè)置為基于文件系統(tǒng)的方式:

spark.deploy.recoveryMode=FILESYSTEM

spark.deploy.recoveryDirectory=/usr/local/src/spark/dataDir

總結(jié):到這里基本上關(guān)于spark的HA的原理及實(shí)現(xiàn)分析就完了,后續(xù)關(guān)于其他組件的實(shí)現(xiàn)及源碼不定期更新,歡迎關(guān)注。

如需轉(zhuǎn)載,請(qǐng)注明:

上一篇:Spark內(nèi)核分析之SparkContext初始化源碼分析

本篇:Spark內(nèi)核分析之Spark的HA源碼分析

下一篇:Spark內(nèi)核分析之Master的注冊(cè)機(jī)制實(shí)現(xiàn)原理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容