Spark面試知識點

一.Spark架構(gòu)

1.Spark架構(gòu)中的組件

(1)Client:提交應(yīng)用的客戶端
(2)Driver:執(zhí)行Application中的main函數(shù)并創(chuàng)建SparkContext
(3)ClusterManager:在YARN模式中為資源管理器忆嗜。在Standalone模式中為Master(主節(jié)點)昧旨,控制整個集群囚聚。
(4)worker:從節(jié)點,負責(zé)控制計算節(jié)點弛说。啟動Executor或Driver,在YARN模式中為NodeManager
(5)Executor:在計算節(jié)點上執(zhí)行任務(wù)的組件
(6)SparkContext:應(yīng)用的上下文肠虽,控制應(yīng)用的生命周期
(7)RDD:彈性分布式數(shù)據(jù)集醉者,spark的基本計算單元,一組RDD可形成有向無環(huán)圖窥岩。
(8)DAG Scheduler:根據(jù)應(yīng)用構(gòu)建基于stage的DAG舶赔,并將Stage提交給Task Scheduler
(9)Task ScheduIer:將Task分發(fā)給Executor執(zhí)行
(10)SparkEnv:線程級別的上下文,存儲運行時重要組件的應(yīng)用谦秧,具體如下:
* SparkConf:存儲配置信息竟纳。
* BroadcastManager:負責(zé)廣播變量的控制及元信息的存儲
* BlockManager:負責(zé)Block的管理、創(chuàng)建和查找
* MetricsSystem:監(jiān)控運行時的性能指標疚鲤。
* MapOutputTracker:負責(zé)shuffle元信息的存儲

2.spark架構(gòu)揭示了spark的具體流程如下:

(1)用戶在Client提交了應(yīng)用
(2)Master找到Worker锥累,并啟動Driver
(3)Driver向資源管理器(YARN模式)或者Master(standalone模式)申請資源,并將應(yīng)用轉(zhuǎn)化為RDD Graph
(4)DAG Scheduler將RDD Graph轉(zhuǎn)化為Stage的有向無環(huán)圖提交給Task Scheduler
(5)Task ScheduIer提交任務(wù)給Executor執(zhí)行

二.RDD

1.Spark彈性數(shù)據(jù)集RDD有兩種創(chuàng)建方式:

(1)從文件系統(tǒng)輸入(如HDFS)
(2)從已存在的RDD轉(zhuǎn)換得到新的RDD

2.RDD的兩種操作算子

(1)Transformation(變換)
* Transformation類型的算子不是立刻執(zhí)行集歇,而是延遲執(zhí)行桶略。也就是說從一個RDD變換為另一個RDD的操作需要等到Action操作觸發(fā)時,才會真正執(zhí)行诲宇。
(2)Action(行動)
* Action類型的算子會觸發(fā)spark提交作業(yè)际歼,并將數(shù)據(jù)輸出到spark系統(tǒng)。

3.RDD依賴

(1)窄依賴:
如果RDD的每個分區(qū)最多只能被一個Child RDD的一個分區(qū)使用姑蓝,則稱之為窄依賴(narrowdependency)鹅心;
(2)寬依賴:
若多個Child RDD分區(qū)都可以依賴,則稱之為寬依賴(widedependency)纺荧。

4.RDD特性總結(jié)

(1)RDD是不變的數(shù)據(jù)結(jié)構(gòu)存儲
(2)RDD將數(shù)據(jù)存儲在內(nèi)存中旭愧,從而提供了低延遲性
(3)RDD是支持跨集群的分布式數(shù)據(jù)結(jié)構(gòu)
(4)RDD可以根據(jù)記錄的Key對結(jié)構(gòu)分區(qū)
(5)RDD提供了粗粒度的操作颅筋,并且都支持分區(qū)

5.算子分類

根據(jù)所處理的數(shù)據(jù)類型及處理階段的不同,算子大致可以分為如下三類:
(1)處理value數(shù)據(jù)類型的Transformation算子输枯;這種變換并不觸發(fā)提交作業(yè)议泵,處理的數(shù)據(jù)項是value型的數(shù)據(jù)
(2)處理Key-Value數(shù)據(jù)類型的Transfromation算子;這種變換并不觸發(fā)提交作業(yè)桃熄,處理的數(shù)據(jù)項是Key-Value型的數(shù)據(jù)對先口。
(3)Action算子:這類算子觸發(fā)SparkContext提交作業(yè)

三.Spark機制原理

1.Spark運行模式

(1)Spark運行模式分為:Local,Standalone,Yarn,Mesos
(2)根據(jù)Spark Application的Driver Program是否在集群中運行,Spark應(yīng)用的運行方式又可以分為Cluster模式和Client模式

2.Spark應(yīng)用的基本概念

