扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)Spark架構(gòu)運行及優(yōu)勢詳解
2018-08-14 11:20:11
1400瀏覽
今天扣丁學(xué)堂
大數(shù)據(jù)培訓(xùn)給大家介紹一下關(guān)于大數(shù)據(jù)開發(fā)中Spark架構(gòu)運行詳解及其優(yōu)勢詳解,首先spark是一種分布式的計算框架。類似于大數(shù)據(jù)開發(fā)中Hadoop生態(tài)圈的MapReduce,計算思想和MR非常相似,兩者都是分而治之的思想,但使用率要比MR高很多。
在學(xué)習(xí)大數(shù)據(jù)Spark運行架構(gòu)之前,我們有必須要先了解Spark中幾個基本概念。
1、Application(應(yīng)用程序):是指我們編寫的Spark應(yīng)用程序,包含驅(qū)動程序(Driver)和分布在及群眾多個節(jié)點上運行的Executor代碼,在執(zhí)行過程中由一個或多個job組成。
2、Driver(驅(qū)動程序):Spark中的Driver即運行Application的main方法,并且創(chuàng)建SparkContext,創(chuàng)建SparkContext的目的是為了準(zhǔn)備Spark應(yīng)用程序的運行環(huán)境。在Spark中由SparkContext負(fù)責(zé)與ClusterManager通信,進行資源的申請、任務(wù)的分配和監(jiān)控。當(dāng)Executor部分運行完畢后,Driver負(fù)責(zé)將SparkContext關(guān)閉。通常用SparkContext代表Driver。
3、ClusterManager(集群資源管理器):是指在集群上獲取資源的外部服務(wù),目前常用的有以下幾種:
(1)standalone:Spark自帶的資源管理,由Master負(fù)責(zé)資源的管理和調(diào)度。
(2)HadoopYARN:由YARN中的ResourceManager負(fù)責(zé)資源的管理。
(3)Mesos:由Mesos中的MesosMaster負(fù)責(zé)資源的管理。
4、Worker(工作節(jié)點):集群中任何可以運行Application代碼的節(jié)點,類似于YARN中的NodeManager節(jié)點。在Standalone模式中指的是通過Slave文件配置的Worker節(jié)點。
5、Master:SparkStandalone模式下的主節(jié)點,負(fù)責(zé)管理和分配集群資源來運行SparkApplication。
6、Executor:Application運行在Worker節(jié)點上的一個進程,該進程負(fù)責(zé)運行Task,并負(fù)責(zé)將數(shù)據(jù)存在內(nèi)存或者磁盤上,每個Application都有各自獨立的一批Executor。
二、Spark運行架構(gòu)
先上一張Spark運行架構(gòu)原理圖吧。
其執(zhí)行流程:
1、使用spark-sbumit提交我們的應(yīng)用程序,通過反射的方式,創(chuàng)建和構(gòu)造出一個Driver進程。
2、Driver進程(可以理解為有main方法的那個類)開始從頭到尾執(zhí)行我們寫的代碼,第一行即創(chuàng)建SparkConf和SparkContext對象。SparkContext在初始化的時候,會構(gòu)造出DAGScheduler和TaskScheduler。
3、TaskScheduler通過它自己對應(yīng)的進程去連接Master,并負(fù)責(zé)向Master注冊Application。
4、Master接收到注冊請求時候,會通過自己的資源調(diào)度算法,在Spark集群的Worker上,為這個Application啟動多個Executor。
5、Worker為Application啟動Executor,Executor啟動之后,自己會反向注冊到TaskScheduler上去。
6、至此整個初始化工作完成,SparkContext繼續(xù)執(zhí)行我們的代碼。每遇到一個action操作,就會形成一個job,然后將該job提交到DAGScheduler。
7、DAGScheduler根據(jù)State劃分算法,將一個job劃分成多個State,每個State就是一個TaskSet。并將該Taskset提交到TaskScheduler。
8、TaskScheduler會將TaskSet中的每一個Task提交到Executor執(zhí)行。
9、Executor每接收到一個task,都會用TaskRunner來封裝task,然后從線程池中取出一個線程來執(zhí)行task。
10、所以,最后整個Spark應(yīng)用程序的執(zhí)行就是state分批次作為taskset提交到executor執(zhí)行,每個task針對RDD的一個分區(qū),執(zhí)行我們定義的算子和函數(shù)。以此類推,直到所有操作執(zhí)行完為止。
三、spark的優(yōu)勢
計算效率高
1、資源復(fù)用
2、粗粒度的資源調(diào)度
使用方便
1、支持使用多門語言來編寫
2、提供了超過80多種方法來供我們使用
通用性強
1、Spark生態(tài)圈中的組件都是基于SparkCore封裝起來的
適應(yīng)性強
1、可以接受上百種數(shù)據(jù)源
2、可以運行在各種各樣的資源調(diào)度框架上
以上就是關(guān)于扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)Spark架構(gòu)運行及優(yōu)勢的詳解介紹,相信大家對spark也已經(jīng)有了一個初步的認(rèn)識,想要了解更多請關(guān)注扣丁學(xué)堂,不僅有專業(yè)的大數(shù)據(jù)培訓(xùn)班供大家學(xué)習(xí),還有與時俱進的課程體系和大量的大數(shù)據(jù)視頻教程讓學(xué)員免費觀看學(xué)習(xí),想要學(xué)好大數(shù)據(jù)的小伙伴快到扣丁學(xué)堂來了解詳情吧??鄱W(xué)堂大數(shù)據(jù)學(xué)習(xí)群:209080834。
【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“大數(shù)據(jù)培訓(xùn)資訊”的相關(guān)文章>>
標(biāo)簽:
大數(shù)據(jù)培訓(xùn)
大數(shù)據(jù)視頻教程
大數(shù)據(jù)分析培訓(xùn)
大數(shù)據(jù)學(xué)習(xí)視頻
Hadoop生態(tài)圈