溫馨提示×

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

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

如何進(jìn)行spark術(shù)語的解釋及Client分析

發(fā)布時(shí)間:2021-12-16 20:44:15 來源:億速云 閱讀:236 作者:柒染 欄目:大數(shù)據(jù)

如何進(jìn)行spark術(shù)語的解釋及Client分析,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

就像在一家公司里面總有明確的分工,每一哥部分負(fù)責(zé)自己的那一部分的任務(wù),大家一起來維持公司的正常運(yùn)轉(zhuǎn),同樣的,spark就像是一個(gè)公司,他的里面也有許許多多的角色組成

Spark術(shù)語解釋:

Master:資源管理的主節(jié)點(diǎn),通過管理各個(gè)worker來管理集群中的資源

Worker,master的從節(jié)點(diǎn),與master一起管理集群的資源

Application:用戶所寫的應(yīng)用程序,就像spark中的HelloWorld的wordcount一樣,他就是一個(gè)application

Driver:任務(wù)調(diào)度的進(jìn)程,application先交給的就是Driver,因?yàn)橐粋€(gè)應(yīng)用程序中有多個(gè)task組成,而task是被送到某個(gè)Executor上進(jìn)行執(zhí)行的工作單元,所以Driver在得到application之后,會(huì)將application的task進(jìn)行規(guī)劃,然后分發(fā)到executor上進(jìn)行執(zhí)行

Executor:worker進(jìn)程所管理的節(jié)點(diǎn)上為某application啟動(dòng)的一個(gè)進(jìn)程,該進(jìn)程負(fù)責(zé)運(yùn)行任務(wù),說白了就是公司里面的工廠,負(fù)責(zé)處理Driver發(fā)送過來的原材料task,

Job:包含了很多組并行的task,與action算子一一對(duì)應(yīng),,就像是大貨車在運(yùn)送材料的時(shí)候?qū)⒇浳镞M(jìn)行打包一起運(yùn)送一樣,將多個(gè)task原材料一起打包分發(fā)到Executor中進(jìn)行執(zhí)行

關(guān)系之間的執(zhí)行關(guān)系:

任務(wù)層面

Application------由多個(gè)job組成(與action的個(gè)數(shù)相關(guān))------stage------task,是一個(gè)個(gè)的線程

資源層面

Master--------worker---------executor-------threadpool(task最后的運(yùn)行地點(diǎn))

如何進(jìn)行spark術(shù)語的解釋及Client分析

在spark集群中,每個(gè)worker管理節(jié)點(diǎn)上的資源,而master通過掌握worker來管理整個(gè)集群的資源

將application封裝成一個(gè)個(gè)的jar包然后上傳到client,在client提交應(yīng)用程序到spark集群中,

在client上就會(huì)啟動(dòng)一個(gè)Driver進(jìn)程,而Driver會(huì)根據(jù)代碼將application拆分成一個(gè)個(gè)的job,然后將job拆分成一個(gè)個(gè)的task,接著向master申請(qǐng)資源,在資源充足的節(jié)點(diǎn)上啟動(dòng)一個(gè)executor和一個(gè)相應(yīng)的線程池

Client。在上面的基本流程的時(shí)候說到客戶端的一個(gè)概念,,那為什么非要使用客戶端而不是直接將任務(wù)提交到集群呢,

1、盡量減少集群中各臺(tái)服務(wù)器之間的性能差異,防止出現(xiàn)木桶效

如果直接提交到集群,會(huì)在其中一個(gè)worker上啟動(dòng)一個(gè)一個(gè)Driver進(jìn)行任務(wù)的拉取和分發(fā),當(dāng)worker數(shù)量過多的時(shí)候會(huì)造成嚴(yán)重的磁盤IO,而且因?yàn)殚L(zhǎng)時(shí)間使用同一個(gè)節(jié)點(diǎn)進(jìn)行分發(fā),頻繁的通信會(huì)造成這個(gè)節(jié)點(diǎn)與其他節(jié)點(diǎn)的性能差異,這樣就會(huì)出現(xiàn)木桶效應(yīng)

2、便于維護(hù)集群,以防止出現(xiàn)危害集群的行為

當(dāng)創(chuàng)建客戶端之后,不同的用戶可以使用不同的權(quán)限進(jìn)行程序的提交,在客戶端上可以設(shè)置權(quán)限的不同,而且,雖然客戶端節(jié)點(diǎn)在使用的過程中也會(huì)出現(xiàn)木桶效應(yīng),但是因?yàn)樵诩褐?,不?huì)對(duì)集群產(chǎn)生什么影響

在設(shè)置了客戶端避免了一些不必要的影響之后,為了更好地使用集群的性能,就產(chǎn)生了兩種不同的application提交方式

Client

如何進(jìn)行spark術(shù)語的解釋及Client分析

1、worker會(huì)向master進(jìn)行匯報(bào)資源情況,

2、master就掌握了集群的資源情況,知道spark中有多少core和memory以及每一個(gè)worker管理多少core和memory

3、使用spark-submit在客戶端上提交一個(gè)application,在client上會(huì)啟動(dòng)一個(gè)Driver進(jìn)程

4、driver進(jìn)程啟動(dòng)之后會(huì)去master申請(qǐng)資源,

5、Master會(huì)發(fā)送請(qǐng)求在資源充足的worker節(jié)點(diǎn)上啟動(dòng)executor

6、Executor啟動(dòng)之后會(huì)向Driver反向注冊(cè),也就知道了一共有多少個(gè)executor進(jìn)行計(jì)算

7、Driver發(fā)送task并回收計(jì)算結(jié)果,監(jiān)控executor的計(jì)算進(jìn)程,包括出現(xiàn)錯(cuò)誤進(jìn)行重試以及task的運(yùn)行日志

Cluster

Client提交方式存在一定的風(fēng)險(xiǎn),當(dāng)task數(shù)量過多之后,計(jì)算結(jié)果都會(huì)被回收到Driver端,可能會(huì)造成Driver的異常退出,無法進(jìn)行任務(wù)的調(diào)度,也就是無法提交程序到集群中

如何進(jìn)行spark術(shù)語的解釋及Client分析

運(yùn)行程序和client基本相同,不同的地方是Driver會(huì)在其中一個(gè)資源比較充足的worker節(jié)點(diǎn)上進(jìn)行啟動(dòng),同樣的,Driver啟動(dòng)起來之后會(huì)去申請(qǐng)資源,在worker節(jié)點(diǎn)上啟動(dòng)Executor上,然后反向注冊(cè)給Driver,但是,cluster提交方式的不同的地方是他不會(huì)將計(jì)算結(jié)果拉回到客戶端進(jìn)行查看,也就是說在client上不能實(shí)施的監(jiān)控集群的運(yùn)行情況,只能去web層面進(jìn)行查看

那這兩種提交方式的不同,下面的表格進(jìn)行了相應(yīng)的講解

如何進(jìn)行spark術(shù)語的解釋及Client分析

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

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

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

AI