1. 程式人生 > >spark應用yarn模式提交多個應用,一個Running,其它處於accepted狀態

spark應用yarn模式提交多個應用,一個Running,其它處於accepted狀態

這篇文章解決我們的問題:https://blog.csdn.net/dandykang/article/details/48160927

以前只是開發,現在到了一家大資料剛起步公司,需要提交spark應用到yarn,每次只能執行一個,處於Running狀態,其它處於Accepted狀態,經過幾天折騰,仍然只能執行兩個spark應用,堅持了一下,終於解決。

在NodeManager中啟動External shuffle Service。

a. 在“yarn-site.xml”中新增如下配置項:

<property>
<name>yarn.nodemanager.aux-services</name
>
<value>spark_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.spark_shuffle.class</name> <value>org.apache.spark.network.yarn.YarnShuffleService</value> </property> <property> <name>spark.shuffle.service.port</name
>
<value>7337</value> </property>

配置引數描述
yarn.nodemanager.aux-services :NodeManager中一個長期執行的輔助服務,用於提升Shuffle計算效能。
yarn.nodemanager.auxservices.spark_shuffle.class :NodeManager中輔助服務對應的類。
spark.shuffle.service.port :Shuffle服務監聽資料獲取請求的埠。可選配置,預設值為“7337”。
b. 新增依賴的jar包

拷貝“${SPARK_HOME}
/lib/spark-1.3.0-yarn-shuffle.jar”到“${HADOOP_HOME}/share/hadoop/yarn/lib/”目錄下。
note:高版本沒有lib目錄,有jars目錄,比如說spark-2.0.2-yarn-shuffle.jar就在${SPARK_HOME}/yarn目錄下,將其複製到${HADOOP_HOME}/share/hadoop/yarn/lib目錄下。

c. 重啟NodeManager程序,也就啟動了External shuffle Service。

Spark應用使用External shuffle Service。

在“spark-defaults.conf”中必須新增如下配置項:

spark.shuffle.service.enabled true
spark.shuffle.service.port 7337

說明

1.如果1.如果“yarn.nodemanager.aux-services”配置項已存在,則在value中新增 “spark_shuffle”,且用逗號和其他值分開。
2.“spark.shuffle.service.port”的值需要和上面“yarn-site.xml”中的值一樣。 配置引數描述 spark.shuffle.service.enabled :NodeManager中一個長期執行的輔助服務,用於提升Shuffle 計算效能。預設為false,表示不啟用該功能。 spark.shuffle.service.port :Shuffle服務監聽資料獲取請求的埠。可選配置,預設值 為“7337”。