Spark 集羣概述

本篇博客簡述 Spark 集羣相關的概念。html

概述

Spark 的"集羣"不是提供運算服務的,而是一種資源分配的調度器。
執行任務的 Spark 進程做爲客戶端向"集羣"申請資源(運算節點), "集羣"分配資源之後,
這個 Spark 進程會分解一些計算工做,並把他們放到這些申請來的資源中運行。node

提交給 Spark 執行的工做稱作 application(應用),對應的主程序稱做:driver program
driver program 經過一個叫作 SparkContext 的對象來協調 Spark 集羣中不一樣進程的任務。數據庫

具體來講:apache

  1. driver program 向"集羣"申請到得運算節點稱做 worker node;app

  2. 一旦申請到 worker node,driver program 會鏈接這些 worker node, 並在 worker node 上建立(acquire)執行計算的進程(executor);分佈式

  3. 接下來 driver program 將計算須要的代碼和數據發給 executor函數

  4. 最後 SparkContext 將分解出來的 task(任務) 發送給各個 executor 去執行。oop

過程以下圖所示:ui

spark cluster overview

這裏有一些注意點:spa

  1. 每一個 application 都得到本身獨立的 executor 進程,這個executor進程利用多個線程運行多個 task。這樣能夠保證不一樣application的隔離性,不管是調度端(driver program 分解各自的 task),仍是執行端(每一個executor只跑來自同一個 applicationtask)。不過這也意味着,不一樣的 application 之間除非藉助外部存儲系統(例如數據庫),不然是不能夠共享數據的。

  2. Spark 是不須要知道運行在什麼樣的 "集羣" 上的。Spark 只須要能夠建立進程,而且和這些進程通訊,不管是運行在什麼樣的集羣上(eg. Mesos/YARN)均可以。

  3. driver program 必須在整個生命週期中能夠從不一樣的 executor 接受鏈接。所以,driver program對於 executor 來講,
    必須是網路可及的。

  4. 由於由driver program分解 task,它必須和 worker 節點很接近,最好在同一個局域網。
    若是你不能作到這一點(例如從遠程提交 application),最好開一個 RPC,利用靠近 Spark 集羣的機器來運行 driver program

Spark 集羣的類型

實現集羣的程序稱爲:集羣管理器。目前有三種集羣管理器

  • Standalone - 這個集羣管理器打包在 spark 的程序裏,是最簡單的集羣管理器。

  • Apache Mesos - 一個很是成熟的分佈式操做系統,能夠用來運行除 Spark 之外的不少系統。

  • Hadoop YARN - Hadoop 的 資源管理器。

術語表

術語 解釋
Application 在 Spark 上運行的工做, 由 driver programexecutors 組成
Application jar 包含 Application 代碼的 jar 包。在一些應用場景中,jar 須要包含依賴的庫。不過永遠不要包含 Hadoop 和 Spark 的庫
Driver program 運行 Application 的main() 函數的進程,而且 SparkContext 對象在此進程中建立
Cluster manager(集羣管理器) 實現集羣的資源調度分配的外部程序
Deploy mode 用於區分 driver program 進程在哪裏運行。cluster 模式下,driver 在集羣中的節點上運行。 client 模式下,driver 在集羣之外的地方運行
Worker node 集羣中運行程序的節點
Executor worker node 中爲 各 Application 建立的進程。它會執行 Application 相關的 task,將它們的數據保存在內存中或磁盤上。
Task 執行具體計算的單元,會被髮送給特定的 executor 執行
Job 一個由多個 task 組成的並行計算集,它們生成 Spark 動做(eg. save, collect) 的結果。這個術語會出如今 driver 的日誌中
Stage 每一個 job 會被分解成更小的 task 的集合,這些集合被稱做 stage。它們彼此依賴(就像 MapReduce 中的 map 和 reduce 兩個 stage);這個術語會出如今 driver 的日誌中
相關文章
相關標籤/搜索