spark工作原理和介紹

https://zhuanlan.zhihu.com/p/34436165
https://zhuanlan.zhihu.com/p/70424613

1.介紹

Spark 是專為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎。是Hadoop MapReduce的通用并行框架,Spark,擁有Hadoop MapReduce所具有的優(yōu)點(diǎn);但不同于MapReduce的是——Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫(xiě)HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的MapReduce的算法。

2.Spark 系統(tǒng)架構(gòu)

image.png

3.Spark基本概念

1.RDD:是彈性分布式數(shù)據(jù)集(Resilient Distributed Dataset)的簡(jiǎn)稱,是分布式內(nèi)存的一個(gè)抽象概念,提供了一種高度受限的共享內(nèi)存模型。
2.DAG:是Directed Acyclic Graph(有向無(wú)環(huán)圖)的簡(jiǎn)稱,反映RDD之間的依賴關(guān)系。如果一個(gè)有向圖無(wú)法從某個(gè)頂點(diǎn)出發(fā)經(jīng)過(guò)若干條邊回到該點(diǎn),則這個(gè)圖是一個(gè)有向無(wú)環(huán)圖(DAG圖)。
3.Driver Program:控制程序,負(fù)責(zé)為Application構(gòu)建DAG圖。
4.Cluster Manager:集群資源管理中心,負(fù)責(zé)分配計(jì)算資源。
5.Worker Node:工作節(jié)點(diǎn),負(fù)責(zé)完成具體計(jì)算。
6.Executor:是運(yùn)行在工作節(jié)點(diǎn)(Worker Node)上的一個(gè)進(jìn)程,負(fù)責(zé)運(yùn)行Task,并為應(yīng)用程序存儲(chǔ)數(shù)據(jù)。
7.Application:用戶編寫(xiě)的Spark應(yīng)用程序,一個(gè)Application包含多個(gè)Job。
8.Job:作業(yè),一個(gè)Job包含多個(gè)RDD及作用于相應(yīng)RDD上的各種操作。
9.Stage:階段,是作業(yè)的基本調(diào)度單位,一個(gè)作業(yè)會(huì)分為多組任務(wù),每組任務(wù)被稱為“階段”。
10.Task:任務(wù),運(yùn)行在Executor上的工作單元,是Executor中的一個(gè)線程。

總結(jié):

  • Cluster Manager在standalone模式中即為Master主節(jié)點(diǎn),控制整個(gè)集群,監(jiān)控worker。
  • Worker Node從節(jié)點(diǎn),負(fù)責(zé)控制計(jì)算節(jié)點(diǎn),啟動(dòng)Executor或者Driver
  • Executor是在WorkerNode上起的一個(gè)進(jìn)程
  • Task,負(fù)責(zé)內(nèi)存和磁盤(pán)的使用。
  • Driver是統(tǒng)管Task的產(chǎn)生與發(fā)送給Executor的,運(yùn)行Application 的main()函數(shù)
  • Application由多個(gè)Job組成,Job由多個(gè)Stage組成,Stage由多個(gè)Task組成。Stage是作業(yè)調(diào)度的基本單位。

4.Spark 運(yùn)行原理

image.png

image.png

1.構(gòu)建Spark Application的運(yùn)行環(huán)境,啟動(dòng)SparkContext
2.SparkContext向資源管理器(可以是Standalone,Mesos,Yarn)申請(qǐng)運(yùn)行Executor資源,并啟動(dòng)StandaloneExecutorbackend,
3.Executor向SparkContext申請(qǐng)Task
4.SparkContext將應(yīng)用程序分發(fā)給Executor
5.SparkContext構(gòu)建成DAG圖,將DAG圖分解成Stage、將Taskset發(fā)送給Task Scheduler,最后由Task Scheduler將Task發(fā)送給Executor運(yùn)行
6.Task在Executor上運(yùn)行,運(yùn)行完釋放所有資源

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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