Spark常規效能調優一 最優資源配置

2021-10-25 06:15:56 字數 2668 閱讀 8146

spark效能調優第一步,就是為任務分配更多的資源,在一定的範圍內,增加資源的分配與效能的提公升是成正比的。

資源的分配在使用指令碼提交spark任務時指定,標準的spark任務提交指令碼如下所示

/usr/opt/modules/spark/bin/spark-submit \

--class com.star.spark.stars\

--num-executors 80 \

--driver-memory 6g \

--executor-memory 6g \

--executor-cores 3 \

/usr/opt/modules/spark/jar/spark.jar \

名稱

說明

--num-executors

配置executor的數量

--driver-memory

配置driver記憶體(影響不大)

--executor-memory

配置每個executor的記憶體大小

--executor-cores

配置每個executor的cpu co調節

調節原則:盡量將任務分配的資源調節到可以使用資源的最大限度

對於具體資源的分配,我們分別討論spark的兩種cluster執行模式

1.standalone模式

在提交任務前,一定知道或者可以從運維部門獲取到你可以使用的資源情況,在編寫submit指令碼的時候,就根據可用的資源情況進行資源的分配,比如說集群有15臺機器,每台機器為8g記憶體,2個cpu core,那麼就指定15個executor,每個executor分配8g記憶體,2個cpu core。

2.yarn模式

由於yarn使用資源佇列進行資源的分配和排程,在表寫submit指令碼的時候,就根據spark作業要提交到的資源佇列,進行資源的分配,比如資源佇列有400g記憶體,100個cpu core,那麼指定50個executor,每個executor分配8g記憶體,2個cpu core。

名稱

解析

增加executor·個數

在資源允許的情況下,增加executor的個數可以提高執行task的並行度。比如有4個executor,每個executor有2個cpu core,那麼可以並行執行8個task,如果將executor的個數增加到8個(資源允許的情況下),那麼可以並行執行16個task,此時的並行能力提公升了一倍。

增加每個executor的cpu core個數

在資源允許的情況下,增加每個executor的cpu

core個數,可以提高執行task的並行度。比如有4個executor,每個executor有2個cpu core,那麼可以並行執行8個task,如果將每個executor的cpu core個數增加到4個(資源允許的情況下),那麼可以並行執行16個task,此時的並行能力提公升了一倍。

增加每個executor的記憶體量

在資源允許的情況下,增加每個executor的記憶體量以後,對效能的提公升有三點:

可以快取更多的資料(即對rdd進行cache),寫入磁碟的資料相應減少,甚至可以不寫入磁碟,減少了可能的磁碟io;

可以為shuffle操作提供更多記憶體,即有更多空間來存放reduce端拉取的資料,寫入磁碟的資料相應減少,甚至可以不寫入磁碟,減少了可能的磁碟io;

可以為task的執行提供更多記憶體,在task的執行過程中可能建立很多物件,記憶體較小時會引發頻繁的gc,增加記憶體後,可以避免頻繁的gc,提公升整體效能。

3.生產環境spark submit指令碼配置

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

--class com.star.spark.wordcount \

--num-executors 80 \

--driver-memory 6g \

--executor-memory 6g \

--executor-cores 3 \

--master yarn-cluster \

--queue root.default \

--conf spark.yarn.executor.memoryoverhead=2048 \

--conf spark.core.connection.ack.wait.timeout=300 \

/usr/local/spark/spark.jar

名稱

數值

--num-executors

50-100

--driver-memory

1g-5g

--executor-memory

6g-10g

--executor-cores

--master實際生產環境一定要用yarn-cluster

spark常規效能調優一 最優資源配置

spark 效能調優的第一步,就是為任務分配更多的資源,在一定範圍內,增加資源的分配與效能的提公升是成正比的,實現了最優的資源配置後,在此基礎上再考慮進行後面論述的效能調優策略。資源的分配在使用指令碼提交spark任務時進行指定,標準的spark任務提交指令碼如 清單2 1所示 標準spark提交指...

spark 效能調優

核心調優引數如下 num executors executor memory executor cores driver memory spark.default.parallelizm spark.storage.memoryfraction spark.shuffle.memoryfractio...

Spark效能調優

日常工作使用spark處理業務問題中不可避免的都會碰到需要對spark的效能進行調優的情況,這裡就介紹一下對spark的效能調優。1.調節記憶體分配 因為在spark中堆記憶體被劃分為兩塊,一塊是給rdd的cache和persist操作rdd資料快取使用的,另一塊是給spark運算元函式使用的,函式...