對於spark應用來說,資源是影響spark應用執行效率的乙個重要因素。當乙個長期執行 的服務(比如thrift server),若分配給它多個executor,可是卻沒有任何任務分配給它,而此時有其他的應用卻資源張,這就造成了很大的資源浪費和資源不合理的排程。1、external shuffle service配置 動態資源排程就是為了解決這種場景,根據當前應用任務的負載情況,實時的增減 executor個數,從而實現動態分配資源,使整個spark系統更加健康。
1、拷貝$/yarn/目錄下的spark--yarn-shuffle.jar到$/share/hadoop/yarn/lib/目錄下;
xsync spark--yarn-shuffle.jar
2、在$/etc/hadoop/yarn-site.xml檔案中新增如下配置:
yarn.nodemanager.aux-services
mapreduce_shuffle,spark_shuffle
yarn.nodemanager.aux-services.spark_shuffle.class
org.apache.spark.network.yarn.yarnshuffleservice
注意:如果 「yarn.nodemanager.aux-services」 配置項已存在,則在 value 中新增 「spark_shuffle」,且用逗號和其他值分開。
2、增大nodemanager的heap size通過在$/etc/hadoop/yarn-env.s**件中設定yarn_heapsize的值(預設為1000)來實現,此處以配置為6000為例。
xsync yarn-env.sh
3、配置基本引數在spark-defaults.sh#配置external shuffle service服務(一定要配置啟用)
spark.shuffle.service.enabled true
#啟用動態資源排程
spark.dynamicallocation.enabled true
#每個應用中最少executor的個數
spark.dynamicallocation.minexecutors 1
#每個應用中最多executor的個數
spark.dynamicallocation.maxexecutors 3
注:動態資源配置完成後,一定要先重啟spark,再重啟hadoop,否則會因為埠占用問題導致重啟不成功,原因未知。
動態資源可選配置引數如下:
引數名稱
預設值說明
spark.dynamicallocation.enabled
false
是否使用動態資源分配,根據工作負載對應用程式executor進行擴充套件
spark.dynamicallocation.executoridletimeout
60s如果啟用了動態分配並且executor已經空閒超過這個時間,executor將被釋放
spark.dynamicallocation.cachedexecutoridletimeout
infinity
如果啟用了動態分配,並且快取資料塊的executor已經空閒了超過這個時間,executor將被釋放
spark.dynamicallocation.initialexecutors
spark.dynamicallocation.enabled
如果啟用動態分配,則要執行executor的初始數量。如果設定了「–num-executors」(或「spark.executor.instances」)並且大於這個值,則會使用這個值進行初始化。 如: max(initialexecuor = 3, –num-executors = 10) 取最大
spark.dynamicallocation.maxexecutors
infinity
如果啟用動態分配,executor的上限個數。必須設定乙個數,否則會占用集群所有資源
spark.dynamicallocation.minexecutors
0如果啟用動態分配,executor的下限個數。
spark.dynamicallocation.schedulerbacklogtimeout
1s如果啟用動態分配,超過這個時間後還有未完成的積壓任務,將會觸發再次請求新的executor
spark.shuffle.service.port
7337
shuffle服務監聽資料獲取請求的埠,可選配置。預設值為:7337
4、最後說明
說明使用動態資源排程功能,必須配置external shuffle service。如果沒有使用external shuffle service,executor被殺時會丟失shuffle檔案。
配置了動態資源排程功能,就不能再單獨配置executor的個數,否則會報錯退出。
使用動態資源排程功能,能保證最少的executor的個數(spark.dynamicallocation.minexecutors)
Spark寫Redis Spark資源配置總結
19 10 16 11 22 06 error yarnclusterscheduler lost executor 28 on container marked as failed container on host exit status 137.diagnostics container ki...
Hadoop資源配置
1.1 yarn的工作流程圖 1.2 yarn流程圖詳解 如上圖所示,yarn框架流程如下幾個步驟 的命令 使用者程式等 yarn中的resourcemanager負責接收和處理來自客戶端的請求,待接收到客戶端應用程式請求後,resourcemanager裡面的排程器會為應用程式分配乙個容器。同時r...
spark常規效能調優一 最優資源配置
spark 效能調優的第一步,就是為任務分配更多的資源,在一定範圍內,增加資源的分配與效能的提公升是成正比的,實現了最優的資源配置後,在此基礎上再考慮進行後面論述的效能調優策略。資源的分配在使用指令碼提交spark任務時進行指定,標準的spark任務提交指令碼如 清單2 1所示 標準spark提交指...