Spark天堂之門解密

2022-09-18 11:24:14 字數 2782 閱讀 7675

spark 天堂之門就是sparkcontext,這篇文章會從 sparkcontext 建立3大核心物件 taskschedulerimpl、dagscheduler 和 schedulerbackend 開始到註冊給 master 這個過程中的原始碼鑑賞,sparkcontext 是整個 spark 程式通往集群的唯一通道,它是程式起點,也是程式終點,所以把它稱之為天堂之門,看過 spark helloworld 程式的朋友都知道,你在程式的開頭必需先定義sparkcontext、接著呼叫 sparkcontext 的方法,比如說 sc.textfile(file),最後也會呼叫 sc.stop( ) 來退出應用程式。現在我們就來看看 sparkcontext 裡面到底有什麼秘密,以及為什麼它會被稱為天堂之門。希望這篇文章能為讀者帶出以下的啟發:

spark 程式在執行的時候分為driverexecutor兩部分

spark 程式編寫是基於 sparkcontext 的,具體來說包含兩方面

spark 程式設計的核心基礎-rdd 是由 sparkcontext 來最初建立的(第乙個rdd一定是由 sparkcontext 來建立的)

spark 程式的排程優化也是基於 sparkcontext,首先進行排程優化。

spark 程式的註冊時通過 sparkcontext 例項化時生產的物件來完成的(其實是 schedulerbackend 來註冊程式)

spark 程式在執行的時候要通過 cluster manager 獲取具體的計算資源,計算資源獲取也是通過 sparkcontext 產生的物件來申請的(其實是 schedulerbackend 來獲取計算資源的)

sparkcontext 崩潰或者結束的時候整個 spark 程式也結束啦!

執行乙個程式,你會看見 sparkcontext 從程式開始到結束都有它的身影,sparkcontext 是 spark 應用程式的核心呀!

[下圖是乙個 helloword 應用程式在 idea 中的執行狀況]

這次主要是看當提交spark程式後,在 sparkcontext 例項化的過程中,裡面會建立多少個核心例項來為應用程式完成註冊,sparkcontext 最主要的是例項化 taskschedulerimpl。

[下圖是 sparkcontext 在建立核心物件後的流程圖]

sparkcontext 構建的頂級三大核心:dagscheduler,taskscheduler,schedulerbackend,其中:

從整個程式執行的角度來講,sparkcontext 包含四大核心物件:dagscheduler,taskscheduler,schedulerbackend,mapoutputtrackermaster

sparkdeployschedulerbackend 有三大核心功能:

補充說明的是 sparkdeployschedulerbackend 是被 taskschedulerimpl 來管理的!

建立 sparkcontext 的核心物件

taskschedulerimpl.initialize( )方法是

呼叫 taskscheduler 的 start( ) 方法

coarsegrainedexecutorbackend

sparkdeployschedulerbackend 的 start 方法內幕

它是乙個 rpcendpoint,然後接下來的故事就是向 master 註冊,首先呼叫自己的 onstart 方法

然後再呼叫 registerwithmaster 方法

master 接受程式的註冊

sparkcontext 開啟了天堂之門:spark 程式是通過 sparkcontext 發布到 spark集群的sparkcontext 導演了天堂世界:spark 程式執行都是在 sparkcontext 為核心的排程器的指揮下進行的:sparkcontext 關閉了天堂之門:sparkcontext 崩潰或者結束的是偶整個 spark 程式也結束啦!

程式提交整體流程如下圖:

Spark學習(一)之Spark初識

1.spark歷史及簡介 spark是乙個實現快速通用的集群計算平台。它是由加州大學伯克利分校amp實驗室 開發的通用記憶體平行計算框架,用來構建大型的 低延遲的資料分析應用程式。它擴充套件了廣泛使用的mapreduce計算模型。12年正式開源,距今6年歷史。spark執行架構的設計 cluster...

初始spark 四 之spark儲存管理

我們在使用spark進行資料相關的操作的時候,經常會用到的是rdd,但是我們也都知道rdd是乙個抽象的資料集,並不是真正的資料儲存的地方,rdd使我們對資料的操作更方便,其實rdd的出現避免了我們對資料儲存底部的接觸,可以更方便的編寫我們的應用。其實資料的儲存都是由spark的儲存管理模組實現和管理...

Problem A 天堂 珍珠

problem a 天堂 珍珠 time limit 5000ms memory limit 65536k total submit 232 accepted 106 description 我有很多很多 n條 用魔法合成的珍珠項鍊 其實神仙比凡人更愛美 每天起來我都要從中挑一條戴上 挑哪條很有講究...