云計算四種部署模式,Spark部署模式入門

 2023-12-06 阅读 13 评论 0

摘要:部署模式概述 Spark支持的主要的三種分布式部署方式分別是standalone、spark on mesos和 spark on YARN。 standalone模式 即獨立模式,自帶完整的服務,可單獨部署到一個集群中,無需依賴任何其他資源管理系統。它是Spark實現的資源調度框架,其主要

部署模式概述

Spark支持的主要的三種分布式部署方式分別是standalone、spark on mesos和 spark on YARN

standalone模式

即獨立模式,自帶完整的服務,可單獨部署到一個集群中,無需依賴任何其他資源管理系統。它是Spark實現的資源調度框架,其主要的節點有Client節點、Master節點和Worker節點。

yarn模式

yarn是統一的資源管理機制,在上面可以運行多套計算框架,如map
reduce、storm等根據driver在集群中的位置不同,分為yarn client和yarn cluster。

云計算四種部署模式?mesos模式

mesos是一個更強大的分布式資源管理框架,它允許多種不同的框架部署在其上,包括yarn。

基本上,Spark的運行模式取決于傳遞給SparkContextMASTER環境變量的值,個別模式還需要輔助的程序接口來配合使用,目前支持的Master字符串及URL包括:

Master URL	Meaning
local	在本地運行,只有一個工作進程,無并行計算能力。local[K] 在本地運行,有K個工作進程,通常設置K為機器的CPU核心數量。local[*]	在本地運行,工作進程數量等于機器的CPU核心數量。spark://HOST:PORT	以Standalone模式運行,這是Spark自身提供的集群運行模式,默認端口號: 7077。mesos://HOST:PORT	在Mesos集群上運行,Driver進程和Worker進程運行在Mesos集群上,部署模式必須使用固定值:--deploy-mode cluster。yarn-client	在Yarn集群上運行,Driver進程在本地,Work進程在Yarn集群上,部署模式必須使用固定值:--deploy-mode client。Yarn集群地址必須在HADOOP_CONF_DIRorYARN_CONF_DIR變量里定義。yarn-cluster	在Yarn集群上運行,Driver進程在Yarn集群上,Work進程也在Yarn集群上,部署模式必須使用固定值:--deploy-mode cluster。Yarn集群地址必須在HADOOP_CONF_DIRorYARN_CONF_DIR變量里定義。

用戶在提交任務給Spark處理時,以下兩個參數共同決定了Spark的運行方式。

· –master MASTER_URL :決定了Spark任務提交給哪種集群處理。
· –deploy-mode DEPLOY_MODE:決定了Driver的運行方式,可選值為Client或者Cluster。

standalone框架組成

standalone集群由三個不同級別的節點組成,分別是

  1. Master 主控節點,可以類比為董事長或總舵主,在整個集群之中,最多只有一個Master處在Active狀態
  2. Worker 工作節點 ,這個是manager,是分舵主, 在整個集群中,可以有多個worker,如果worker為零,什么事也做不了
  3. Executor 干苦力活的,直接受worker掌控,一個worker可以啟動多個executor,啟動的個數受限于機器中的cpu核數

standalone部署模式下又分為client模式cluster模式,其中client模式下,driver和client運行于同一JVM中,不由worker啟動,該JVM進程直到spark application計算完成返回結果后才退出。如下圖所示。
在這里插入圖片描述

hadoop菜鳥入門。而在cluster模式下,driverworker啟動,client在確認spark application成功提交給cluster后直接退出,并不等待spark application運行結果返回。如下圖所示
在這里插入圖片描述

從部署圖來進行分析,每個JVM進程在啟動時的文件依賴如何得到滿足。

  1. Master進程最為簡單,除了spark jar包之外,不存在第三方庫依賴
  2. DriverExecutor在運行的時候都有可能存在第三方包依賴,分開來講

Driver比較簡單,spark-submit在提交的時候會指定所要依賴的jar文件從哪里讀取
Executor由worker來啟動,worker需要下載Executor啟動時所需要的jar文件,那么從哪里下載呢。

Standalone模式下任務運行過程

  1. 用戶通過bin/spark-submit部署工具或者bin/spark-class啟動應用程序的Driver進程,Driver進程會初始化SparkContext對象,并向Master節點進行注冊。
  2. Master節點接受Driver程序的注冊,檢查它所管理的Worker節點,為該Driver程序分配需要的計算資源ExecutorWorker節點完成Executor的分配后,向Master報告Executor的狀態。
  3. Worker節點上的ExecutorBackend進程啟動后,向Driver進程注冊。
  4. Driver進程內部通過DAG Schaduler,Stage Schaduler,Task Schaduler等過程完成任務的劃分后,向Worker節點上的ExecutorBackend分配TASK
  5. ExecutorBackend進行TASK計算,并向Driver報告TASK狀態,直至結束。
  6. Driver進程在所有TASK都處理完成后,向Master注銷。

