spark基礎知識點介紹

2021-12-30 03:24:26 字數 2997 閱讀 2697

1.spark是乙個基於記憶體的用於處理、分析大資料的集群計算框架。他提供了一套簡單的程式設計介面,從而使得應用程式開發者方便使用集群節點的cpu、記憶體、儲存資源來處理大資料。

2.spark主要特點:

1.使用方便:spark提供了比mapreduce更簡單的程式設計模型。spark針對開發大資料應用程式提供了豐富的api,這些api比hadoop mapreduce更易讀懂。相比之下,hadoop mapreduce只有兩個操作符,map和reduce。hadoop要求任何問題都必須能夠分解成一系列的map作業和reduce作業,有些演算法難以用map和reduce來描述。

2.快速:(1)使用基於記憶體的集群計算,直接從記憶體讀取資料,減少磁碟i/o延遲,顯著提公升作業執行時間。(2)spark擁有更先進的作業執行引擎。spark和hadoop一樣都將乙個作業轉化成若干個階段構成的有向無環圖(dag)。hadoop需要對作業建立由map和reduce兩個階段構成的有向無環圖,若乙個複雜的作業需要用mapreduce實現,則可能要劃分成多個作業,而後按順序執行。這種設計導致hadoop mapreduce無法做優化。spark的dag可以包含任意個階段,所以可以一次執行包含多個階段的複雜作業。

3.通用:spark為各種型別的資料處理作業提供了乙個統一的整合平台,可以用於批處理、互動分析、流處理、機器學習和圖計算。相比hadoop mapreduce只適合做批處理。spark可以使用單一框架來建立包含多個不同型別任務的資料處理流水線。

4.可拓展:spark集群的資料處理能力是可以通過增加更多的集群節點的方式得以提公升。

5.可容錯:spark能自動處理集群中的幾點故障。

3.spark總體架構:

乙個spark應用包括5個重要部分:驅動程式,集群管理員,worker,執行者,任務。

worker:為spark應用提供cpu、記憶體和儲存資源,把spark應用當成分布式程序在集群節點上執行。

集群管理員:spark使用集群管理員來獲得執行作業所需要的集群資源。集群管理員管理集群中worker節點的計算資源。(單獨模式、mesos模式、yarn模式)

驅動程式:驅動程式是乙個把spark當成庫使用的應用,提供資料處理的**,spark將在worker節點上執行這些**。乙個驅動程式可以在spark集群上啟動乙個或多個作業。

執行者:執行者是乙個jvm程序,對於乙個應用由spark在每乙個worker上建立,可以多執行緒的方式執行應用**,也可以把資料快取在記憶體或硬碟中。生命週期和應用一樣,spark應用結束,執行者也會終結。

任務:任務是spark傳送給執行者的最小工作單元,它執行在worker節點上執行者的乙個程序中,每乙個任務都執行一些計算,然後將結果返回給驅動程式,或者區分以用於shuffle操作。spark為每乙個資料分割槽建立乙個任務,乙個執行者可以併發執行乙個或多個任務,任務數量由分割槽的資料決定。

4.術語:

1.shuffle操作。shuffle操作是指在集群節點上對資料進行重新分配。這是乙個耗時操作,因為他涉及在網路間傳輸資料。shuffle操作不是對資料進行隨機重新分配,它按照某些標準將資料分成不同的集合,每個集合就是乙個新的分割槽。

2.作業。作業是一系列計算的集合,spark將這些計算並將結果返回給驅動程式。作業本質上就是在spark集群上執行資料處理演算法。

3.階段。乙個階段由若干個任務構成。spark將乙個作業分解成乙個由若干個階段構成的dag,每乙個階段依賴於其他階段。spark利用shuffle邊界將任務分成不同的階段。

應用執行過程:乙個spark應用開始執行時,spark會連線集群管理員,獲取在worker節點上的執行者資源。spark應用把資料處理演算法當成乙個作業提交,spark將這個作業分解成若干個階段構成的dag。然後spark在執行者上排程這些階段的執行,排程操作由集群管理員提供的底層排程器實現。執行者並行的執行spark提交的任務。

5.rdd

rdd:彈性分布式資料集,表示乙個關於分割槽資料元素的集合。是spark的主要資料抽象概念,也是spark庫中定義的乙個抽象類。由sparkcontext類提供的工廠方法來建立rdd實現類的類例項。

rdd的操作歸為兩類:轉換和行動,轉換會建立新的rdd例項,行動則會將結果返回給驅動程式。

rdd特點:

1.不可變性

rdd是一種不可變的資料結構,一旦建立就不可在原地更改,乙個修改的操作會返回乙個新的rdd。

2.分片

rdd表示的是一組資料的分割槽,這些分割槽分布在集群的節點上。預設情況下,乙個rdd分割槽對應乙個hdfs檔案分片。其他的資料來源(如cassandra)也將資料分片分散儲存在集群多個節點上,然而乙個rdd對應多個cassandra分片。

3.容錯性

rdd為可容錯的,代表了分散在集群中多個節點的資料,但是任何乙個節點都有可能出故障。rdd會自動處理出故障的情況,故障節點資料無法被訪問,spark會在其他節點重建丟失的rdd分割槽資料。

4.介面

rdd是乙個處理資料的介面。在spark庫中他被定義為乙個抽象類。rdd為多種資料來源提供了乙個處理資料的統一介面,包括hdfs、hbase,cassandra等。spark為不同的資料來源提供了各自具體的實現類,比如hadooprdd、cassandrardd。

5.強型別

rdd類有乙個引數用於表示型別,使得rdd可以表示不同型別的資料。

6.駐留在記憶體中

spark具有記憶體集群計算的特性,rdd提供了一套支援記憶體計算的api,spark允許rdd在記憶體中快取或長期駐留。

6.惰性操作

rdd的建立和轉換都是惰性操作,當呼叫乙個返回rdd的方法的時候,spark並不會立即執行運算。spark僅僅記錄了這個rdd是怎麼建立的,在它上面做轉換操作會建立怎樣的子rdd等資訊,為每乙個rdd維護其各自的血統資訊。類似這種就是惰性操作。

7.觸發計算的操作

當spark應用呼叫操作方法或者儲存rdd至儲存系統的時候,rdd的轉換計算才真正執行。儲存rdd至儲存系統也被視為一種操作,儘管沒有給驅動程式返回值。

當spark應用呼叫rdd的操作方法或者儲存rdd的時候,它會觸發spark的連鎖反應。

基礎知識點

1 inline block布局 2 table布局 3 justify的末行不對齊 4 兩個圖示之間有空格 換行 5 背景中的的 路徑的 全部斜槓都為 不是 命令列下的這種 doctype html html head meta charset utf 8 title xx title head ...

erlang基礎知識點

1 變數是不可改變的,必須以首字母大寫開頭 2 字串就是小寫字母,或者單引號引起來的字串 3 賦值可以使用匹配模式 4 資料結構有元組,取值用匹配模式來取值 就能取到x,b的值 5 資料結列表 ss,aa,取值是用 head foot 的形式取值 頭和尾的形式匹配 6 字串只能用雙引號表示 7 函式...

ios基礎知識點

1.記憶體管理 用記憶體引用計數來進行管理 alloc,retain,copy會使記憶體引用計數立即 1 當物件使用結束後要對它進行釋放 release 立即 1 autorelease 未來 1 autorelease的物件會把這個物件放置到離它最近的自動釋放池裡,自動釋放池釋放的時候才會把自動釋...