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

2021-09-24 08:42:53 字數 2747 閱讀 9773

spark

效能調優的第一步,就是為任務分配更多的資源,在一定範圍內,增加資源的分配與效能的提公升是成正比的,實現了最優的資源配置後,在此基礎上再考慮進行後面論述的效能調優策略。

資源的分配在使用指令碼提交spark任務時進行指定,標準的spark任務提交指令碼如**清單2-1所示:

標準spark提交指令碼

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

--class com.atguigu.spark.analysis \

--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 core數量

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

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

第一種是spark standalone

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

第二種是spark 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,提公升整體效能。

補充:生產環境spark submit指令碼配置

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

--class com.atguigu.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:3

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

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

spark效能調優第一步,就是為任務分配更多的資源,在一定的範圍內,增加資源的分配與效能的提公升是成正比的。資源的分配在使用指令碼提交spark任務時指定,標準的spark任務提交指令碼如下所示 usr opt modules spark bin spark submit class com.sta...

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運算元函式使用的,函式...