1.1.3 Spark架構(gòu)?與單機(jī)分布式系統(tǒng)架構(gòu)對(duì)比

傳統(tǒng)的單機(jī)系統(tǒng)旭等,雖然可以多核共享內(nèi)存酌呆、磁盤(pán)等資源,但是當(dāng)計(jì)算與存儲(chǔ)能力無(wú)法滿(mǎn)足大規(guī)模數(shù)據(jù)處理的需要時(shí)搔耕,面對(duì)自身CPU與存儲(chǔ)無(wú)法擴(kuò)展的先天限制肪笋,單機(jī)系統(tǒng)就力不從心了。

1.分布式系統(tǒng)的架構(gòu)

所謂的分布式系統(tǒng)度迂,即為在網(wǎng)絡(luò)互連的多個(gè)計(jì)算單元執(zhí)行任務(wù)的軟硬件系統(tǒng),一般包括分布式操作系統(tǒng)猜揪、分布式數(shù)據(jù)庫(kù)系統(tǒng)惭墓、分布式應(yīng)用程序等。本書(shū)介紹的Spark分布式計(jì)算框架而姐,可以看作分布式軟件系統(tǒng)的組成部分腊凶,基于Spark,開(kāi)發(fā)者可以編寫(xiě)分布式計(jì)算程序拴念。

直觀來(lái)看钧萍,大規(guī)模分布式系統(tǒng)由許多計(jì)算單元構(gòu)成,每個(gè)計(jì)算單元之間松耦合政鼠。同時(shí)风瘦,每個(gè)計(jì)算單元都包含自己的CPU、內(nèi)存公般、總線(xiàn)及硬盤(pán)等私有計(jì)算資源万搔。這種分布式結(jié)構(gòu)的最大特點(diǎn)在于不共享資源胡桨,與此同時(shí),計(jì)算節(jié)點(diǎn)可以無(wú)限制擴(kuò)展瞬雹,計(jì)算能力和存儲(chǔ)能力也因而得到巨大增長(zhǎng)昧谊。但是由于分布式架構(gòu)在資源共享方面的先天缺陷,開(kāi)發(fā)者在書(shū)寫(xiě)和優(yōu)化程序時(shí)應(yīng)引起注意酗捌。分布式系統(tǒng)架構(gòu)如圖1-2所示呢诬。

[插圖]

圖1-2 分布式系統(tǒng)架構(gòu)圖

為了減少網(wǎng)絡(luò)I/O開(kāi)銷(xiāo),分布式計(jì)算的一個(gè)核心原則是數(shù)據(jù)應(yīng)該盡量做到本地計(jì)算胖缤。在計(jì)算過(guò)程中尚镰,每個(gè)計(jì)算單元之間需要傳輸信息,因此在信息傳輸較少時(shí)草姻,分布式系統(tǒng)可以利用資源無(wú)限擴(kuò)展的優(yōu)勢(shì)達(dá)到高效率钓猬,這也是分布式系統(tǒng)的優(yōu)勢(shì)。目前分布式系統(tǒng)在數(shù)據(jù)挖掘和決策支持等方面有著廣泛的應(yīng)用撩独。

Spark正是基于這種分布式并行架構(gòu)而產(chǎn)生敞曹,也可以利用分布式架構(gòu)的優(yōu)勢(shì),根據(jù)需要综膀,對(duì)計(jì)算能力和存儲(chǔ)能力進(jìn)行擴(kuò)展澳迫,以應(yīng)對(duì)處理海量數(shù)據(jù)帶來(lái)的挑戰(zhàn)。同時(shí)剧劝,Spark的快速及容錯(cuò)等特性橄登,讓數(shù)據(jù)處理分析顯得游刃有余。

  1. Spark架構(gòu)

Spark架構(gòu)采用了分布式計(jì)算中的Master-Slave模型讥此。集群中運(yùn)行Master進(jìn)程的節(jié)點(diǎn)稱(chēng)為Master拢锹,同樣,集群中含有Worker進(jìn)程的節(jié)點(diǎn)為Slave萄喳。Master負(fù)責(zé)控制整個(gè)集群的運(yùn)行卒稳;Worker節(jié)點(diǎn)相當(dāng)于分布式系統(tǒng)中的計(jì)算節(jié)點(diǎn),它接收Master節(jié)點(diǎn)指令并返回計(jì)算進(jìn)程到Master; Executor負(fù)責(zé)任務(wù)的執(zhí)行他巨;Client是用戶(hù)提交應(yīng)用的客戶(hù)端充坑;Driver負(fù)責(zé)協(xié)調(diào)提交后的分布式應(yīng)用。具體架構(gòu)如圖1-3所示染突。

[插圖]

圖1-3 Spark架構(gòu)

在Spark應(yīng)用的執(zhí)行過(guò)程中捻爷,Driver和Worker是相互對(duì)應(yīng)的。Driver是應(yīng)用邏輯執(zhí)行的起點(diǎn)份企,負(fù)責(zé)Task任務(wù)的分發(fā)和調(diào)度也榄;Worker負(fù)責(zé)管理計(jì)算節(jié)點(diǎn)并創(chuàng)建Executor來(lái)并行處理Task任務(wù)。Task執(zhí)行過(guò)程中所需的文件和包由Driver序列化后傳輸給對(duì)應(yīng)的Worker節(jié)點(diǎn)薪棒,Executor對(duì)相應(yīng)分區(qū)的任務(wù)進(jìn)行處理手蝎。

下面介紹Spark架構(gòu)中的組件榕莺。

