Spark:Yarn-cluster和Yarn-client區別與聯繫

        我們都知道Spark支持在yarn上運行,但是Spark on yarn有分爲兩種模式yarn-cluster和yarn-client,它們究竟有什麼區別與聯繫?閱讀完本文,你將瞭解。

  Spark支持可插拔的集羣管理模式(Standalone、Mesos以及YARN ),集羣管理負責啓動executor進程,編寫Spark application 的人根本不需要知道Spark用的是什麼集羣管理。Spark支持的三種集羣模式,這三種集羣模式都由兩個組件組成:master和slave。Master服務(YARN ResourceManager,Mesos master和Spark standalonemaster)決定哪些application可以運行,什麼時候運行以及哪裏去運行。而slave服務( YARN NodeManager, Mesos slave和Spark standaloneslave)實際上運行executor進程。

 

  當在YARN上運行Spark作業,每個Spark executor作爲一個YARN容器(container)運行。Spark可以使得多個Tasks在同一個容器(container)裏面運行。這是個很大的優點。

 

  注意這裏和Hadoop的MapReduce作業不一樣,MapReduce作業爲每個Task開啓不同的JVM來運行。雖然說MapReduce可以通過參數來配置。詳見mapreduce.job.jvm.numtasks。關於這個參數的介紹已經超過本篇文章的介紹。

 

  從廣義上講,yarn-cluster適用於生產環境;而yarn-client適用於交互和調試,也就是希望快速地看到application的輸出。

 

  在我們介紹yarn-cluster和yarn-client的深層次的區別之前,我們先明白一個概念:Application Master。在YARN中,每個Application實例都有一個Application Master進程,它是Application啓動的第一個容器。它負責和ResourceManager打交道,並請求資源。獲取資源之後告訴NodeManager爲其啓動container。

 

  從深層次的含義講,yarn-cluster和yarn-client模式的區別其實就是Application Master進程的區別,yarn-cluster模式下,driver運行在AM(Application Master)中,它負責向YARN申請資源,並監督作業的運行狀況。當用戶提交了作業之後,就可以關掉Client,作業會繼續在YARN上運行。然而yarn-cluster模式不適合運行交互類型的作業。而yarn-client模式下,Application Master僅僅向YARN請求executor,client會和請求的container通信來調度他們工作,也就是說Client不能離開。看下下面的兩幅圖應該會明白(上圖是yarn-cluster模式,下圖是yarn-client模式):

 

 

 

 

 

 

 

更多請參考

參考:http://www.aboutyun.com/thread-12294-1-1.html

原文:http://www.iteblog.com/archives/1223

發佈了490 篇原創文章 · 獲贊 47 · 訪問量 115萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章