Spark系列修煉 入門筆記15

2021-07-24 23:51:33 字數 1704 閱讀 1723

核心內容:

1、spark架構入門筆記

2、clustermanager–資源排程、driver—作業執行排程的詳解

今天進一步深入學習了spark,主要學習的內容為spark的核心架構,好的,進入本篇文章的正題。

注意:本篇文章談的是spark的stanalone模式。

先談一下我自己對於spark程式的執行機制:

1>使用者的應用程式通過spark的客戶端向我們的master提交程式

2>driver將程式提交給master之後,首先向master進行註冊,這樣使用者可以通過master節點檢視應用程式的執行狀態

3>隨後driver通過rpc協議向master節點申請資源並領取資源

4>driver申請到資源後,便於對應的worker節點進行通訊,要求它啟動任務

5>worker節點啟動完任務後,各個任務將通過rpc協議向driver報告自己的狀態和進度,以讓driver節點隨時掌握各個任務的執行狀態,從而可以在任務失敗時重新啟動任務。

6>spark程式執行完成後,driver節點向master節點登出並關閉自己,資源被**。到此任務執行完畢。

上面是我自己現在自己的理解。

從上面可以看出,spark的應用程式在執行的過程中並不會依賴於clustermanager。

接下來談一下worker

從上面的master中我們可以知道,雖然worker作為伺服器自身有相關的記憶體、cpu等。但是具體能夠為spark的應用程式提供多少記憶體等資源是由我們的master來決定的(呵呵,老大就是老大!)

worker:spark的工作節點。對spark的應用程式來說,由集群管理器master分配得到資源的worker節點主要負責以下工作:建立executor,將資源和任務進一步分配給executor,同步資源資訊給cluster manager。(先由老大master分配資源給worker,然後worker在將資源分配給executor,很明顯屬於資源的二次分配嘛)

worker節點管理著當前節點的記憶體和cpu等資源的使用狀況,接受master分配資源的指令,worker不會執行程式的**的。

呵呵,在補充一點:為什麼不能夠在ide整合開發環境中直接發布spark程式到spark集群中?

第一點:記憶體和cores的限制,預設情況下spark程式的driver會在提交spark程式的機器上,所以如果在ide中提交程式的話,那ide機器就必須非常強大。

第二點:driver要指揮workers的執行並頻繁的發生通訊。如果開發環境ide和spark集群不在同樣乙個網路下,就會出現任務丟失,執行緩慢等多種不必要的問題。

第三點:這是不安全的!

總結

在spark當中整個應用程式的執行,首先由dagscheduler將我們額job劃分成不同的stage,並將stage中的taskset提交給taskscheduler,進而提交給worker中的executor執行(符合資料本地性),每個task會計算rdd中的乙個partition,基於該partition(資料)來具體執行我們定義的一系列同乙個stage內部的函式,以此類推直到整個程式執行完成!!

Spark系列修煉 入門筆記17

核心內容 1 rdd入門筆記1 今天又邁出了一步 涉獵rdd,好吧,進入文章的正題 rdd是乙個容錯的,並行的資料結構,可以控制將資料儲存到磁碟或記憶體中,能夠獲取資料的分割槽。通常資料處理的模型包括 迭代計算 關係查詢 mapreduce 流失處理等。hadoop採用mapreduce模型,sto...

Spark系列修煉 入門筆記18

核心內容 1 spark當中常用的3種建立rdd的方式 2 自定義分片個數 並行度 今天又學習了一講spark spark本身就是乙個計算框架,就是乙個jvm計算框架而已 2016年12月份注定不平凡了,希望在2016年的最後乙個月份多做一些有意義的事情,畢業在即 好了,進入文章的正題,從學習spa...

Spark入門系列

讀完spark官方文件後,在研究別人的原始碼以及spark的原始碼之前進行一番入門學習,這個系列不錯。spark系列 除此之外,databricks也是乙個非常不錯的 上面可以使用免費的spark集群進行 提交與測試,在youtube以及spark大會中都有其發布教程以及spark應用部署的相關細節...