1. 程式人生 > >Spark on yarn--幾種提交叢集執行spark程式的方式

Spark on yarn--幾種提交叢集執行spark程式的方式

今天看了spark的yarn配置,本來想著spark在hadoop叢集上啟動之後,還需要配置spark才能讓yarn來管理和排程spark的資源,原來啟動master和worker之後就會讓yarn來原理spark的資源,因為我使用了spark和hadoop叢集的高可用,可能是不是這個問題呢,還不太清楚,暫且記住,等我再研究研究

因為我使用zookeeper叢集來進行管理,所以我提交任務的時候

 ./spark-submit --class com.spark.wordcount --master spark://spark01.elk.com:7077,spark02.elk.com:7077 /root/jars/WordCount.jar
可以正常執行,我很好奇,所以去掉其中一個,也可以正常執行

 ./spark-submit --class com.spark.wordcount --master spark://spark01.elk.com:7077  /root/jars/WordCount.jar

因為看網上很多都是用yarn-client和yarn-cluster來提交到叢集上執行的,所以我也試了一下,發現

./spark-submit --class com.spark.wordcount --master yarn-cluster /root/jars/WordCount.jar

通過這種方式也可以正常執行,


可以看出來它確實是提交到resourcemanager讓它管理資源去了,但是執行


./spark-submit --class com.spark.wordcount --master yarn-client /root/jars/WordCount.jar執行時卻報錯了


很好奇為啥會出現這個問題,暫且留下,咱繼續,

還有一種提交方式

./spark-submit --class com.spark.wordcount--deploy-mode client /root/jars/WordCount.jar

./spark-submit --class com.spark.wordcount--deploy-mode cluster /root/jars/WordCount.jar

這兩種方式又提交成功了,這很是奇怪。我還得研究研究

剛看了一下

yarn-client和yarn-cluster的主要區別

主要是任務排程taskschedule的區別,yarn-client是將任務排程的功能放在客戶端,而yarn-cluster將任務放在資源管理器中