總結

Spark能夠以standalone模式運行,這是Spark自身提供的運行模式,用戶可以通過手動啟動masterworker進程來啟動一個獨立的集群,也可以在一臺機器上運行這些守護進程進行測試。standalone模式可以用在生產環境,它有效的降低了用戶學習、測試Spark框架的成本。

standalone模式目前只支持跨應用程序的簡單FIFO調度。然而,為了允許多個并發用戶,你可以控制每個應用使用的資源的最大數。默認情況下,它會請求使用集群的全部CUP內核。

缺省情況下,standalone任務調度允許worker的失敗(在這種情況下它可以將失敗的任務轉移給其他的worker)。但是,調度器使用master來做調度,這會產生一個單點問題:如果master崩潰,新的應用不會被創建。為了解決這個問題,可以zookeeper的選舉機制在集群中啟動多個master,也可以使用本地文件實現單節點恢復。

yarn集群模式

docker如何部署項目。YARN總體上也Master/slave架構——ResourceManager/NodeManager

(RM)負責對各個NodeManager(NM)上的資源進行統一管理和調度。

container是資源分配和調度的基本單位,其中封裝了機器資源,如內存、CPU、磁盤和網絡等,每個任務會被分配一個Container,該任務只能在該Container中執行,并使用該Container封裝的資源`。

NodeManager的作用則是負責接收并啟動應用的container、而向RM回報本節點上的應用Container運行狀態和資源使用情況。

ApplicationMaster與具體的Application相關,主要負責同ResourceManager協商以獲取合適的Container,并跟蹤這些Container的狀態和監控其進度。

如下圖所示為yarn集群的一般模型。
在這里插入圖片描述

hadoop部署?Spark在yarn集群上的部署方式分為兩種,yarn client(driver運行在客戶端)和yarn cluster(driver運行在master上),driver on master如下圖所示。
在這里插入圖片描述

(1) Spark Yarn Client向YARN中提交應用程序,包括Application Master程序、啟動Application Master的命令、需要在Executor中運行的程序等;
(2) Resource manager收到請求后,在其中一個node manager中為應用程序分配一個container,要求它在container中啟動應用程序的Application Master,Application master初始化sparkContext以及創建DAG Scheduler和Task Scheduler。
(3) Application master根據sparkContext中的配置,向resource manager申請container,同時,Application master向Resource manager注冊,這樣用戶可通過Resource manager查看應用程序的運行狀態
(4) Resource manager 在集群中尋找符合條件的node manager,在node manager啟動container,要求container啟動executor,
(5) Executor啟動后向Application master注冊,并接收Application master分配的task
(6) 應用程序運行完成后,Application Master向Resource Manager申請注銷并關閉自己。

Driver on client如下圖所示:
在這里插入圖片描述

 (1) Spark Yarn Client向YARN的Resource Manager申請啟動Application Master。同時在SparkContent初始化中將創建DAG Scheduler和TASK Scheduler等
(2) ResourceManager收到請求后,在集群中選擇一個NodeManager,為該應用程序分配第一個Container,要求它在這個Container中啟動應用程序的ApplicationMaster,與YARN-Cluster區別的是在該ApplicationMaster不運行SparkContext,只與SparkContext進行聯系進行資源的分派
(3) Client中的SparkContext初始化完畢后,與Application Master建立通訊,向Resource Manager注冊,根據任務信息向Resource Manager申請資源(Container)
(4) 當application master申請到資源后,便與node manager通信,要求它啟動container
(5) Container啟動后向driver中的sparkContext注冊,并申請task
(6) 應用程序運行完成后,Client的SparkContext向ResourceManager申請注銷并關閉自己。

Yarn-client和Yarn cluster模式對比

在Yarn-client(Driver on client)中,Application Master僅僅從Yarn中申請資源給Executor,之后client會跟container通信進行作業的調度。如果client離集群距離較遠,建議不要采用此方式,不過此方式有利于交互式的作業。

在這里插入圖片描述

總結

  • 主要就是分為standalone模式和yarn模式
  • 每個模式又可以分為client or cluster模式

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/189319.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息