1)Client:提交應(yīng)用的客戶(hù)端。

2)Driver:執(zhí)行Application中的main函數(shù)并創(chuàng)建SparkContext棵介。

3)ClusterManager:在YARN模式中為資源管理器钉鸯。在Standalone模式中為Master(主節(jié)點(diǎn)),控制整個(gè)集群邮辽。

4)Worker:從節(jié)點(diǎn)唠雕,負(fù)責(zé)控制計(jì)算節(jié)點(diǎn)。啟動(dòng)Executor或Driver吨述,在YARN模式中為NodeManager岩睁。

5)Executor:在計(jì)算節(jié)點(diǎn)上執(zhí)行任務(wù)的組件。

6)SparkContext:應(yīng)用的上下文揣云,控制應(yīng)用的生命周期捕儒。

7)RDD:彈性分布式數(shù)據(jù)集,Spark的基本計(jì)算單元邓夕,一組RDD可形成有向無(wú)環(huán)圖刘莹。

8)DAG Scheduler:根據(jù)應(yīng)用構(gòu)建基于Stage的DAG,并將Stage提交給Task Scheduler焚刚。

9)Task Scheduler:將Task分發(fā)給Executor執(zhí)行点弯。

10)SparkEnv:線(xiàn)程級(jí)別的上下文,存儲(chǔ)運(yùn)行時(shí)重要組件的應(yīng)用矿咕,具體如下:

①SparkConf:存儲(chǔ)配置信息抢肛。

②BroadcastManager:負(fù)責(zé)廣播變量的控制及元信息的存儲(chǔ)。

③BlockManager:負(fù)責(zé)Block的管理碳柱、創(chuàng)建和查找捡絮。

④MetricsSystem:監(jiān)控運(yùn)行時(shí)的性能指標(biāo)。

⑤MapOutputTracker:負(fù)責(zé)shuffle元信息的存儲(chǔ)莲镣。

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

1)用戶(hù)在Client提交了應(yīng)用锦援。

2)Master找到Worker,并啟動(dòng)Driver剥悟。

3)Driver向資源管理器(YARN模式)或者M(jìn)aster(Standalone模式)申請(qǐng)資源,并將應(yīng)用轉(zhuǎn)化為RDD Graph曼库。

4)DAG Scheduler將RDD Graph轉(zhuǎn)化為Stage的有向無(wú)環(huán)圖提交給Task Scheduler区岗。

5)Task Scheduler提交任務(wù)給Executor執(zhí)行。

  1. Spark運(yùn)行邏輯

下面舉例說(shuō)明Spark的運(yùn)行邏輯毁枯,如圖1-4所示慈缔,在Action算子被觸發(fā)之后,所有累積的算子會(huì)形成一個(gè)有向無(wú)環(huán)圖DAG种玛。Spark會(huì)根據(jù)RDD之間不同的依賴(lài)關(guān)系形成Stage藐鹤,每個(gè)Stage都包含一系列函數(shù)執(zhí)行流水線(xiàn)瓤檐。圖1-4中A、B娱节、C挠蛉、D、E肄满、F為不同的RDD, RDD內(nèi)的方框?yàn)镽DD的分區(qū)谴古。

[插圖]

圖1-4 Spark執(zhí)行RDD Graph

圖1-4中的運(yùn)行邏輯如下:

1)數(shù)據(jù)從HDFS輸入Spark。

2)RDD A稠歉、RDD C經(jīng)過(guò)flatMap與Map操作后掰担,分別轉(zhuǎn)換為RDD B和RDD D。

3)RDD D經(jīng)過(guò)reduceByKey操作轉(zhuǎn)換為RDD E怒炸。

4)RDD B與RDD E進(jìn)行join操作轉(zhuǎn)換為RDD F带饱。

5)RDD F通過(guò)函數(shù)saveAsSequenceFile輸出保存到HDFS中。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末阅羹,一起剝皮案震驚了整個(gè)濱河市勺疼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌灯蝴,老刑警劉巖恢口,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異穷躁,居然都是意外死亡耕肩,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)问潭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)猿诸,“玉大人,你說(shuō)我怎么就攤上這事狡忙∈崴洌” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵灾茁,是天一觀的道長(zhǎng)窜觉。 經(jīng)常有香客問(wèn)我,道長(zhǎng)北专,這世上最難降的妖魔是什么禀挫? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮拓颓,結(jié)果婚禮上语婴,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好砰左,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布匿醒。 她就那樣靜靜地躺著,像睡著了一般缠导。 火紅的嫁衣襯著肌膚如雪廉羔。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,604評(píng)論 1 305
  • 那天酬核,我揣著相機(jī)與錄音蜜另,去河邊找鬼。 笑死嫡意,一個(gè)胖子當(dāng)著我的面吹牛举瑰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蔬螟,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼此迅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了旧巾?” 一聲冷哼從身側(cè)響起耸序,我...
    開(kāi)封第一講書(shū)人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鲁猩,沒(méi)想到半個(gè)月后坎怪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡廓握,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年搅窿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隙券。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡男应,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出娱仔,到底是詐尸還是另有隱情沐飘,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布牲迫,位于F島的核電站耐朴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏盹憎。R本人自食惡果不足惜隔箍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脚乡。 院中可真熱鬧,春花似錦、人聲如沸奶稠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)锌订。三九已至竹握,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辆飘,已是汗流浹背啦辐。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蜈项,地道東北人芹关。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像紧卒,于是被迫代替她去往敵國(guó)和親侥衬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容