溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

spark架構(gòu)是怎么樣的

發(fā)布時間:2021-12-10 11:50:54 來源:億速云 閱讀:173 作者:小新 欄目:云計(jì)算

小編給大家分享一下spark架構(gòu)是怎么樣的,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

hadoop和spark

Hadoop這項(xiàng)大數(shù)據(jù)處理技術(shù)大概已有十年歷史,而且被看做是首選的大數(shù)據(jù)集合處理的解決方案。MapReduce是一路計(jì)算的優(yōu)秀解決方案,不過對于需要多路計(jì)算和算法的用例來說,并非十分高效。數(shù)據(jù)處理流程中的每一步都需要一個Map階段和一個Reduce階段,而且如果要利用這一解決方案,需要將所有用例都轉(zhuǎn)換成MapReduce模式。

在下一步開始之前,上一步的作業(yè)輸出數(shù)據(jù)必須要存儲到分布式文件系統(tǒng)中。因此,復(fù)制和磁盤存儲會導(dǎo)致這種方式速度變慢。另外Hadoop解決方案中通常會包含難以安裝和管理的集群。而且為了處理不同的大數(shù)據(jù)用例,還需要集成多種不同的工具(如用于機(jī)器學(xué)習(xí)的Mahout和流數(shù)據(jù)處理的Storm)。

如果想要完成比較復(fù)雜的工作,就必須將一系列的MapReduce作業(yè)串聯(lián)起來然后順序執(zhí)行這些作業(yè)。每一個作業(yè)都是高時延的,而且只有在前一個作業(yè)完成之后下一個作業(yè)才能開始啟動。

而Spark則允許程序開發(fā)者使用有向無環(huán)圖(DAG)開發(fā)復(fù)雜的多步數(shù)據(jù)管道。而且還支持跨有向無環(huán)圖的內(nèi)存數(shù)據(jù)共享,以便不同的作業(yè)可以共同處理同一個數(shù)據(jù)。

Spark運(yùn)行在現(xiàn)有的Hadoop分布式文件系統(tǒng)基礎(chǔ)之上(HDFS)提供額外的增強(qiáng)功能。它支持將Spark應(yīng)用部署到現(xiàn)存的Hadoop v1集群(with SIMR – Spark-Inside-MapReduce)或Hadoop v2 YARN集群甚至是Apache Mesos之中。

我們應(yīng)該將Spark看作是Hadoop MapReduce的一個替代品而不是Hadoop的替代品。其意圖并非是替代Hadoop,而是為了提供一個管理不同的大數(shù)據(jù)用例和需求的全面且統(tǒng)一的解決方案。

spark生態(tài)圈

Spark力圖整合機(jī)器學(xué)習(xí)(MLib)、圖算法(GraphX)、流式計(jì)算(Spark Streaming)和數(shù)據(jù)倉庫(Spark SQL)等領(lǐng)域,通過計(jì)算引擎Spark,彈性分布式數(shù)據(jù)集(RDD),架構(gòu)出一個新的大數(shù)據(jù)應(yīng)用平臺。 Spark生態(tài)圈以HDFS、S3、Techyon為底層存儲引擎,以Yarn、Mesos和Standlone作為資源調(diào)度引擎;使用Spark,可以實(shí)現(xiàn)MapReduce應(yīng)用;基于Spark,Spark SQL可以實(shí)現(xiàn)即席查詢,Spark Streaming可以處理實(shí)時應(yīng)用,MLib可以實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法,GraphX可以實(shí)現(xiàn)圖計(jì)算,SparkR可以實(shí)現(xiàn)復(fù)雜數(shù)學(xué)計(jì)算。

