目錄
1. spark介紹
2. rdd理解
2.1 rdd概念
2.2 partition分片
2.3 partitioner
3. 寬窄依賴
4. stage劃分
4. spark與dag 註腳
spark是基於記憶體計算的大資料平行計算框架。特性:dag執行引擎,可分布式,基於記憶體計算。
rdd:是彈性分布式資料集(resilient distributed dataset)的簡稱,是分布式記憶體的乙個抽象概念,提供了一種高度受限的共享記憶體模型。rdd是spark中最基本的資料單元,它代表乙個不可變、可分割槽、內部元素可平行計算的抽象資料集合。rdd由一組分片(partition)組成。
partition(分片):是rdd的基本組成單位,也是spark中參與計算的最基本的單元。正是由於rdd的分片屬性,才保證了spark的可分布式計算能力。
當前spark中實現了兩種型別的分片函式,乙個是基於雜湊的hashpartitioner,另外乙個是基於範圍的rangepartitioner。分片是nosql中的概念,就是對大資料集依據key進行切分並形成小塊,然後進行儲存。
不同的rdd運算元之間的依賴關係可分為:寬依賴(shuffle dependency)和窄依賴(narrow dependency)。
spark根據rdd的寬窄依賴關係將dag劃分為不同的stage,從而將task任務分配到不同的物理計算節點上,進而達到計算效率的優化。換句話說,spark的dag計算就相當於相互關聯的stage進行計算,stage相當於dag中的乙個頂點,因為乙個stage也會形成乙個rdd。關鍵:由於窄依賴之間關係是一對一的,因此,可將連續窄依賴劃分為乙個的stage;而寬依賴的計算需要等到所有父節點計算完成後才可進行,因此,寬依賴直接劃分為乙個stage。劃分思路:在dag中,從後向前開始劃分,遇到寬依賴就切開,劃分成不同的stage;遇到窄依賴,則保留並合併為乙個stage。
rdd是spark中最基本的資料單元,各個rdd之間通過不同rdd運算元,連線形成了dag(有向無環圖),並依據rdd的寬窄依賴關係將dag劃分為不同的stage,使得spark更加高效的排程及計算。spark任務劃分底層邏輯:個人理解:在spark中,dag中的頂點就相當於stage,關係就相當於寬依賴運算元。
若有錯誤,請指正交流。
不積跬步,無以至千里。–zlg358 2019/7/2
對spark中RDD的理解
update at 2016.1.25 rdd作者的 鏈結 的理解 spark要解決的問題 1 有些資料要多次讀寫,磁碟速度很慢 2 沒有互動的介面,不能看到中間結果 適用的應用 1 機器學習 多個迭代次運算,逼近 優化問題 是不是三維重建中優化也可以用到這個 2 計算結果還要用的 pagerank...
Spark學習之RDD程式設計(一)
rdd是spark的核心概念,它是乙個可讀的 可分割槽的分布式資料集,這個資料集的全部或部分可以快取在記憶體中,可在多次計算間重用。spark用scala語言實現了rdd的api,我們可以通過呼叫api實現對rdd的各種操作,從而實現各種複雜的應用。spark採用textfile 方法從檔案系統中載...
Spark中RDD資料結構的理解
spark在國內的大量普及,越來越多人學習spark技術,作為spark core中最重要的資料結構rdd,是學習spark重點之一 rdd resilient distributed datasets,彈性分布式資料集 是spark最為核心的概念,自然也是理解apache spark 工作原理的最...