資源描述:
《普開(kāi)數(shù)據(jù)馬延輝課堂解析Spark的三種集群deploy模式對(duì)比.docx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、Spark的三種集群deploy模式對(duì)比 Spark有三種集群部署模式,或者叫做集群管理模式。分別是standalone,YARN和Mesos。這三種模式其實(shí)都是master/slave模式。 那么在實(shí)際的項(xiàng)目中,我們?cè)撊绾螌?duì)比選擇呢?下面是我的一些總結(jié),主要參考了: WhichApacheSparkClusterManagersAreTheRightFit?YARN,Mesos,or Standalone? 三種集群資源管理概述 SparkStandalone 作為Spark的一部分,Standalone是一個(gè)簡(jiǎn)單的集群管理器。它具有m
2、aster的HA,彈性應(yīng)對(duì)WorkerFailures,對(duì)每個(gè)應(yīng)用程序的管理資源的能力,并且可以在現(xiàn)有的Hadoop一起運(yùn)行和訪問(wèn)HDFS的數(shù)據(jù)。該發(fā)行版包括一些腳本,可以很容易地部署在本地或在AmazonEC2云計(jì)算。它可以在Linux,Windows或MacOSX上運(yùn)行。 ApacheMesos ApacheMesos ,分布式系統(tǒng)內(nèi)核,具有HA的masters和slaves,可以管理每個(gè)應(yīng)用程序的資源,并對(duì)Docker容器有很好的支持。它可以運(yùn)行Spark工作,Hadoop的MapReduce的,或任何其他服務(wù)的應(yīng)用程序。它有Java,Python
3、和C++的API。它可以在Linux或MacOSX上運(yùn)行?! adoopYARN HadoopYARN,作業(yè)調(diào)度和集群資源管理的分布式計(jì)算框架,具有HA為masters和slaves,在非安全模式下支持Docker容器,在安全模式下支持Linux和Windowscontainerexecutors,和可插拔的調(diào)度器。它可以運(yùn)行在Linux和Windows上運(yùn)行?! 〖嘿Y源調(diào)度能力的對(duì)比 模式資源調(diào)度能力比對(duì)SecurityHA standalone只支持FIFO調(diào)度器,單用戶串行,默認(rèn)所有節(jié)點(diǎn)的所有資源對(duì)應(yīng)用都可用,node節(jié)點(diǎn)的限制,cpu內(nèi)存等限
4、制可以通過(guò)SparkConf來(lái)控制sharedsecret,SSLfordataencryptionStandbyMasterswithZooKeeper和本地文件系統(tǒng)的單點(diǎn)恢復(fù)?! ARN支持資源調(diào)度器Scheduler,應(yīng)用管理器ApplicationsManager。CapacityScheduler和FairScheduler在隊(duì)列的范圍內(nèi),資源共享。Kerberos。SSLfordataencryption主備切換的HA方式,依賴于zookeeper,但不需要單獨(dú)的zkfc進(jìn)程 Mesos看下方:插件式安全模塊,默認(rèn)CyrusSASL,SSLfo
5、rdataencryption一主多備,基于zookeeper的leader選舉?! esos的資源調(diào)度能力描述 粗粒度模式(Coarse-grainedMode):每個(gè)應(yīng)用程序的運(yùn)行環(huán)境由一個(gè)Dirver和若干個(gè)Executor組成,其中,每個(gè)Executor占用若干資源,內(nèi)部可運(yùn)行多個(gè)Task(對(duì)應(yīng)多少個(gè)“slot”)。應(yīng)用程序的各個(gè)任務(wù)正式運(yùn)行之前,需要將運(yùn)行環(huán)境中的資源全部申請(qǐng)好,且運(yùn)行過(guò)程中要一直占用這些資源,即使不用,最后程序運(yùn)行結(jié)束后,回收這些資源。舉個(gè)例子,比如你提交應(yīng)用程序時(shí),指定使用5個(gè)executor運(yùn)行你的應(yīng)用程序,每個(gè)execut
6、or占用5GB內(nèi)存和5個(gè)CPU,每個(gè)executor內(nèi)部設(shè)置了5個(gè)slot,則Mesos需要先為executor分配資源并啟動(dòng)它們,之后開(kāi)始調(diào)度任務(wù)。另外,在程序運(yùn)行過(guò)程中,mesos的master和slave并不知道executor內(nèi)部各個(gè)task的運(yùn)行情況,executor直接將任務(wù)狀態(tài)通過(guò)內(nèi)部的通信機(jī)制匯報(bào)給Driver,從一定程度上可以認(rèn)為,每個(gè)應(yīng)用程序利用mesos搭建了一個(gè)虛擬集群自己使用。 細(xì)粒度模式(Fine-grainedMode):鑒于粗粒度模式會(huì)造成大量資源浪費(fèi),SparkOnMesos還提供了另外一種調(diào)度模式:細(xì)粒度模式,這種模式類(lèi)似
7、于現(xiàn)在的云計(jì)算,思想是按需分配。與粗粒度模式一樣,應(yīng)用程序啟動(dòng)時(shí),先會(huì)啟動(dòng)executor,但每個(gè)executor占用資源僅僅是自己運(yùn)行所需的資源,不需要考慮將來(lái)要運(yùn)行的任務(wù),之后,mesos會(huì)為每個(gè)executor動(dòng)態(tài)分配資源,每分配一些,便可以運(yùn)行一個(gè)新任務(wù),單個(gè)Task運(yùn)行完之后可以馬上釋放對(duì)應(yīng)的資源。每個(gè)Task會(huì)匯報(bào)狀態(tài)給Mesosslave和MesosMaster,便于更加細(xì)粒度管理和容錯(cuò),這種調(diào)度模式類(lèi)似于MapReduce調(diào)度模式,每個(gè)Task完全獨(dú)立,優(yōu)點(diǎn)是便于資源控制和隔離,但缺點(diǎn)也很明顯,短作業(yè)運(yùn)行延遲大?! 】偨Y(jié) 從對(duì)比上看,meso
8、s似乎是Spark更好的選擇,也是被官