Spark Streaming:
Spark Streaming基于微批量方式的計(jì)算和處理,可以用于處理實(shí)時的流數(shù)據(jù)。它使用DStream,簡單來說就是一個彈性分布式數(shù)據(jù)集(RDD)系列,處理實(shí)時數(shù)據(jù)。
Spark SQL:
Spark SQL可以通過JDBC API將Spark數(shù)據(jù)集暴露出去,而且還可以用傳統(tǒng)的BI和可視化工具在Spark數(shù)據(jù)上執(zhí)行類似SQL的查詢。用戶還可以用Spark SQL對不同格式的數(shù)據(jù)(如JSON,Parquet以及數(shù)據(jù)庫等)執(zhí)行ETL,將其轉(zhuǎn)化,然后暴露給特定的查詢。
Spark MLlib:
MLlib是一個可擴(kuò)展的Spark機(jī)器學(xué)習(xí)庫,由通用的學(xué)習(xí)算法和工具組成,包括二元分類、線性回歸、聚類、協(xié)同過濾、梯度下降以及底層優(yōu)化原語。
Spark GraphX:
GraphX是用于圖計(jì)算和并行圖計(jì)算的新的(alpha)Spark API。通過引入彈性分布式屬性圖(Resilient Distributed Property Graph),一種頂點(diǎn)和邊都帶有屬性的有向多重圖,擴(kuò)展了Spark RDD。為了支持圖計(jì)算,GraphX暴露了一個基礎(chǔ)操作符集合(如subgraph,joinVertices和aggregateMessages)和一個經(jīng)過優(yōu)化的Pregel API變體。此外,GraphX還包括一個持續(xù)增長的用于簡化圖分析任務(wù)的圖算法和構(gòu)建器集合。

spark基本概念

Client:客戶端進(jìn)程,負(fù)責(zé)提交作業(yè)到Master。

Application:Spark Application的概念和Hadoop MapReduce中的類似,指的是用戶編寫的Spark應(yīng)用程序,包含了一個Driver 功能的代碼和分布在集群中多個節(jié)點(diǎn)上運(yùn)行的Executor代碼;

Cluster Manager:指的是在集群上獲取資源的外部服務(wù),目前有:
Standalone:Spark原生的資源管理,由Master負(fù)責(zé)資源的分配;
Hadoop Yarn:由YARN中的ResourceManager負(fù)責(zé)資源的分配;

Master:Standalone模式中主控節(jié)點(diǎn),負(fù)責(zé)接收Client提交的作業(yè),管理Worker,并命令Worker啟動Driver和Executor。

Worker:集群中任何可以運(yùn)行Application代碼的節(jié)點(diǎn),類似于YARN中的NodeManager節(jié)點(diǎn)。在Standalone模式中指的就是通過Slave文件配置的Worker節(jié)點(diǎn),在Spark on Yarn模式中指的就是NodeManager節(jié)點(diǎn),負(fù)責(zé)管理本節(jié)點(diǎn)的資源,定期向 Master匯報(bào)心跳,接收Master的命令,啟動Driver和Executor;

Driver: 一個Spark作業(yè)運(yùn)行時包括一個Driver進(jìn)程,也是作業(yè)的主進(jìn)程,負(fù)責(zé)作業(yè)的解析、生成Stage并調(diào)度Task到Executor上。包括DAGScheduler,TaskScheduler。

Executor:即真正執(zhí)行作業(yè)的地方,一個集群一般包含多個Executor,每個Executor接收Driver的命令Launch Task,一個Executor可以執(zhí)行一到多個Task。

作業(yè)(Job):包含多個Task組成的并行計(jì)算,往往由Spark Action催生,一個JOB包含多個RDD及作用于相應(yīng)RDD上的各種Operation;

Stage:一個Spark作業(yè)一般包含一到多個Stage。

Task:一個Stage包含一到多個Task,通過多個Task實(shí)現(xiàn)并行運(yùn)行的功能。

DAGScheduler: 實(shí)現(xiàn)將Spark作業(yè)分解成一到多個Stage,每個Stage根據(jù)RDD的Partition個數(shù)決定Task的個數(shù),然后生成相應(yīng)的Task set放到TaskScheduler中。

TaskScheduler:實(shí)現(xiàn)Task分配到Executor上執(zhí)行。

SparkContext:整個應(yīng)用的上下文,控制應(yīng)用的生命周期。

