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”。