集群模式概述
。元件
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集群提交應用。
監控
每乙個驅動程式都有乙個web ui(一般在4040埠),它展示了應用的資訊,包括執行的任務,執行器以及儲存的使用情況等。在乙個瀏覽器中開啟 http://:4040就可訪問到這個ui,monitoring guide
詳細介紹了其它監控項。
作業排程
spark在不同應用間已經應用內部提供資源分配的控制, job scheduling overview
詳細介紹了這些內容。
術語下面總結了你在使用spark中需要用到的術語:
term
meaning
使用者建立的spark應用,它由乙個驅動程式和多個執行器組成。
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中看到這個詞
spark集群模式
第一種 val conf sparkconf new sparkconf conf.setmaster spark spark1 7077 如果這樣寫的話 直接就在集群上面執行了 idea種 使用spark submit不用指定 master了就 spark submit class day06.s...
spark記憶體概述
spark程序是以jvm程序執行的,可以通過 xmx和 xms配置堆疊大小,它是如何使用堆疊呢?下面是spark記憶體分配圖。spark預設jvm堆為512mb,為了避免oom錯誤,只使用90 通過spark.storage.safetyfraction來設定。spark通過記憶體來儲存需要處理的資...
Spark 概述 安裝
spark core 實現了 spark 的基本功能,包含任務排程 記憶體管理 錯誤恢復 與儲存 系統互動等模組。spark core 中還包含了對彈性分布式資料集 resilient distributed dataset,簡稱 rdd 的 api 定義。spark sql 是 spark 用來操...