rdd(resilient distributed dateset)叫做彈性分布式資料集,是spark中最基本的資料抽象,它代表乙個不可變、可分割槽、裡面的元素可平行計算的集合。rdd具有資料流模型的特點:自動容錯、位置感知性排程和可伸縮性。rdd之間存在依賴關係,可進行恢復,rdd代表的資料集可以快取,以便於加速後面的rdd計算,加快效率。rdd允許使用者在執行多個查詢時顯式地將工作集快取在記憶體中,後續的查詢能夠重用工作集,這極大地提公升了查詢速度。
一組分片(partition),即資料集的基本組成單位。對於rdd來說,每個分片都會被乙個計算任務處理,並決定平行計算的粒度。使用者可以在建立rdd時指定rdd的分片個數,如果沒有指定,那麼就會採用預設值。預設值就是程式所分配到的cpu core的數目。
乙個計算每個分割槽的函式。spark中rdd的計算是以分片為單位的,每個rdd都會實現compute函式以達到這個目的。compute函式會對迭代器進行復合,不需要儲存每次計算的結果。
rdd之間的依賴關係。rdd的每次轉換都會生成乙個新的rdd,所以rdd之間就會形成 類似於流水線一樣的前後依賴關係。在部分分割槽資料丟失時,spark可以通過這個依賴關係重新計算丟失的分割槽資料,而不是對rdd的所有分割槽進行重新計算。
乙個partitioner,即rdd的分片函式。當前spark中實現了兩種型別的分片函式,乙個是基於雜湊的hashpartitioner,另乙個是基於範圍的rangepartitioner。只有對於key-value的rdd,才會有partitioner,非key-value的rdd的partitioner的值是none。partitioner函式不但決定了rdd本身的分片數量,也決定了parent rdd shuffle輸出時的分片數量。
乙個列表,儲存訪問每個partition的優先位置(preferref localtion)。對於乙個hdfs檔案來說,這個列表儲存的就是每個partition所在的塊的位置。按照「移動資料不如移動計算」的理念,spark在進行任務排程的時候,會盡可能地將計算任務分配到其所要處理資料塊的儲存位置。
三、rdd程式設計api
rdd中的所有轉換都是延遲載入的,也就是說,它們並不會直接計算結果。相反的,它們只是記住這些應用到基礎資料集(例如乙個檔案)上的轉換動作。只有當發生乙個要求返回結果給driver的動作時,這些轉換才會真正執行。這種設計讓spark更加有效率地執行。
Spark(六) Spark計算模型
整個spark框架都是基於rdd運算元來進行計算的。what is rdd?resilient distributed dataset rdd 分布式彈性資料集,是spark上的乙個核心抽象 表示用於平行計算的,不可修改的,對資料集合進行分片的資料結構 簡單地,可以將rdd看成是spark平台上的通...
Spark 模型總結
註明 以及相關資料均來自scalable machine learning from berkelyx,只是個人總結使用,侵權即刪 mr的價值體現在對大資料集的分布式處理上。如下面的圖例 來自scalable machine learning from berkelyx 將大規模的文件先分開成不同的...
Spark資源模型
spark作業執行圖 1.使用spark submit提交乙個spark應用,這個應用 作業會啟動乙個對應的driver程序,這個driver會根據提交模式的不同,可能在本地啟動 client 也可能在集群中某個工作節點 cluster 上啟動。driver服務程序啟動,會根據我們設定的引數,占用一...