新聞中心
本篇內容主要講解“Spark的核心原理及架構”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Spark的核心原理及架構”吧!
公司主營業(yè)務:做網(wǎng)站、成都網(wǎng)站設計、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出銀州免費做網(wǎng)站回饋大家。
Spark RDD特性
RDD(Resilient Distributed Datasets),彈性分布式數(shù)據(jù)集,它是對分布式數(shù)據(jù)集的一種內存抽象,通過受限的共享內存方式來提供容錯性,同時這種內存模型使得計算比傳統(tǒng)的數(shù)據(jù)流模型要高效。RDD具有5個重要的特性,如下圖所示:
1.一組分區(qū),數(shù)據(jù)集的基本組成單位。
2.計算每一個數(shù)據(jù)分區(qū)的函數(shù)。
3.對parent RDD的依賴,這個依賴描述了RDD之間的lineage(血統(tǒng))。
4.可選,對于鍵值對RDD,有一個Partitioner(通常是HashPartitioner,RangePartitioner)。
5.可選,一組Preferred location信息(例如,HDFS文件的Block所在location信息)。
Spark 運行模式分析-概述
用戶在提交任務給Spark處理時,以下兩個參數(shù)共同決定了Spark的運行方式。 · –master MASTER_URL :決定了Spark任務提交給哪種集群處理。 · –deploy-mode DEPLOY_MODE:決定了Driver的運行方式,可選值為Client或者Cluster。
Spark 運行架構的特點
每個Application獲取專屬的executor進程,該進程在Application期間一直駐留,并以多線程方式運行Tasks。這種Application隔離機制有其優(yōu)勢的,無論是從調度角度看(每個Driver調度它自己的任務),還是從運行角度看(來自不同Application的Task運行在不同的JVM中)。當然,這也意味著Spark Application不能跨應用程序共享數(shù)據(jù),除非將數(shù)據(jù)寫入到外部存儲系統(tǒng)。
Spark與資源管理器無關,只要能夠獲取Executor進程,并能夠保持相互通信就可以了。
提交SparkContext的Client應該靠近Worker節(jié)點(運行Executor的節(jié)點),最好是在同一個機架里,因為Spark Application運行過程中SparkContext和Executor之間有大量的信息交換;如果想在遠程集群中運行,最好使用RPC將SparkContext提交給集群,不要遠離Worker運行SparkContext。
專屬名稱:
Application:每一個Spark程序,稱之為一個Application。
Driver:每個Spark程序運行一個Driver進程,用來協(xié)調,統(tǒng)計任務進度。
Worker:每個Spark程序運行多個Worker進程,可以運行在一個節(jié)點或多個節(jié)點上,包含多個Executor子進程。
Executor:每個Spark程序運行多個Executor進程,具體承擔計算任務。
Standalone 運行模式
Spark Standalone模式,即獨立模式,自帶完整的服務,可單獨部署到一個集群中,無需依賴其他資源管理系統(tǒng)(資源管理+資源調度)。在該模式下,用戶可以通過手動啟動Master和Worker來啟動一個獨立的集群。其中,Master充當了資源管理的角色,Workder充當了計算節(jié)點的角色。在該模式下,Spark Driver程序在客戶端Client運行,而Executor則在Worker節(jié)點上運行。
Standalone 組件分析 整個集群分為Master節(jié)點和Worker節(jié)點,其中Driver程序運行在客戶端。
.Master節(jié)點負責為任務分配Worker節(jié)點上的計算資源,兩者會通過相互通信來同步資源狀態(tài),見途中紅色雙向箭頭。
.客戶端啟動任務后會運行Driver程序,Driver程序中會完成SparkContext對象的初始化,并向Master進行注冊。
.每個Workder節(jié)點上會存在一個或者多個ExecutorBackend進程。每個進程包含一個Executor對象,該對象持有一個線程池,每個線程池可以執(zhí)行一個任務task。ExecutorBackend進程還負責跟客戶端節(jié)點上的Driver程序進行通信,上報任務狀態(tài)。
Spark Standalone任務運行過程
上面的過程反映了Spark在standalone模式下,整體上客戶端、Master和Workder節(jié)點之間的交互。對于一個任務的具體運行過程需要更細致的分解,分解運行過程見圖中的小字。
1.用戶通過bin/spark-submit部署工具或者bin/spark-class啟動應用程序的Driver進程,Driver進程會初始化SparkContext對象,并向Master節(jié)點進行注冊。
2.Master節(jié)點接受Driver程序的注冊,檢查它所管理的Worker節(jié)點,為該Driver程序分配需要的計算資源Executor。Worker節(jié)點完成Executor的分配后,向Master報告Executor的狀態(tài)。
3.Worker節(jié)點上的ExecutorBackend進程啟動后,向Driver進程注冊。
4.Driver進程內部通過DAG Schaduler,Stage Schaduler,Task Schaduler等過程完成任務的劃分后,向Worker節(jié)點上的ExecutorBackend分配TASK。
5.ExecutorBackend進行TASK計算,并向Driver報告TASK狀態(tài),直至結束。
6.Driver進程在所有TASK都處理完成后,向Master注銷。
Spark 運行模式分析- Standalone
Spark Standalone 模式總結
Spark能夠以standalone模式運行,這是Spark自身提供的運行模式,用戶可以通過手動啟動master和worker進程來啟動一個獨立的集群,也可以在一臺機器上運行這些守護進程進行測試。standalone模式可以用在生產環(huán)境,它有效的降低了用戶學習、測試Spark框架的成本。
standalone模式目前只支持跨應用程序的簡單FIFO調度。然而,為了允許多個并發(fā)用戶,你可以控制每個應用使用的資源的最大數(shù)。默認情況下,它會請求使用集群的全部CPU內核。
缺省情況下,standalone任務調度允許worker的失敗(在這種情況下它可以將失敗的任務轉移給其他的worker)。但是,調度器使用master來做調度,這會產生一個單點問題:如果master崩潰,新的應用不會被創(chuàng)建。為了解決這個問題,可以zookeeper的選舉機制在集群中啟動多個master,也可以使用本地文件實現(xiàn)單節(jié)點恢復。
Spark 運行模式分析-Cluster
Spark Cluster模式任務運行過程
1.用戶通過bin/spark-submit部署工具或者bin/spark-class向Yarn集群提交應用程序。
2.Yarn集群的Resource Manager為提交的應用程序選擇一個Node Manager節(jié)點并分配第一個container,并在該節(jié)點的container上啟動SparkContext對象。
3.SparkContext對象向Yarn集群的Resource Manager申請資源以運行Executor。
.Yarn集群的Resource Manager分配container給SparkContext對象,SparkContext和相關的Node Manager通訊,在獲得的container上啟動ExecutorBackend守護進程,ExecutorBackend啟動后開始向SparkContext注冊并申請Task。
5.SparkContext分配Task給ExecutorBackend執(zhí)行。
6.ExecutorBackend開始執(zhí)行Task,并及時向SparkContext匯報運行狀況。
7.Task運行完畢,SparkContext歸還資源給Node Manager,并注銷退。
Spark Cluster 模式總結
Spark能夠以集群的方式運行,這里的可選集群有Yarn和Mesos。在集群模式下,Spark的Driver程序可能被調度到任何一個節(jié)點,任務執(zhí)行完成后,集群分配的資源將被回收。
到此,相信大家對“Spark的核心原理及架構”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!
網(wǎng)頁題目:Spark的核心原理及架構
文章地址:http://ef60e0e.cn/article/jesseg.html