(1)SparkContext:spark應(yīng)用程序的入口瞳收,負責(zé)調(diào)度各個運算資源池充,協(xié)調(diào)各個Worker Node上的Executor
(2)DriverProgram:運行Application的main()函數(shù)并創(chuàng)建SparkContext
(3)RDD:RDD是Spark的核心數(shù)據(jù)結(jié)構(gòu),可以通過一系列算子進行操作缎讼。當(dāng)RDD遇到Action算子時收夸,將之前的所有算子形成一個有向無環(huán)圖(DAG)。再在Spark中轉(zhuǎn)化為Job血崭,提交到集群執(zhí)行卧惜。一個App中可以包含多個Job。
(4)Worker Node:集群中任何可以運行Application代碼的節(jié)點夹纫,運行一個或多個Executor進程
(5)Executor:為Application運行在Worker Node上的一個進程咽瓷,該進程負責(zé)運行Task,并且負責(zé)將數(shù)據(jù)存在內(nèi)存或者磁盤上舰讹。每個Application都會申請各自的Executor來處理任務(wù)茅姜。

3.Spark應(yīng)用(Application)執(zhí)行過程中各個組件的概念:

(1)Task(任務(wù)):RDD中的一個分區(qū)對應(yīng)一個Task,Task是單個分區(qū)上最小的處理流程單元月匣。
(2)TaskSet(任務(wù)集):一組關(guān)聯(lián)的钻洒,但相互之間沒有Shuffle依賴關(guān)系的Task集合。
(3)Stage(調(diào)度階段):一個TaskSet對應(yīng)的調(diào)度階段锄开。每個Job會根據(jù)RDD的寬依賴關(guān)系被切分很多stage素标,每個stage都包含一個TaskSet。
(4)Job(作業(yè)):由Action算子觸發(fā)生成的由一個或多個stage組成的計算作業(yè)
(5)Application:用戶編寫的Spark的應(yīng)用程序萍悴,由一個或多個Job組成头遭。提交到Spark之后,Spark為Application分配資源癣诱,將程序轉(zhuǎn)換并執(zhí)行计维。
(6)DAGScheduler:根據(jù)Job構(gòu)建基于Stage的DAG,并提交Stage給TaskScheduler撕予。
(7)TaskScheduler:將Taskset提交給Worker Node集群運行并返回結(jié)果鲫惶。
Spark基本概念之間的關(guān)系

4.Spark應(yīng)用執(zhí)行機制概要

Spark執(zhí)行流程

四.Spark內(nèi)核

1.Spark Core內(nèi)模塊概述

(1)Api:Java、Python及R語言API的實現(xiàn)
(2)BroadCast:包含廣播變量的實現(xiàn)
(3)Deploy:spark部署與啟動運行的實現(xiàn)
(4)Executor:worker節(jié)點負責(zé)計算部分的實現(xiàn)
(5)Metrics:運行時狀態(tài)監(jiān)控的實現(xiàn)
(6)Network:集群通信實現(xiàn)
(7)Partial:近似評估代碼嗅蔬。
(8)Serializer:序列化模塊
(9)Storage:存儲模塊
(10)UI:監(jiān)控界面的代碼邏輯實現(xiàn)剑按。
Spark代碼布局

2.Spark Core外模塊概述

(1)Begal:Pregel是Google的圖計算框架疾就,Begal是基于Spark的輕量級Pregel實現(xiàn)澜术。
(2)MLlib:機器學(xué)習(xí)算法庫艺蝴。
(3)SQL:SQL on Spark,提供大數(shù)據(jù)上的查詢功能。
(4)GraphX:圖計算模塊的實現(xiàn)
(5)Streaming:流處理框架Spark Streaming的實現(xiàn)
(6)YARN:Spark on YARN的部分實現(xiàn)

五.Spark SQL

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸟废,一起剝皮案震驚了整個濱河市猜敢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盒延,老刑警劉巖缩擂,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異添寺,居然都是意外死亡胯盯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門计露,熙熙樓的掌柜王于貴愁眉苦臉地迎上來博脑,“玉大人,你說我怎么就攤上這事票罐〔嫒ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵该押,是天一觀的道長疗杉。 經(jīng)常有香客問我,道長蚕礼,這世上最難降的妖魔是什么烟具? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮奠蹬,結(jié)果婚禮上净赴,老公的妹妹穿的比我還像新娘。我一直安慰自己罩润,他們只是感情好玖翅,可當(dāng)我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著割以,像睡著了一般金度。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上严沥,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天猜极,我揣著相機與錄音,去河邊找鬼消玄。 笑死跟伏,一個胖子當(dāng)著我的面吹牛丢胚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播受扳,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼携龟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了勘高?” 一聲冷哼從身側(cè)響起峡蟋,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎华望,沒想到半個月后蕊蝗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡赖舟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年蓬戚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宾抓。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡子漩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出洞慎,到底是詐尸還是另有隱情痛单,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布劲腿,位于F島的核電站旭绒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏焦人。R本人自食惡果不足惜挥吵,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望花椭。 院中可真熱鬧忽匈,春花似錦、人聲如沸矿辽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽袋倔。三九已至雕蔽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宾娜,已是汗流浹背批狐。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留前塔,地道東北人嚣艇。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓承冰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親食零。 傳聞我的和親對象是個殘疾皇子困乒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,665評論 2 354