Apache Spark三種分佈式部署方式比較

目前Apache Spark支持三種分佈式部署方式,分別是standalone、spark on mesos和 spark on YARN

其中,第一種類似於MapReduce 1.0所採用的模式,內部實現了容錯性和資源管理,後兩種則是未來發展的趨勢,部分容錯性和資源管理交由統一的資源管理系統完成:讓Spark運行在一個通用的資源管理系統之上,這樣可以與其他計算框架,比如MapReduce,公用一個集羣資源,最大的好處是降低運維成本和提高資源利用率(資源按需分配)。本文將介紹這三種部署方式,並比較其優缺點。

standalone模式,即獨立模式,自帶完整的服務,可單獨部署到一個集羣中,無需依賴任何其他資源管理系統。從一定程度上說,該模式是其他兩種的基礎。借鑑Spark開發模式,我們可以得到一種開發新型計算框架的一般思路:先設計出它的standalone模式,爲了快速開發,起初不需要考慮服務(比如master/slave)的容錯性,之後再開發相應的wrapper,將stanlone模式下的服務原封不動的部署到資源管理系統yarn或者mesos上,由資源管理系統負責服務本身的容錯。
Spark On Mesos模式。這是很多公司採用的模式,官方推薦這種模式(當然,原因之一是血緣關係)。正是由於Spark開發之初就考慮到支持Mesos,因此,目前而言,Spark運行在Mesos上會比運行在YARN上更加靈活,更加自然。目前在Spark On Mesos環境中,用戶可選擇兩種調度模式之一運行自己的應用程序(可參考Andrew Xia的“Mesos Scheduling Mode on Spark”):
1)   粗粒度模式(Coarse-grained Mode):每個應用程序的運行環境由一個Dirver和若干個Executor組成,其中,每個Executor佔用若干資源,內部可運行多個Task(對應多少個“slot”)。應用程序的各個任務正式運行之前,需要將運行環境中的資源全部申請好,且運行過程中要一直佔用這些資源,即使不用,最後程序運行結束後,回收這些資源。
2)   細粒度模式(Fine-grained Mode):鑑於粗粒度模式會造成大量資源浪費,Spark On Mesos還提供了另外一種調度模式:細粒度模式,這種模式類似於現在的雲計算,思想是按需分配。
Spark On YARN模式。這是一種最有前景的部署模式。但限於YARN自身的發展,目前僅支持粗粒度模式(Coarse-grained Mode)。這是由於YARN上的Container資源是不可以動態伸縮的,一旦Container啓動之後,可使用的資源不能再發生變化,不過這個已經在YARN計劃(具體參考:https://issues.apache.org/jira/browse/YARN-1197)中了。將Spark運行在Hadoop2上,本質上是將Spark運行在Hadoop YARN上,因爲Spark自身只提供了作業管理功能,資源調度要依託於第三方系統,比如YARN或Mesos等 ,之所以不採用Mesos而是YARN,是因爲YARN擁有強大的社區支持,且逐步已經成爲資源管理系統中的標準。
spark on yarn 的支持兩種模式:
1)yarn-cluster:適用於生產環境;
2)yarn-client:適用於交互、調試,希望立即看到app的輸出
Yarn-cluster和yarn-client的區別在於yarn appMaster,每個yarn app實例有一個appMaster進程,是爲app啓動的第一個container;負責從ResourceManager請求資源,獲取到資源後,告訴NodeManager爲其啓動container。yarn-cluster和yarn-client模式內部實現還是有很大的區別。如果你需要用於生產環境,那麼請選擇yarn-cluster;而如果你僅僅是Debug程序,可以選擇yarn-client。

總之,這三種分佈式部署方式各有利弊,通常需要根據公司情況決定採用哪種方案。進行方案選擇時,往往要考慮公司的技術路線(採用Hadoop生態系統還是其他生態系統)、服務器資源(資源有限的話就不要考慮standalone模式了)、相關技術人才儲備等。
上面涉及到Spark的許多部署模式,究竟哪種模式好這個很難說,需要根據你的需求,如果你只是測試Spark Application,你可以選擇local模式。而如果你數據量不是很多,Standalone 是個不錯的選擇。當你需要統一管理集羣資源(Hadoop、Spark等)那麼你可以選擇Yarn,但是這樣維護成本就會變高。
  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章