下面是spark的乙個日誌計數示例,該程式演示了spark的計算模型:
下面是spark執行時涉及的各元件的概況圖:
從rdd轉換和儲存角度,使用者程式對rdd通過多個函式進行操作,將rdd進行轉換。block manager管理rdd的物理分割槽,每個block就是節點上對應的乙個資料塊,可以儲存在記憶體或磁碟。而rdd中的partition是乙個邏輯資料塊,對應相應的物理塊block。
本質上,乙個rdd在**中相當於是資料的乙個元資料結構,儲存著資料分割槽及其邏輯結構對映關係,儲存著rdd之前的依賴轉換關係。
作用於rdd上的操作分為transformantion和action。 經transformation處理之後,資料集中的內容會發生更改,由資料集a轉換成為資料集b;而經action處理之後,資料集中的內容會被歸約為乙個具體的數值。
只有當rdd上有action時,該rdd及其父rdd上的所有operation才會被提交到cluster中真正的被執行。
用spark的術語來說,static view稱為dataset-level view,而dynamic view稱為parition-level view,關係如圖所示:
在spark中的task可以對應於執行緒,worker是乙個個的程序,worker由driver來進行管理。
在原始碼閱讀時,需要重點把握以下兩大主線:
spark應用提交後經歷了一系列的轉換,最後成為task在每個節點上執行。
當有action作用於某rdd時,該action會作為乙個job被提交。
在提交的過程中,dagscheduler模組介入運算,計算rdd之間的依賴關係。rdd之間的依賴關係就形成了dag。
每乙個job被分為多個stage,劃分stage的乙個主要依據是當前計算因子的輸入是否是確定的,如果是則將其分在同乙個stage,避免多個stage之間的訊息傳遞開銷。
當stage被提交之後,由taskscheduler來根據stage來計算所需要的task,並將task提交到對應的worker。
大體概況如下圖所示:
關於spark的排程執行機制詳見下一節的rdd詳解中的介紹。
Spark基本概念
a.driver programs通過sparkcontent物件訪問spark b.sparkcontent代表和乙個集群的鏈結 c.在shell中sparkcontent物件自動建立好了,就是sc 主要分為兩種 python shell和 scala shell 現在主要介紹scala shel...
Spark的基本概念
2018年年末,開始spark學習 block 輸入可能以多個檔案的形式儲存在hdfs上,每個file都包含了很多塊,稱為block。inuptsplit 當spark讀取這些檔案作為輸入時,會根據具體資料格式對應的inputformat進行解析,一般是將若干個block合併成乙個輸入分片,稱為in...
spark學習 基本概念描述
什麼是spark?是apache旗下的一款開源專案,通俗的理解就是乙個分布式的大資料處理框架,有乙個很大優點,一棧式解決方案 spark與hadoop相比有哪些優點?為什麼spark比hadoop快?因為spark基於記憶體進行計算而hadoop基於磁碟進行計算,hadoop把每次計算的結果存回磁碟...