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將任務放在資源管理器中