1. 程式人生 > >Apache Spark三種分散式部署方式比較

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,但是這樣維護成本就會變高。

相關推薦

Apache Spark分散式部署方式比較

目前Apache Spark支援三種分散式部署方式,分別是standalone、spark on mesos和 spark on YARN 其中,第一種類似於MapReduce 1.0所採用的模式,內部實現了容錯性和資源管理,後兩種則是未來發展的趨勢,部分容錯性和資源管理交

Spark分散式部署方式比較

Apache Spark支援四種分散式部署方式,分別是standalone、spark on mesos和 spark on YARN,Kubernetes 其中,第一種類似於MapReduce 1.0

Spark中的分散式部署方式對比(粗粒度模式、細粒度模式)

本文來自董的部落格,原文地址: http://dongxicheng.org/framework-on-yarn/apache-spark-comparing-three-deploying-ways/ 目前Apache Spark支援三種分散式部署方式,分別是standalone

Spark分散式部署

wechat:812716131 ------------------------------------------------------ 技術交流群請聯絡上面wechat ----------------------------------------------

LVS:負載均衡方式比較+另負載均衡方式

bytes com 方式 工作 domain rtu href 端口號 速度 轉:http://blog.csdn.net/u013256816/article/details/50705578 什麽是LVS? ??首先簡單介紹一下LVS (Linux Virtual

LVS:負載均衡方式比較

什麽是 redirect cti enter 通過 主服務器 ip隧道 一般來說 lvs 轉載於http://soft.chinabyte.com/25/13169025.shtml  1、什麽是LVS?   首先簡單介紹一下LVS (Linux Virtual Serve

從壹開始前後端分離【 .NET Core2.0 +Vue2.0 】框架之十二 || 跨域方式比較,DTOs(資料傳輸物件)初探

更新反饋 1、博友@童鞋說到了,Nginx反向代理實現跨域,因為我目前還沒有使用到,給忽略了,這次記錄下,為下次補充。 程式碼已上傳Github+Gitee,文末有地址   今天忙著給小夥伴們提出的問題解答,時間上沒把握好,都快下班了,趕緊釋出:書說上文《從壹開始前

ArrayList遍歷方式比較

方法一:普通for迴圈遍歷 //僅做程式碼的格式說明,不涉及具體問題 for(int i = 0 ; i < list.size() ; i++){  system.out.println(list.get(i));  } 方法二:增強f

LVS 負載均衡方式比較

1、什麼是LVS? 首先簡單介紹一下LVS (Linux Virtual Server)到底是什麼東西,其實它是一種叢集(Cluster)技術,採用IP負載均衡技術和基於內容請求分發技術。排程器具有很好的吞吐率,將請求均衡地轉移到不同的伺服器上執行,且排程器自動遮蔽

Spark屬性配置方式詳細說明

隨著Spark專案的逐漸成熟, 越來越多的可配置引數被新增到Spark中來。在Spark中提供了三個地方用於配置:   1、Spark properties:這個可以控制應用程式的絕大部分屬性。並且可以通過 SparkConf物件或者Java 系統屬性進行設定;   2、

《轉載》Apache HTTP Server 與 Tomcat 的連接方式介紹

之前 img 6.2 自定義 con 訪問 ont 是什麽 bsp 本文轉載自IBM developer 首先我們先介紹一下為什麽要讓 Apache 與 Tomcat 之間進行連接。事實上 Tomcat 本身已經提供了 HTTP 服務,該服務默認的端口是 8080,裝好 t

常見存儲方式DAS、NAS、SAN的架構及比較

DAS NAS SAN存儲的分類 根據服務器類型分為: 封閉系統的存儲(封閉系統主要指大型機) 開放系統的存儲(開放系統指基於window Unix Linux等操作系統的服務器) 開放系統的存儲分為:內置存儲和外掛存儲 外掛存儲根據連接方式分為:直連式存儲(DAS)和網絡化存儲(FAS);網絡化存儲根

Java中List集合的遍歷(遍歷方式效率的比較

public static void main(String args[]){ compare(); } public static void compare() { List<String> list = new ArrayList

spark清理資料的方式:UDF,自定義函式,spark.sql;Python中的zip()與*zip()函式詳解//及python中的*args和**kwargs

(1)UDF的方式清理資料 import sys reload(sys) sys.setdefaultencoding('utf8') import re import json from pyspark.sql import SparkSession

不同的方式,計算歐氏距離,速度比較

def int list axis return arr () num ces import timeimport numpy as np#計算單行的歐氏距離def cal_1(vec): dist = np.linalg.norm(vec) sim = (1.

Spark的兩分散式部署模式: Mesos,Yarn

目前Apache Spark支援三種分散式部署方式,分別是standalone、spark on mesos和 spark on YARN,其中,第一種類似於MapReduce 1.0所採用的模式,內部實現了容錯性和資源管理,後兩種則是未來發展的趨勢,部分容錯性和資源管理交由

Php與Apache結合方式以及各自優缺點

httpd與php的結合方式: 如果網站的訪問量很小,同一時間僅僅處理單個請求,那麼各種結合方式的特點並不能很好的體現。這裡我們僅考慮在高訪問量、高併發情況下各種結合方式的優缺點。 CGI

同一功能不同實現方式你選哪個

img com png 指令 con 段落 gin 表示 alt 例題一枚:在input框中輸入內容,會相應的顯示在下面的div中的不同做法: <!DOCTYPE html> <html> <head> &

集合的遍歷方式

叠代器 whl print 循環 下一個 sys 三種 iterator for 1、for循環 代碼實現: for(int i=0;i<list.size();i++){ product p=list.get(i); System.println(p); } 2、叠

redis連接方式

root用戶 存在 number base 配置 bash 更改 拷貝 title 安裝 tar zxvf redis-2.8.9.tar.gz cd redis-2.8.9 #直接make 編譯 make #可使用root用戶執行`make install`,將可執行文件