Spark架構綜述

2021-07-30 04:18:17 字數 4027 閱讀 7261

使用者程式從最開始的提交到最終的計算執行, 需要經歷以下幾個階段:

1) 使用者程式建立

sparkcontext

時, 新建立的

sparkcontext

例項會連線到

cluster manager

。 cluster manager

會根據使用者提交時設定的

cpu和記憶體等資訊為本次提交分配計算資源, 啟動

executor。2

) driver

會將使用者程式劃分為不同的執行階段, 每個執行階段由一組完全相同的

task

組成, 這些

task

分別作用於待處理資料的

不同分割槽。 在階段劃分完成和

task

建立後,

driver

會向executor

傳送task。3

) executor

在接收到

task

task

的執行時依賴, 在準備好

task

的執行環境後, 會開始執行

task

, 並且將

task

的執行狀

態匯報給

driver。4

) driver

會根據收到的

task

的執行狀態來處理不同的狀態更新。

task

分為兩種: 一種是

shuffle map task

, 它實現資料的重新洗

牌, 洗牌的結果儲存到

executor

所在節點的檔案系統中; 另外一種是

result task

, 它負責生成結果資料。5)

driver

會不斷地呼叫

task

, 將task

傳送到executor

執行, 在所有的

task

都正確執行或者超過執行次數的限制仍然沒有執行成功

時停止。

框架:

spark streaming

spark streaming

基於spark core

實現了可擴充套件、 高吞吐和容錯的實時資料流處理。 現在支援的資料來源有

kafka

、flume

、twitter

、zeromq

、 kinesis

、hdfs、s3

和tcp socket

。 處理後的結果可以儲存到

hdfs

、database

或者dashboard

中 ,spark streaming

是將流式計算分解成一系列短小的批處理作業。 這裡的批處理引擎是

spark

, 也就是把

spark streaming

的輸入資料

按照批處理尺寸( 如

1秒) 分成一段一段的資料(

stream

) , 每一段資料都轉換成

spark

中的rdd

, 然後將

spark streaming

中對dstream

的轉換操作變為針對

spark

中對rdd

的轉換操作, 將

rdd經過操作變成中間結果儲存在記憶體中。 整個流式計算可以根據

業務的需求對中間的結果進行疊加, 或者儲存到外部裝置

spark streaming

提供了一套高效、 可容錯的準實時大規模流式處理框架, 它能和批處理及即時查詢放在同乙個軟體棧中, 降低

學習成本。 對於熟悉

spark

程式設計的使用者, 可以用較低的成本學習

spark streaming

程式設計。mllib

mllib

是spark

對常用的機器學習演算法的實現庫, 同時含有相關的測試和資料生成器, 包括分類、 回歸、 聚類、 協同過濾、 降維

( dimensionality reduction

) 以及底層基本的優化元素。

在spark 1.2.0

中, mllib

最大的改進是引入了稱為

spark.ml

的機器學習工具包, 支援了流水線的學習模式, 即多個演算法可以用不

同引數以流水線的形式執行。 在工業界的機器學習應用部署過程中, 流水線的工作模式是很常見的。 新的

ml工具包使用

spark

的schemardd

來表示機器學習的資料集合, 提供了

spark sql

直接訪問的介面。 此外, 在機器學習的演算法方面, 增加了兩種基

於樹的方法, 即隨機森林和梯度增強樹。

現在,

mllib

實現了許多常用的演算法, 與分類和回歸相關的演算法包括

svm、 邏輯回歸、 線性回歸、 樸素貝葉斯分類、 決策樹

等; 協同過濾實現了交替最小二乘法(

alternating least square

,als

) ; 聚類實現了

k-means

、 高斯混合(

gaussian mixture

) 、power iteration clustering

(pic

) 、

latent dirichlet allocation

(lda

) 和streaming

版本的k-means

; 降維實現了

singular value

decomposition

( svd

) 和principal component analysis

(pca

) ; 頻繁模式挖掘(

frequent pattern mining

) 實現了

fp-growth

。spark sql

自從spark 1.0

版本的spark sql

問世以來, 它最常見的用途之一就是作為乙個從

spark

平台獲取資料的渠道。 早期使用者比較喜愛

spark sql

提供的從現有

apache hive

表以及流行的

parquet

列式儲存格式中讀取資料的支援。 之後,

spark sql

還增加了對其他格

式的支援, 比如說

json

。 到了

spark 1.2

版本,spark

的原生資源與更多的輸入源進行整合整合, 這些新的整合將隨著納入新的

spark sql

資料來源api

而成為可能。

資料來源api

通過spark sql

提供了訪問結構化資料的可插拔機制。 這使資料來源有了簡便的途徑進行資料轉換並加入到

spark

平台中。 由

api提供的密集優化器集合意味著過濾和列修剪在很多情況下都會被運用於資料來源。 這些綜合的優化極大地減少了需要

處理的資料量, 因此能夠顯著提高

spark

的工作效率。

資料來源api

的另乙個優點就是不管資料的**如何, 使用者都能夠通過

spark

支援的所有語言來操作這些資料。 例如, 那些用

scala

實現的資料來源,

pyspark

使用者不需要其他的庫開發人員做任何額外的工作就可以直接使用。 此外,

spark sql

可以使用單一介面

訪問不同資料來源的資料。 總之,

spark 1.2

提供的這些功能進一步統一了大資料分析的解決方案。

企業架構方法綜述

企業架構可以分為兩大部分 業務架構和it架構,大部分企業架構方法都是從it架構發展而來的。對比 rup 和其他主要關注於實現的規程,企業架構領域原則上的關注點是企業範圍內的業務需求的識別 規範,及優先順序劃分,感覺它也是乙個做企業資訊化規劃的方法。我認為,做工具型產品和企業級產品有個差別,那就是做企...

微服務架構綜述

是指將系統的功能按照三層架構的思想,在邏輯上分為三層,然後將這種功能集中 中心化 乙個發布包 部署後執行在同乙個程序的應用程式,成為單塊架構。典型的應用是j2ee的開發產品,他們的形態一般是war包或者ear包。單塊架構的優勢 1 易於開發 2 易於測試 3 易於部署 4 易於水平伸縮 通常包括表示...

Spark執行架構

job 包含多個task組成的平行計算,乙個dag觸發的作業,由action運算元觸發,在sparkcontext中通過runjob方法向spark提交job stage job的排程單位,每個job會根據rdd的寬依賴關係被切分成很多stage,每個stage中包含一組相同的task,這組task...