Spark概述
Spark 可以在多種不同的運行模式下執行,每種模式都有其自身的特點和適用場景。
部署Spark集群大體上分為兩種模式:單機模式與集群模式。大多數分布式框架都支持單機模式,方便開發者調試框架的運行環境。但是在生產環境中,并不會使用單機模式。
Spark目前支持的部署模式。
-
(1)
Local
模式:在本地部署單個Spark服務 -
(2)
Standalone
模式:Spark自帶的任務調度模式。(國內不常用) -
(3)
YARN
模式:Spark使用Hadoop的YARN組件進行資源與任務調度。(國內最常用)
-
(4)
Mesos
模式:Spark使用Mesos平臺進行資源與任務的調度。(國內很少用)
1.Local 模式
- 在本地模式下,Spark 將在單個 JVM 進程中運行,通常用于開發、測試和小規模數據處理。
- 在本地模式下,Spark 不需要啟動集群,而是直接在本地計算機上執行任務。
2.YARN 模式(常用)
-
YARN(Yet Another Resource Negotiator)
是 Apache Hadoop 的資源管理器,可以用來在 Hadoop 集群上管理資源和調度任務。 -
Spark 可以作為 YARN 上的一個應用程序運行,在 YARN 模式下,Spark 將利用 YARN 來管理集群資源和調度任務。
在 Spark 中,YARN 模式下有兩種常見的運行模式:yarn-client 和 yarn-cluster。它們的主要區別在于 Driver 程序的運行節點。
(1)yarn-client
模式
- 在
yarn-client
模式下,Driver 程序運行在提交 Spark 應用程序的客戶端機器上。 - 這意味著 Driver 程序直接與 YARN ResourceManager 通信,并向其請求資源并啟動 ApplicationMaster。
- 一旦 ApplicationMaster 啟動成功,它會協調在 YARN 集群中啟動的 Executor 進程,并與它們通信以執行任務。
yarn-client 模式的優點是方便調試和監控,因為 Driver 程序直接運行在客戶端機器上,可以直接查看其日志并與其交互。
然而,由于 Driver 程序運行在客戶端機器上,它可能會成為性能瓶頸,尤其是當客戶端機器的資源有限時。
(2)yarn-cluster
模式:
- 在
yarn-cluster
模式下,Driver 程序運行在 YARN 集群中作為一個獨立的應用程序。 - 當用戶提交 Spark 應用程序時,Driver 程序會作為一個 YARN ApplicationMaster 啟動在集群中,并由 YARN ResourceManager 分配資源。
- 一旦 ApplicationMaster 啟動成功,它會協調在集群中啟動的 Executor 進程,并與它們通信以執行任務。
yarn-cluster 模式的優點是可以更好地利用集群資源,并且 Driver 程序不會成為單點故障。
因為 Driver 程序運行在集群中,所以即使客戶端機器宕機也不會影響 Spark 應用程序的執行。
但是,調試和監控會稍微復雜一些,因為 Driver 程序運行在集群中,需要查看集群中的日志和監控信息。
yarn-client 模式適用于調試和監控要求較低、資源較為充足的情況,而 yarn-cluster 模式適用于對資源利用率和容錯性要求較高的情況。
3.Standalone 模式
- Spark 的獨立模式是一種簡單的集群管理器,可以用來在獨立的 Spark 集群上運行應用程序。在這種模式下,用戶需要手動啟動和管理 Spark 集群中的各個組件,如主節點和工作節點。
- Standalone模式是Spark自帶的資源調度引擎,構建一個由Master + Worker構成的Spark集群,Spark運行在集群中。
- 這個要和Hadoop中的Standalone區別開來。這里的Standalone是指只用Spark來搭建一個集群,不需要借助Hadoop的Yarn和Mesos等其他框架。
4.Apache Mesos 模式:
- Apache Mesos 是一個通用的集群管理器,可以用來管理多種類型的工作負載,包括 Spark 應用程序。
- 在 Mesos 模式下,Spark 可以作為 Mesos 上的一個框架運行,利用 Mesos 提供的資源管理和調度功能來運行任務。
- Spark客戶端直接連接Mesos;不需要額外構建Spark集群。國內應用比較少,更多的是運用Yarn調度。