小編給大家分享一下spark架構(gòu)是怎么樣的,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)鲅魚圈,十載網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
hadoop和spark
Hadoop這項大數(shù)據(jù)處理技術(shù)大概已有十年歷史,而且被看做是首選的大數(shù)據(jù)集合處理的解決方案。MapReduce是一路計算的優(yōu)秀解決方案,不過對于需要多路計算和算法的用例來說,并非十分高效。數(shù)據(jù)處理流程中的每一步都需要一個Map階段和一個Reduce階段,而且如果要利用這一解決方案,需要將所有用例都轉(zhuǎn)換成MapReduce模式。
在下一步開始之前,上一步的作業(yè)輸出數(shù)據(jù)必須要存儲到分布式文件系統(tǒng)中。因此,復(fù)制和磁盤存儲會導(dǎo)致這種方式速度變慢。另外Hadoop解決方案中通常會包含難以安裝和管理的集群。而且為了處理不同的大數(shù)據(jù)用例,還需要集成多種不同的工具(如用于機器學習的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運行在現(xiàn)有的Hadoop分布式文件系統(tǒng)基礎(chǔ)之上(HDFS)提供額外的增強功能。它支持將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力圖整合機器學習(MLib)、圖算法(GraphX)、流式計算(Spark Streaming)和數(shù)據(jù)倉庫(Spark SQL)等領(lǐng)域,通過計算引擎Spark,彈性分布式數(shù)據(jù)集(RDD),架構(gòu)出一個新的大數(shù)據(jù)應(yīng)用平臺。 Spark生態(tài)圈以HDFS、S3、Techyon為底層存儲引擎,以Yarn、Mesos和Standlone作為資源調(diào)度引擎;使用Spark,可以實現(xiàn)MapReduce應(yīng)用;基于Spark,Spark SQL可以實現(xiàn)即席查詢,Spark Streaming可以處理實時應(yīng)用,MLib可以實現(xiàn)機器學習算法,GraphX可以實現(xiàn)圖計算,SparkR可以實現(xiàn)復(fù)雜數(shù)學計算。
Spark Streaming:
Spark Streaming基于微批量方式的計算和處理,可以用于處理實時的流數(shù)據(jù)。它使用DStream,簡單來說就是一個彈性分布式數(shù)據(jù)集(RDD)系列,處理實時數(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是一個可擴展的Spark機器學習庫,由通用的學習算法和工具組成,包括二元分類、線性回歸、聚類、協(xié)同過濾、梯度下降以及底層優(yōu)化原語。
Spark GraphX:
GraphX是用于圖計算和并行圖計算的新的(alpha)Spark API。通過引入彈性分布式屬性圖(Resilient Distributed Property Graph),一種頂點和邊都帶有屬性的有向多重圖,擴展了Spark RDD。為了支持圖計算,GraphX暴露了一個基礎(chǔ)操作符集合(如subgraph,joinVertices和aggregateMessages)和一個經(jīng)過優(yōu)化的Pregel API變體。此外,GraphX還包括一個持續(xù)增長的用于簡化圖分析任務(wù)的圖算法和構(gòu)建器集合。
spark基本概念
Client:客戶端進程,負責提交作業(yè)到Master。
Application:Spark Application的概念和Hadoop MapReduce中的類似,指的是用戶編寫的Spark應(yīng)用程序,包含了一個Driver 功能的代碼和分布在集群中多個節(jié)點上運行的Executor代碼;
Cluster Manager:指的是在集群上獲取資源的外部服務(wù),目前有:
Standalone:Spark原生的資源管理,由Master負責資源的分配;
Hadoop Yarn:由YARN中的ResourceManager負責資源的分配;
Master:Standalone模式中主控節(jié)點,負責接收Client提交的作業(yè),管理Worker,并命令Worker啟動Driver和Executor。
Worker:集群中任何可以運行Application代碼的節(jié)點,類似于YARN中的NodeManager節(jié)點。在Standalone模式中指的就是通過Slave文件配置的Worker節(jié)點,在Spark on Yarn模式中指的就是NodeManager節(jié)點,負責管理本節(jié)點的資源,定期向 Master匯報心跳,接收Master的命令,啟動Driver和Executor;
Driver: 一個Spark作業(yè)運行時包括一個Driver進程,也是作業(yè)的主進程,負責作業(yè)的解析、生成Stage并調(diào)度Task到Executor上。包括DAGScheduler,TaskScheduler。
Executor:即真正執(zhí)行作業(yè)的地方,一個集群一般包含多個Executor,每個Executor接收Driver的命令Launch Task,一個Executor可以執(zhí)行一到多個Task。
作業(yè)(Job):包含多個Task組成的并行計算,往往由Spark Action催生,一個JOB包含多個RDD及作用于相應(yīng)RDD上的各種Operation;
Stage:一個Spark作業(yè)一般包含一到多個Stage。
Task:一個Stage包含一到多個Task,通過多個Task實現(xiàn)并行運行的功能。
DAGScheduler: 實現(xiàn)將Spark作業(yè)分解成一到多個Stage,每個Stage根據(jù)RDD的Partition個數(shù)決定Task的個數(shù),然后生成相應(yīng)的Task set放到TaskScheduler中。
TaskScheduler:實現(xiàn)Task分配到Executor上執(zhí)行。
SparkContext:整個應(yīng)用的上下文,控制應(yīng)用的生命周期。
RDD:Spark的基本計算單元,一組RDD可形成執(zhí)行的有向無環(huán)圖RDD Graph。
SparkEnv:線程級別的上下文,存儲運行時的重要組件的引用。
SparkEnv內(nèi)創(chuàng)建并包含如下一些重要組件的引用。
MapOutPutTracker:負責Shuffle元信息的存儲。
BroadcastManager:負責廣播變量的控制與元信息的存儲。
BlockManager:負責存儲管理、創(chuàng)建和查找塊。
MetricsSystem:監(jiān)控運行時性能指標信息。
SparkConf:負責存儲配置信息。
spark架構(gòu)
Spark架構(gòu)采用了分布式計算中的Master-Slave模型。Master是對應(yīng)集群中的含有Master進程的節(jié)點,Slave是集群中含有Worker進程的節(jié)點。Master作為整個集群的控制器,負責整個集群的正常運行;Worker相當于是計算節(jié)點,接收主節(jié)點命令與進行狀態(tài)匯報;Executor負責任務(wù)的執(zhí)行;Client作為用戶的客戶端負責提交應(yīng)用,Driver負責控制一個應(yīng)用的執(zhí)行,如圖所示。
Spark集群部署后,需要在主節(jié)點和從節(jié)點分別啟動Master進程和Worker進程,對整個集群進行控制。在一個Spark應(yīng)用的執(zhí)行過程中,Driver和Worker是兩個重要角色。Driver 程序是應(yīng)用邏輯執(zhí)行的起點,負責作業(yè)的調(diào)度,即Task任務(wù)的分發(fā),而多個Worker用來管理計算節(jié)點和創(chuàng)建Executor并行處理任務(wù)。在執(zhí)行階段,Driver會將Task和Task所依賴的file和jar序列化后傳遞給對應(yīng)的Worker機器,同時Executor對相應(yīng)數(shù)據(jù)分區(qū)的任務(wù)進行處理。
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é)點(也可以說是worker)會向集群的Master注冊,告訴Master我隨時可以干活了,隨叫隨到
2.Master會根據(jù)一種心跳機制來實時監(jiān)察集群中各個worker的狀態(tài),是否能正常工作
3.Driver Application提交作業(yè)的時候也會先向Master注冊信息
4.作業(yè)注冊完畢之后,Master會向worker發(fā)射Executor命令
5.worker產(chǎn)生若干個Executor準備執(zhí)行
6.各個worker中的Executor會向Driver Application注冊Executor信息,以便Driver Application能夠?qū)⒆鳂I(yè)分發(fā)到具體的Executor
7.Executor會定期向Driver Application報告當前的狀態(tài)更新信息
8.Driver Application發(fā)射任務(wù)到Executor執(zhí)行
以上是“spark架構(gòu)是怎么樣的”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
標題名稱:spark架構(gòu)是怎么樣的
文章分享:http://jinyejixie.com/article30/ggedpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、搜索引擎優(yōu)化、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)