日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Spark性能调优之资源分配

發布時間:2025/1/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark性能调优之资源分配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

**性能優化王道就是給更多資源!**機器更多了,CPU更多了,內存更多了,性能和速度上的提升,是顯而易見的。基本上,在一定范圍之內,增加資源與性能的提升,是成正比的;寫完了一個復雜的spark作業之后,

進行性能調優的時候,首先第一步,我覺得,就是要來調節最優的資源配置;在這個基礎之上,

如果說你的spark作業,能夠分配的資源達到了你的能力范圍的頂端之后,無法再分配更多的資源了,

公司資源有限;那么才是考慮去做后面的這些性能調優的點。

**大體上這兩個方面:**core mem

問題:

1、分配哪些資源?

2、在哪里分配這些資源?

3、為什么多分配了這些資源以后,性能會得到提升?

答案:

1、分配哪些資源?

executor、core per executor、memory per executor、driver memory

2、在哪里分配這些資源?

在我們在生產環境中,提交spark作業時,用的spark-submit shell腳本,里面調整對應的參數

/usr/local/spark/bin/spark-submit \

–class cn.spark.sparktest.core.WordCountCluster \

–num-executors 3 \ 配置executor的數量

–executor-memory 100m \ 配置每個executor的內存大小

–executor-cores 3 \ 配置每個executor的cpu core數量

–driver-memory 100m \ 配置driver的內存(影響很大)

/usr/local/SparkTest-0.0.1-SNAPSHOT-jar-with-dependencies.jar \

3、調節到多大,算是最大呢?

第一種,Spark Standalone,公司集群上,搭建了一套Spark集群,你心里應該清楚每臺機器還能夠

給你使用的,大概有多少內存,多少cpu core;那么,設置的時候,就根據這個實際的情況,

去調節每個spark作業的資源分配。比如說你的每臺機器能夠給你使用4G內存,2個cpu core;

20臺機器;executor,20;平均每個executor:4G內存,2個cpu core。

第二種,Yarn。資源隊列。資源調度。應該去查看,你的spark作業,要提交到的資源隊列,

hadoop spark storm 每一個隊列都有各自的資源(cpu mem)

**大概有多少資源?**500G內存,100個cpu core;executor,50;平均每個executor:10G內存,2個cpu core。

Spark-submit的時候怎么指定資源隊列? --conf spark.yarn.queue default

設置隊列名稱:spark.yarn.queue default

一個原則,你能使用的資源有多大,就盡量去調節到最大的大小(executor的數量,幾十個到上百個不等;

executor內存;executor cpu core)

4、為什么調節了資源以后,性能可以提升?

增加executor:

如果executor數量比較少,那么,能夠并行執行的task數量就比較少,就意味著,我們的Application的并行執行的能力就很弱。

比如有3個executor,每個executor有2個cpu core,那么同時能夠并行執行的task,就是6個。6個執行完以后,再換下一批6個task。增加了executor數量以后,那么,就意味著,能夠并行執行的task數量,也就變多了。比如原先是6個,現在可能可以并行執行10個,甚至20個,100個。那么并行能力就比之前提升了數倍,數十倍。相應的,性能(執行的速度),也能提升數倍~數十倍。

增加每個executor的cpu core:

也是增加了執行的并行能力。原本20個executor,每個才2個cpu core。能夠并行執行的task數量,

就是40個task。現在每個executor的cpu core,增加到了5個。能夠并行執行的task數量,就是100個task。執行的速度,提升了2倍左右。

增加每個executor的內存量:

增加了內存量以后,對性能的提升,有三點:

1、如果需要對RDD進行cache,那么更多的內存,就可以緩存更多的數據,將更少的數據寫入磁盤

甚至不寫入磁盤。減少了磁盤IO

2、對于shuffle操作,reduce端,會需要內存來存放拉取的數據并進行聚合。**如果內存不夠,**也會寫入磁盤。如果給executor分配更多內存以后,就有更少的數據,需要寫入磁盤,甚至不需要寫入磁盤。減少了磁盤IO,提升了性能。

3、對于task的執行可能會創建很多對象。如果內存比較小,可能會頻繁導致JVM堆內存滿了,

然后頻繁GC,垃圾回收,minor GC和full GC。(速度很慢)。內存加大以后,帶來更少的GC,垃圾回收,

避免了速度變慢,性能提升

參考鏈接: Spark性能調優之資源分配

總結

以上是生活随笔為你收集整理的Spark性能调优之资源分配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。