Spark文檔 - 集群模型預覽

組件

Spark應用程序運行在集群上的獨立進程中,由驅動程序中的SparkContext對象調度。

SparkContext可以連接到幾種集群管理器(例如Standalone,Mesos和YARN),這些集群管理器可以為應用程序分配資源。連接完成后,Spark從集群節(jié)點上申請executor,它負責執(zhí)行計算過程并存儲數(shù)據(jù)。接著Spark將應用程序代碼發(fā)送到各個executor中。最后,SparkContext將task發(fā)送給executor執(zhí)行。

image

有幾點需要注意:

  1. 每個應用程序都有自己的executor進程,這些executor會一直存在直到應用程序終結,并以多線程方式執(zhí)行task。這樣的好處是可以從調度層面(驅動程序調度任務)和executor層面(不同應用程序的task運行在不同的JVM中)上彼此隔離。同時也意味著數(shù)據(jù)無法跨應用程序共享,除非將數(shù)據(jù)寫入外部存儲系統(tǒng)。
  2. Spark對底層的集群管理器一無所知。只要它能夠申請executor進程,讓executor彼此間通信,就可以運行在各種集群管理器上。
  3. 驅動程序必須能夠監(jiān)聽并接收來自executor的連接請求。
  4. 因為驅動程序在集群上調度task,所以它最好離工作節(jié)點足夠近,最好是同一局域網(wǎng)。

術語

下面列出了Spark常用定義:

  • Application:用戶代碼,由驅動程序executor組成。
  • Application jar:包含Spark應用程序的jar包。
  • Driver Program:執(zhí)行應用程序main()函數(shù)的進程,負責創(chuàng)建SparkContext。
  • Cluster manager:申請資源的外部服務(例如Standalone,Mesos和YARN)。
  • Deploy mode:分為集群模式和本地模式。
  • Worker node:集群中可以執(zhí)行應用程序的節(jié)點。
  • Executor:在工作節(jié)點上負責執(zhí)行任務的進程。
  • Task:發(fā)送給executor的工作單元。
  • Job:由多個任務組成的并行計算,這些任務對應著Spark的action算子(例如savecollect)。可以在驅動日志中看到這個術語。
  • Stage:每個job會分成幾個彼此依賴的stage。
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容