spark之12:集群模式概述
spark之12:集群模式概述
@(SPARK)[spark, 大數據]
英文原文地址:https://spark.apache.org/docs/latest/cluster-overview.html
- spark之12集群模式概述
- 組件
- 集群管理器的類型
- 提交應用
- 監控
- 作業調度
- 術語
- Application
- Application jar
- Driver program
- Cluster manager
- Deploy mode
- Worker node
- Executor
- Task
- Job
- Stage
集群模式概述
本文檔簡單介紹了spark如何在集群中運行,它使得你更容易理解spark相關的組件。關于如何在一個集群中運行spark,請參考application submission guide 。
組件
spark應用以多個進程的形式運行于一個集群中,它使用你所定義的主程序(或者叫驅動程序)中的SparkContext這個對象來協調。當運行于集群時,SparkContext可以運行于多種的集群管理器中(包括spark自帶的standalone集群,以及mesos和yarn),它們都被用于在不同的應用間分配資源。當spark應用連接到了集群管理器后,(1)首先它將從集群中的節點獲取執行器(executor),這些執行器就是用來運行計算或者存儲數據的進程(2)然后,spark會將你的應用代碼(jar包或者python文件)發送給執行器(3)最后,SparkContext將具體的任務(task)發送給執行器運行。
關于上面的架構,有幾點需要注意的:
1、每一個應用都擁有它自己獨立的執行器進程(executor processes),這些進程在應用的整個生命周期中保持運行,且一般會同時運行多個線程。這有利于不同應用的分離,但同時,它也意味著數據不能在不同的spark應用(或者說不同的SparkContext)中共享,除非你先將數據輸出到外部存儲中。
2、spark獨立于底層的cluster manager,只要保證它能夠獲取到executor processes,并且這些進程之間能互相通信。這就很容易將應用運行于不同的cluster manager,如mesos/yarn等,甚至這些cluster manager還能運行其它類型的應用。
3、驅動程序必須在整個生命周期中監聽并接受執行器的連接 (e.g., see spark.driver.port and spark.fileserver.port in the network config section)。因此驅動程序對于工作節點來說,必須可以通過網絡訪問的。
集群管理器的類型
目前spark支持以下幾種集群管理器:
此外,spark的EC2 launch scripts 使得你可以很方便的在亞馬遜EC2上運行獨立集群。
提交應用
可以通過spark-submit向任意類型的集群提交應用。 application submission guide 詳細介紹了如何向spark集群提交應用。
監控
每一個驅動程序都有一個web UI(一般在4040端口),它展示了應用的信息,包括運行的任務,執行器以及存儲的使用情況等。在一個瀏覽器中打開 http://:4040 就可訪問到這個UI,monitoring guide詳細介紹了其它監控項。
作業調度
spark在不同應用間以及應用內部提供資源分配的控制, job scheduling overview詳細介紹了這些內容。
術語
下面總結了你在使用spark中需要用到的術語:
Application
用戶創建的spark應用,它由一個驅動程序和多個執行器組成。
Application jar
jar包包括了用戶的spark應用,有時候,用戶會創建一個超級包,它包括了這個包的所有依賴,但是不管如何,用戶Jar包不應該包括hadoop和spark的library,它們會在運行時自動加載。
Driver program
運行應用main函數的進程,同時它也用于創建SparkContext。
Cluster manager
一個用于獲取集群資源的外部服務,如 ( standalone manager, Mesos, YARN)
Deploy mode
用于區分在哪里運行驅動程序,在cluster模式中,會在集群內運行驅動程序,而在client模式中,在集群外運行驅動程序。
Worker node
集群中可以運行應用代碼的節點
Executor
某個應用運行于worker node的進程,它運行多個任務(task),并且在內存或者磁盤中保存數據。每一個應用都有自己的一個或者多個executors
Task
在executor中運行的工作單元
Job
由多個task組成的并行計算,你會在driver的log中看到這個詞
Stage
每一個job會被切分為一個更小的任務集合,這些任務集群被稱為stage,它們之間互相依賴(如MR中的map和reduce),你會在driver的log中看到這個詞。一般而言,以寬依賴作為依據分割stage。
總結
以上是生活随笔為你收集整理的spark之12:集群模式概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spark之13:提交应用的方法(spa
- 下一篇: spark之4:编程指南