新聞中心
1. Spark Core的核心功能
(1)SparkContext:
通常而言,DriverApplication 的執(zhí)行與輸出都是通過(guò)SparkContext完成的,在正式提交Application 之前,首先需要初始化SparkContext。SparkContext隱藏了網(wǎng)絡(luò)通信、分布式部署、消息通信、存儲(chǔ)能力、計(jì)算能力、緩存、測(cè)量系統(tǒng)、文件服務(wù)、web服務(wù)等內(nèi)容。應(yīng)用程序的開(kāi)發(fā)者只需要使用SparkContext 提供的API完成功能開(kāi)發(fā)。
一個(gè)application ---> 一個(gè)或者多個(gè)job----->一個(gè)或者多個(gè)stage----->多個(gè)task
SparkContext 內(nèi)置的DAGScheduler負(fù)責(zé)去創(chuàng)建Job,將一個(gè)application轉(zhuǎn)化成為多個(gè)Job。(相應(yīng)的Job的劃分,是看應(yīng)用程序中,執(zhí)行了多少個(gè)action算子)
SparkContext 內(nèi)置的TaskScheduler :負(fù)責(zé)進(jìn)行任務(wù)的派發(fā),發(fā)送到相應(yīng)的節(jié)點(diǎn),執(zhí)行task。
(2)存儲(chǔ)體系:
Spark優(yōu)先考慮使用節(jié)點(diǎn)的內(nèi)存作為存儲(chǔ),當(dāng)內(nèi)存不足時(shí)槽考慮使用磁盤(pán),這極大的減少了磁盤(pán)I/O,提升了執(zhí)行的效率,使得Spark適用于實(shí)時(shí)計(jì)算、流式計(jì)算等場(chǎng)景。此外,Spark還提供了以內(nèi)存為中心的高容錯(cuò)的分布式文件系統(tǒng)Tachyon,供用戶選擇。
(3)計(jì)算引擎:
計(jì)算引擎由 SparkContext 中的 DAGScheduler、RDD 以及具體節(jié)點(diǎn)上的 Executor 負(fù)責(zé)執(zhí)行的 Map 和 Reduce 任務(wù)組成。DAGScheduler 和 RDD 雖然位于 SparkContext 內(nèi)部,但是在任務(wù)正式提交與執(zhí)行之前將Job 中的 RDD 組織成有向無(wú)環(huán)圖(簡(jiǎn)稱 DAG)、并對(duì) Stage 進(jìn) 行劃分決定了任務(wù)執(zhí)行階段任務(wù)的數(shù)量、迭代計(jì)算、shuffle 等過(guò)程。
(4)部署模式:
單節(jié)點(diǎn)不足以提供足夠的存儲(chǔ)計(jì)算能力,所以作為大數(shù)據(jù)處理的Spark在SparkContext的TaskScheduler 組件中提供了,Standalone部署模式的實(shí)現(xiàn)和YANR、Mesos等分布式資源管理系統(tǒng)的支持。除了可用于實(shí)際生產(chǎn)環(huán)境 的 Standalone、YARN、Mesos、kubernetes、Cloud 等部署模式外,Spark 還提供了 Local 模式和 local-cluster 模式便于開(kāi)發(fā)和調(diào)試。
Standalone、YARN、Mesos、kubernetes、Cloud:用于分布式生產(chǎn)場(chǎng)景。
Local用于本地測(cè)試。
2. Spark 集群架構(gòu):
Cluster Manager:spark集群的管理者,主要負(fù)責(zé)資源你的分配與管理。集群管理分配的資源屬于一級(jí)分配,它將各個(gè)worker上的內(nèi)存、CPU,等資源分配給應(yīng)用程序,但是并不對(duì)executor的資源分配。目前:Standalone、YARN、Mesos、K8S,EC2 等都可以作為 Spark 的集群管理器。
Master:spark集群的主節(jié)點(diǎn)。
Worker:Spark集群的工作節(jié)點(diǎn),對(duì)spark應(yīng)用程序來(lái)說(shuō),由集群管理器分配得到資源的worker主要負(fù)責(zé)以下工作:創(chuàng)建 Executor,將資源和任務(wù)進(jìn)一步分配給 Executor,同步資源信息給 Cluster Manager。
Executor:執(zhí)行計(jì)算任務(wù)的進(jìn)程。主要負(fù)責(zé)執(zhí)行任務(wù),以及與 Worker、Driver Application 的信息同步。(主要是初始化一個(gè)線程池,調(diào)度其中的線程執(zhí)行相應(yīng)的計(jì)算任務(wù))
Driver Appication:客戶端驅(qū)動(dòng)程序,也可以理解為客戶端的應(yīng)用程序,用于將任務(wù)程序轉(zhuǎn)化為RDD和DAG,并與Cluster Manager 進(jìn)行通信與調(diào)度,其中SparkContext這個(gè)對(duì)象的創(chuàng)建就是在Driver Appication中。
Deploy mode:部署的模式,在寫(xiě)好的代碼,提交到集群中運(yùn)行時(shí):--master 指定資源的管理器。
其中常見(jiàn)的有yarn,在使用yarn的方式進(jìn)行任務(wù)提交的時(shí)候,通常必須配置另一個(gè)參數(shù):--deploy-mode client/cluster 有client和cluster兩種。
client,表示就把Driver程序,放在提交的節(jié)點(diǎn)。
cluster表示把Driver程序,放在集群中的任意節(jié)點(diǎn)。Driver程序決定了SparkContext對(duì)象在哪里創(chuàng)建。
各個(gè)角色之間的關(guān)系:
Spark 計(jì)算平臺(tái)有兩個(gè)重要角色,Driver 和 executor,不論是 StandAlone 模式還是 YARN 模式, 都是 Driver 充當(dāng) Application 的 master 角色,負(fù)責(zé)任務(wù)執(zhí)行計(jì)劃生成和任務(wù)分發(fā)及調(diào)度; executor 充當(dāng) worker 角色,負(fù)責(zé)實(shí)際執(zhí)行任務(wù)的 task,計(jì)算的結(jié)果返回 Driver。
3. Spark 編程模型:
(1)spark應(yīng)用程序從編寫(xiě)到輸出的流程:
- 用戶使用SparkContext 提供的 API(常用的有 textFile、sequenceFile、runJob、stop 等) 編寫(xiě)Driver Application程序。
- 使用sparkContext對(duì)象提交的用戶應(yīng)用程序,首先會(huì)使用 BlockManager 和 BroadcastManager 將任務(wù)的資源配置進(jìn)行廣播。然后由 DAGScheduler 將任務(wù)轉(zhuǎn)換為 RDD 并組織成 DAG, DAG 還將被劃分為不同的 Stage。最后由 TaskScheduler 借助 ActorSystem 將任務(wù)提交給集群管理器(ClusterManager)。
- 集群管理器(ClusterManager)給任務(wù)分配資源,即將具體任務(wù)分配到 Worker 上,Worker 創(chuàng)建 Executor 來(lái)處理任務(wù)的運(yùn)行。Standalone、YARN、Mesos、kubernetes、EC2 等都可以作 為 Spark 的集群管理器。
(2)spark計(jì)算模型:
RDD 可以看做是對(duì)各種數(shù)據(jù)計(jì)算模型的統(tǒng)一抽象,Spark 的計(jì)算過(guò)程主要是 RDD 的迭代計(jì)算 過(guò)程,如上圖。RDD 的迭代計(jì)算過(guò)程非常類(lèi)似于管道。分區(qū)數(shù)量取決于 partition 數(shù)量的設(shè)定,每個(gè)分區(qū)的數(shù)據(jù)只會(huì)在一個(gè) Task 中計(jì)算。所有分區(qū)可以在多個(gè)機(jī)器節(jié)點(diǎn)的 Executor 上 并行執(zhí)行。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
分享文章:SparkCore的核心理論-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://www.dlmjj.cn/article/pdjpj.html