RDD:Spark的基本計(jì)算單元,一組RDD可形成執(zhí)行的有向無環(huán)圖RDD Graph。

SparkEnv:線程級別的上下文,存儲運(yùn)行時的重要組件的引用。

SparkEnv內(nèi)創(chuàng)建并包含如下一些重要組件的引用。

MapOutPutTracker:負(fù)責(zé)Shuffle元信息的存儲。

BroadcastManager:負(fù)責(zé)廣播變量的控制與元信息的存儲。

BlockManager:負(fù)責(zé)存儲管理、創(chuàng)建和查找塊。

MetricsSystem:監(jiān)控運(yùn)行時性能指標(biāo)信息。

SparkConf:負(fù)責(zé)存儲配置信息。

spark架構(gòu)

spark架構(gòu)是怎么樣的

Spark架構(gòu)采用了分布式計(jì)算中的Master-Slave模型。Master是對應(yīng)集群中的含有Master進(jìn)程的節(jié)點(diǎn),Slave是集群中含有Worker進(jìn)程的節(jié)點(diǎn)。Master作為整個集群的控制器,負(fù)責(zé)整個集群的正常運(yùn)行;Worker相當(dāng)于是計(jì)算節(jié)點(diǎn),接收主節(jié)點(diǎn)命令與進(jìn)行狀態(tài)匯報(bào);Executor負(fù)責(zé)任務(wù)的執(zhí)行;Client作為用戶的客戶端負(fù)責(zé)提交應(yīng)用,Driver負(fù)責(zé)控制一個應(yīng)用的執(zhí)行,如圖所示。

Spark集群部署后,需要在主節(jié)點(diǎn)和從節(jié)點(diǎn)分別啟動Master進(jìn)程和Worker進(jìn)程,對整個集群進(jìn)行控制。在一個Spark應(yīng)用的執(zhí)行過程中,Driver和Worker是兩個重要角色。Driver 程序是應(yīng)用邏輯執(zhí)行的起點(diǎn),負(fù)責(zé)作業(yè)的調(diào)度,即Task任務(wù)的分發(fā),而多個Worker用來管理計(jì)算節(jié)點(diǎn)和創(chuàng)建Executor并行處理任務(wù)。在執(zhí)行階段,Driver會將Task和Task所依賴的file和jar序列化后傳遞給對應(yīng)的Worker機(jī)器,同時Executor對相應(yīng)數(shù)據(jù)分區(qū)的任務(wù)進(jìn)行處理。

Spark的整體流程為:Client 提交應(yīng)用,Master找到一個Worker啟動Driver,Driver向Master或者資源管理器申請資源,之后將應(yīng)用轉(zhuǎn)化為RDD Graph,再由DAGScheduler將RDD Graph轉(zhuǎn)化為Stage的有向無環(huán)圖提交給TaskScheduler,由TaskScheduler提交任務(wù)給Executor執(zhí)行。在任務(wù)執(zhí)行的過程中,其他組件協(xié)同工作,確保整個應(yīng)用順利執(zhí)行。

1.在集群啟動的時候,各個slave節(jié)點(diǎn)(也可以說是worker)會向集群的Master注冊,告訴Master我隨時可以干活了,隨叫隨到
2.Master會根據(jù)一種心跳機(jī)制來實(shí)時監(jiān)察集群中各個worker的狀態(tài),是否能正常工作
3.Driver Application提交作業(yè)的時候也會先向Master注冊信息
4.作業(yè)注冊完畢之后,Master會向worker發(fā)射Executor命令
5.worker產(chǎn)生若干個Executor準(zhǔn)備執(zhí)行
6.各個worker中的Executor會向Driver Application注冊Executor信息,以便Driver Application能夠?qū)⒆鳂I(yè)分發(fā)到具體的Executor
7.Executor會定期向Driver Application報(bào)告當(dāng)前的狀態(tài)更新信息
8.Driver Application發(fā)射任務(wù)到Executor執(zhí)行

以上是“spark架構(gòu)是怎么樣的”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI