Spark RDD設計學習筆記

本文檔是學習RDD經典論文《Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing》的學習筆記。
date:2016/8/3
author:wangxlhtml

1 引言

一種分佈式的內存抽象,稱爲彈性分佈式數據集(RDD,Resilient Distributed Datasets)。程序員

2 彈性分佈式數據集(RDD)

2.1 目標

目標:爲基於工做集的應用(即多個並行操做重用中間結果的這類應用)提供抽象。
1.自動容錯
1.檢查點(成本高)
2.記錄數據的更新(粗粒度) ✔
2.位置感知性調度
3.可伸縮性
不適合:RDD不太適合那些異步細粒度地更新共享狀態的應用,例如並行web爬行器。web

2.2 RDD抽象

RDD是隻讀的、分區記錄的集合。RDD只能基於在穩定物理存儲中的數據集和其餘已有的RDD上執行肯定性操做來建立。
RDD不須要物化。根據Lineage能夠從物理存儲的數據計算出相應的RDD分區。編程

2.3 編程模型

在Spark中,RDD被表示爲對象,經過這些對象上的方法(或函數)調用轉換。
定義RDD以後,程序員就能夠在動做中使用RDD了。動做是嚮應用程序返回值,或向存儲系統導出數據的那些操做(延遲計算)。
控制RDD:
1.緩存
2.分區緩存

2.4 RDD與分佈式共享內存DSM


與DSM相比,RDD模型有兩個好處。第一,對於RDD中的批量操做,運行時將根據數據存放的位置來調度任務,從而提升性能。第二,對於基於掃描的操做,若是內存不足以緩存整個RDD,就進行部分緩存。把內存放不下的分區存儲到磁盤上,此時性能與現有的數據流系統差很少。
最後看一下讀操做的粒度。RDD上的不少動做(如count和collect)都是批量讀操做,即掃描整個數據集,能夠將任務分配到距離數據最近的節點上。同時,RDD也支持細粒度操做,即在哈希或範圍分區的RDD上執行關鍵字查找。app

3. Spark編程接口

1.轉換
2.動做

4. 應用程序示例

5. RDD的描述及做業調度

每一個RDD都包含:
1.一組RDD分區(partition,即數據集的原子組成部分)
2.對父RDD的一組依賴,這些依賴描述了RDD的Lineage
3.一個函數,即在父RDD上執行何種計算
4.元數據,描述分區模式和數據存放的位置。例如,一個表示HDFS文件的RDD包含:各個數據塊的一個分區,並知道各個數據塊放在哪些節點上。並且這個RDD上的map操做結果也具備一樣的分區,map函數是在父數據上執行的。


RDD之間的依賴關係:
1.窄依賴(narrow dependencies):子RDD的每一個分區依賴於常數個父分區(即與數據規模無關)
2.寬依賴(wide dependencies):子RDD的每一個分區依賴於全部父RDD分區。例如,map產生窄依賴,而join則是寬依賴(除非父RDD被哈希分區)異步

5.1 RDD實現舉例

HDFS文件:目前爲止咱們給的例子中輸入RDD都是HDFS文件,對這些RDD能夠執行:partitions操做返回各個數據塊的一個分區(每一個Partition對象中保存數據塊的偏移),preferredLocations操做返回數據塊所在的節點列表,iterator操做對數據塊進行讀取。
map:任何RDD上均可以執行map操做,返回一個MappedRDD對象。該操做傳遞一個函數參數給map,對父RDD上的記錄按照iterator的方式執行這個函數,並返回一組符合條件的父RDD分區及其位置。
union:在兩個RDD上執行union操做,返回兩個父RDD分區的並集。經過相應父RDD上的窄依賴關係計算每一個子RDD分區(注意union操做不會過濾重複值,至關於SQL中的UNION ALL)。
sample:抽樣與映射相似,可是sample操做中,RDD須要存儲一個隨機數產生器的種子,這樣每一個分區可以肯定哪些父RDD記錄被抽樣。
join:對兩個RDD執行join操做可能產生窄依賴(若是這兩個RDD擁有相同的哈希分區或範圍分區),多是寬依賴,也可能兩種依賴都有(好比一個父RDD有分區,而另外一父RDD沒有)。分佈式

5.2 Spark任務調度器

調度器根據RDD的結構信息爲每一個動做肯定有效的執行計劃。調度器的接口是runJob函數,參數爲RDD及其分區集,和一個RDD分區上的函數。該接口足以表示Spark中的全部動做(即count、collect、save等)。
stage的邊界有兩種狀況:一是寬依賴上的Shuffle操做;二是已緩存分區,它能夠縮短父RDD的計算過程ide

參考

http://shiyanjun.cn/archives/744.html函數

相關文章
相關標籤/搜索