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 standalone master)決定哪些application能夠運行,何時運行以及哪裏去運行。而slave服務( YARN NodeManager, Mesos slave和Spark standalone slave)實際上運行executor進程。html

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

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

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

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

  從深層次的含義講,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模式):spa

 

         更多請參考http://www.aboutyun.com/thread-12294-1-1.html調試

  從源碼實現,調度器等方面看,請參照本博客的《Spark on YARN集羣模式做業運行全過程分析》《Spark on YARN客戶端模式做業運行全過程分析》的介紹。code

相關文章
相關標籤/搜索