叢集模式概觀
本文檔簡要概述了 Spark 如何在叢集上執行,以便更容易理解所涉及的元件。閱讀 應用程式提交指南 以瞭解如何在叢集上啟動應用程式。
元件
Spark 應用程式在叢集上以獨立的程序集執行,由主程式 (稱為驅動程式) 中的 SparkContext
物件協調。
特別是,為了在叢集上執行,SparkContext 可以連接到多種類型的叢集管理員(Spark 自有的獨立叢集管理員、Mesos、YARN 或 Kubernetes),它們會跨應用程式配置資源。連線後,Spark 會在叢集的節點上取得執行器,這些執行器是執行運算並為您的應用程式儲存資料的處理程序。接著,它會將您的應用程式程式碼(由傳遞給 SparkContext 的 JAR 或 Python 檔案定義)傳送給執行器。最後,SparkContext 會將工作傳送給執行器執行。
關於此架構,有幾個有用的事項需要注意
- 每個應用程式都會取得自己的執行器處理程序,這些處理程序會在整個應用程式的執行期間保持運作,並以多執行緒執行工作。這有將應用程式彼此隔離的好處,無論是在排程方面(每個驅動程式排程自己的工作)或執行器方面(來自不同應用程式的任務在不同的 JVM 中執行)。然而,這也表示資料無法在不同的 Spark 應用程式(SparkContext 的執行個體)之間共用,除非將資料寫入外部儲存系統。
- Spark 與底層叢集管理員無關。只要它可以取得執行器處理程序,而且這些處理程序彼此溝通,即使在也支援其他應用程式的叢集管理員(例如 Mesos/YARN/Kubernetes)上執行它也相對容易。
- 驅動程式程式必須在整個生命週期中傾聽並接受來自其執行器的連線(例如,請參閱網路設定區段中的 spark.driver.port)。因此,驅動程式程式必須可以從工作節點透過網路存取。
- 由於驅動程式會在叢集上排程工作,因此應該將它執行在接近工作節點的位置,最好是在同一個區域網路中。如果您想要遠端傳送要求給叢集,最好是開啟一個 RPC 給驅動程式,並讓它從附近提交作業,而不是在遠離工作節點的地方執行驅動程式。
叢集管理員類型
系統目前支援多個叢集管理員
- 獨立 – Spark 附帶的一個簡單叢集管理員,讓設定叢集變得容易。
- Apache Mesos – 一個通用叢集管理員,也可以執行 Hadoop MapReduce 和服務應用程式。(已棄用)
- Hadoop YARN – Hadoop 3 中的資源管理員。
- Kubernetes – 一個用於自動化容器化應用程式部署、擴充和管理的開放原始碼系統。
提交應用程式
可以使用 spark-submit
腳本將應用程式提交到任何類型的叢集。 應用程式提交指南 說明瞭如何執行此操作。
監控
每個驅動程式程式都有 Web UI,通常在埠 4040 上,用於顯示有關正在執行的任務、執行器和儲存使用情況的資訊。只需在 Web 瀏覽器中前往 http://<driver-node>:4040
即可存取此 UI。 監控指南 也說明了其他監控選項。
工作排程
Spark 可以控制資源配置,包括跨應用程式(在叢集管理員層級)和在應用程式中(如果在同一個 SparkContext 上發生多個運算)。 工作排程概觀 會更詳細地說明這一點。
詞彙表
下表總結了您會看到的用於指稱叢集概念的術語
術語 | 意義 |
---|---|
應用程式 | 建置在 Spark 上的使用者程式。包含叢集上的驅動程式和執行器。 |
應用程式 jar | 包含使用者 Spark 應用程式的 jar。在某些情況下,使用者會想要建立一個「uber jar」,其中包含他們的應用程式及其相依性。不過,使用者的 jar 永不應包含 Hadoop 或 Spark 函式庫,這些會在執行時新增。 |
驅動程式 | 執行應用程式的 main() 函式並建立 SparkContext 的程序 |
叢集管理員 | 用於取得叢集上資源的外部服務(例如獨立管理員、Mesos、YARN、Kubernetes) |
部署模式 | 區分驅動程式程序執行的位置。在「叢集」模式中,架構會在叢集內啟動驅動程式。在「用戶端」模式中,提交者會在叢集外啟動驅動程式。 |
工作節點 | 叢集中可以執行應用程式程式碼的任何節點 |
執行器 | 在工作節點上為應用程式啟動的程序,用於執行任務並在記憶體或磁碟儲存空間中保留資料。每個應用程式都有自己的執行器。 |
任務 | 將傳送至一個執行器的作業單位 |
工作 | 由多個任務組成的平行運算,會在回應 Spark 動作(例如 save 、collect )時產生;您會在驅動程式日誌中看到此術語。 |
階段 | 每個工作會被分割成較小的任務組,稱為階段,這些任務組彼此相依(類似於 MapReduce 中的 map 和 reduce 階段);您會在驅動程式日誌中看到此術語。 |