Spark_3 Spark Core運行架構

Spark運行架構:

Spark運行架構包括集羣資源管理器(Cluster Manager)、運行作業任務的工作節點(Worker Node)、每個應用的任務控制節點(Driver)和每個工作節點上負責具體任務的執行進程(Executor)
與Hadoop MapReduce計算框架相比,Spark所採用的Executor有兩個優點:

  1. 是利用多線程來執行具體的任務(Hadoop MapReduce採用的是進程模型),減少任務的啓動開銷;
  2. 是Executor中有一個BlockManager存儲模塊,會將內存和磁盤共同作爲存儲設備,當需要多輪迭代計算時,可以將中間結果存儲到這個存儲模塊裏,下次需要時,就可以直接讀該存儲模塊裏的數據,而不需要讀寫到HDFS等文件系統裏,因而有效減少了IO開銷;或者在交互式查詢場景下,預先將表緩存到該存儲系統上,從而可以提高讀寫IO性能。

各部分介紹

  1. Application = a driver program + executors on the cluster
    應用程序:他包含一個driver和多個executor

  2. Application jar = a jar containing the user’s Spark application.

  3. driver program = The process running the main() function of the application and create SparkContext()
    驅動是運行應用程序的main()並創建SparkContext的進程;如果驅動器程序終
    止,那麼 Spark 應用也就結束了。主要負責:
    1)把用戶程序轉爲任務
    2)跟蹤 Executor 的運行狀況
    3)爲執行器節點調度任務
    4) UI 展示應用運行狀況

  4. cluster manager is an external service for acquiring resources on the cluster
    集羣管理器 通過cluster manager 去standalone/Mesos/Yarn/K8S/…上申請資源

  5. Deploy Mode 主要區別在於,Driver 程序的運行節點
    client:Diver run local Driver ;
    程序運行在客戶端, 適用於交互、調試,希望立即看到 app 的輸出
    cluster:Driver run Cluster;
    Driver 程序運行在由ResourceManager啓動的APPMaster,適用於生產環境

  6. Executor 相當於 container 容器
    A process launched for an application on a worker node,
    that runs tasks and keeps data in memory or disk storage across them.
    Each application has its own executors.
    一個 Executor 可以運行一個Application的多個task;
    Spark Executor 是一個工作進程,負責在 Spark 作業中運行任務,任務間相互獨立。
    Spark 應用啓動時, Executor 節點被同時啓動,並且始終伴隨着整個 Spark 應用的生命週期而存在。如果有 Executor 節點發生了故障或崩潰, Spark 應用也可以繼續執行,會將出錯節點上的任務調度到其他 Executor 節點上繼續運行。主要負責:
    1)負責運行組成 Spark 應用的任務,並將結果返回給驅動器進程;
    2)通過自身的塊管理器( Block Manager)爲用戶程序中要求緩存的 RDD 提供內存式存儲。 RDD 是直接緩存在 Executor 進程內的,因此任務可以在運行時充分利用緩存數據加速運算。

  7. Task
    A unit of work that will be sent to one executor
    1. Task 是最小的工作單元,跑在 Executor 上;
    2. 一個partition 就是一個 Task

  8. job
    1. 在Spark上,只要運行一個action 就是一個job
    2. job是一個並行的計算,包含多個task

  9. Stage
    1. shuffle會產生stage
    2. job stages tasks task是最小的運行單元
    3. stage相關是有依賴關係的,如果有依賴關係,stage執行是有先後順序
    4. stage名字是以最後一個算子命名的

Spark 運行注意點

  1. Each application gets its own executor processes,
    it means that data cannot be shared across different Spark applications
  2. Spark is agnostic to the underlying cluster manager.
    Spark是不關注底層是運行在哪裏的,只要獲取了對應的excutor processes,
    他們之間就可以通信。這種模式使得一個Cluster Manager 可以對應多個Application
  3. The driver program must listen for and accept incoming connections from its executors
    Driver Program 必須和 Executor 網絡是通的。一般是將他們放在一個內網裏
  4. driver should be run close to the worker nodes
    Driver要儘可能地靠近workernodes
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章