spark優(yōu)化(一):合理分配資源

分配更多資源:性能調(diào)優(yōu)的王道,就是增加和分配更多的資源,性能和速度上的提升,是顯而易見的;基本上,在一定范圍之內(nèi),增加資源與性能的提升,是成正比的;寫完了一個(gè)復(fù)雜的spark作業(yè)之后,進(jìn)行性能調(diào)優(yōu)的時(shí)候,首先第一步,我覺得,就是要來調(diào)節(jié)最優(yōu)的資源配置;在這個(gè)基礎(chǔ)之上,如果說你的spark作業(yè),能夠分配的資源達(dá)到了你的能力范圍的頂端之后,無法再分配更多的資源了,公司資源有限;那么才是考慮去做后面的這些性能調(diào)優(yōu)的點(diǎn)。

問題:
1、分配哪些資源?
2、在哪里分配這些資源?
3、為什么多分配了這些資源以后,性能會(huì)得到提升?

答案:
1、分配哪些資源?executor、cpu per executor、memory per executor、driver memory
2、在哪里分配這些資源?在我們?cè)谏a(chǎn)環(huán)境中,提交spark作業(yè)時(shí),用的spark-submit shell腳本,里面調(diào)整對(duì)應(yīng)的參數(shù)

/usr/local/spark/bin/spark-submit \
--class cn.spark.sparktest.core.WordCountCluster \
--num-executors 3 \  配置executor的數(shù)量
--driver-memory 100m \  配置driver的內(nèi)存(影響不大)
--executor-memory 100m \  配置每個(gè)executor的內(nèi)存大小
--executor-cores 3 \  配置每個(gè)executor的cpu core數(shù)量
/usr/local/SparkTest-0.0.1-SNAPSHOT-jar-with-dependencies.jar \

3、調(diào)節(jié)到多大,算是最大呢?

第一種,Spark Standalone,公司集群上,搭建了一套Spark集群,你心里應(yīng)該清楚每臺(tái)機(jī)器還能夠給你使用的,大概有多少內(nèi)存,多少cpu core;那么,設(shè)置的時(shí)候,就根據(jù)這個(gè)實(shí)際的情況,去調(diào)節(jié)每個(gè)spark作業(yè)的資源分配。比如說你的每臺(tái)機(jī)器能夠給你使用8G內(nèi)存,4個(gè)cpu core;10臺(tái)機(jī)器;executor數(shù)可設(shè)置20;平均每個(gè)executor分配4G內(nèi)存,2個(gè)cpu。

第二種,Yarn。資源隊(duì)列。資源調(diào)度。應(yīng)該去查看,你的spark作業(yè),要提交到的資源隊(duì)列,大概有多少資源?500G內(nèi)存,100個(gè)cpu core;executor數(shù)50;平均每個(gè)executor分配10G內(nèi)存,2個(gè)cpu。

一個(gè)原則,你能使用的資源有多大,就盡量去調(diào)節(jié)到最大的大小(executor的數(shù)量,幾十個(gè)到上百個(gè)不等;executor內(nèi)存;executor cpu core)

4、為什么調(diào)節(jié)了資源以后,性能可以提升?

創(chuàng)新互聯(lián)公司專注于企業(yè)營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、南縣網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為南縣等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

    4.1、增加executor:
    如果executor數(shù)量比較少,那么,能夠并行執(zhí)行的task數(shù)量就比較少,就意味著,我們的Application的并行執(zhí)行的   能力就很弱。
    比如有3個(gè)executor,每個(gè)executor有2個(gè)cpu core,那么同時(shí)能夠并行執(zhí)行的task,就是6個(gè)。6個(gè)執(zhí)行完以后,再換下一批6個(gè)task。
    增加了executor數(shù)量以后,那么,就意味著,能夠并行執(zhí)行的task數(shù)量,也就變多了。比如原先是6個(gè),現(xiàn)在可能可以并行執(zhí)行10個(gè),甚至20個(gè),100個(gè)。那么并行能力就比之前提升了數(shù)倍,數(shù)十倍。
    相應(yīng)的,性能(執(zhí)行的速度),也能提升數(shù)倍~數(shù)十倍。

    4.2、增加每個(gè)executor的cpu core,也是增加了執(zhí)行的并行能力。原本20個(gè)executor,每個(gè)才2個(gè)cpu core。能夠并行執(zhí)行的task數(shù)量,就是40個(gè)task。
    現(xiàn)在每個(gè)executor的cpu core,增加到了5個(gè)。能夠并行執(zhí)行的task數(shù)量,就是100個(gè)task。
    執(zhí)行的速度,提升了2.5倍。

    4.3、增加每個(gè)executor的內(nèi)存量。增加了內(nèi)存量以后,對(duì)性能的提升,有兩點(diǎn):
    如果需要對(duì)RDD進(jìn)行cache,那么更多的內(nèi)存,就可以緩存更多的數(shù)據(jù),將更少的數(shù)據(jù)寫入磁盤,甚至不寫入磁盤。減少了磁盤IO。
    對(duì)于shuffle操作,reduce端,會(huì)需要內(nèi)存來存放拉取的數(shù)據(jù)并進(jìn)行聚合。如果內(nèi)存不夠,也會(huì)寫入磁盤。如果給executor分配更多內(nèi)存以后,就有更少的數(shù)據(jù),需要寫入磁盤,甚至不需要寫入磁盤。減少了磁盤IO,提升了性能。
    對(duì)于task的執(zhí)行,可能會(huì)創(chuàng)建很多對(duì)象。如果內(nèi)存比較小,可能會(huì)頻繁導(dǎo)致JVM堆內(nèi)存滿了,然后頻繁GC,垃圾回收,minor GC和full GC。(速度很慢)。內(nèi)存加大以后,帶來更少的GC,垃圾回收,避免了速度變慢,速度變快了。

分享標(biāo)題:spark優(yōu)化(一):合理分配資源
URL網(wǎng)址:http://muchs.cn/article34/ihdgse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站企業(yè)建站、網(wǎng)站策劃、軟件開發(fā)定制網(wǎng)站、網(wǎng)站營(yíng)銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)