Spark入門學(xué)習(xí)

注:這篇博客講的是自己對(duì)Spark的初步認(rèn)識(shí)和學(xué)習(xí),可能會(huì)有錯(cuò)誤橄教。參考資料是廈門大學(xué)的Spark學(xué)習(xí)基礎(chǔ)橄维,對(duì)應(yīng)網(wǎng)址上有關(guān)于Spark運(yùn)行機(jī)制的6個(gè)視頻的講解(3.3節(jié))枣接,更加通俗易懂证舟。

??首先需要了解Spark中的一些核心概念:

  • RDD硕旗,最核心的數(shù)據(jù)抽象,全稱是彈性分布式數(shù)據(jù)女责,是高度受限(只讀)的共享內(nèi)存模型
  • DAG漆枚,反映了RDD之間的依賴關(guān)系
  • Executor,在工作節(jié)點(diǎn)(就是單個(gè)機(jī)器)上的一個(gè)進(jìn)程抵知,會(huì)派生很多線程來(lái)執(zhí)行任務(wù)
  • application墙基,就是Spark程序
  • 任務(wù),在Executor上運(yùn)行的工作單元
  • 階段辛藻,作業(yè)job的基本調(diào)度單元

??然后了解下Spark的架構(gòu):
Spark大概可以分為3個(gè)部分碘橘,第一個(gè)是任務(wù)控制節(jié)點(diǎn)互订,其實(shí)就是程序中的SparkContext(返回一個(gè)RDD)吱肌;第二個(gè)是集群資源管理器,一般是用yarn來(lái)進(jìn)行集群的管理仰禽;最后一個(gè)就是集群上的工作節(jié)點(diǎn)work node氮墨,每個(gè)work node上都包含了一個(gè)Executor用來(lái)執(zhí)行部分任務(wù)。最后多個(gè)work node的結(jié)果匯總就可以寫到HDFS或者HBase上吐葵。
相應(yīng)的规揪,Spark運(yùn)行流程大概就是,sparkContext會(huì)像資源管理器申請(qǐng)資源温峭,而資源管理器(一般是yarn)會(huì)對(duì)集群進(jìn)行調(diào)度猛铅,并將部分work node分配給申請(qǐng)的SparkContext(資源分配的原則是計(jì)算向數(shù)據(jù)靠攏)。然后我們的SparkContext會(huì)被分成多個(gè)作業(yè)job(分而治之嘛)凤藏,同時(shí)奸忽,SparkContext也會(huì)輸出一個(gè)根據(jù)RDD依賴關(guān)系生成的DAG,這個(gè)DAG通過(guò)DAG Scheduler將job分為多個(gè)階段揖庄,每個(gè)階段會(huì)在相應(yīng)work node上執(zhí)行任務(wù)栗菜。最后將所有work node上的工作進(jìn)行匯總得到最終結(jié)果。

??接著了解下RDD的執(zhí)行過(guò)程:
其實(shí)Spark運(yùn)行流程就是RDD執(zhí)行過(guò)程蹄梢,HDFS上的數(shù)據(jù)讀到內(nèi)存中生成RDD疙筹,RDD經(jīng)過(guò)多次轉(zhuǎn)換(RDD->RDD),然后經(jīng)過(guò)動(dòng)作(RDD->value)并輸出結(jié)果。這里我們需要記住的是而咆,整個(gè)運(yùn)行過(guò)程遵循著惰性調(diào)用機(jī)制霍比,直白點(diǎn)說(shuō)就是轉(zhuǎn)換過(guò)程延遲執(zhí)行,機(jī)器只是記住了要如何對(duì)RDD進(jìn)行轉(zhuǎn)換暴备,但不會(huì)真正去執(zhí)行這個(gè)轉(zhuǎn)換桂塞,只有當(dāng)遇到動(dòng)作時(shí)RDD才會(huì)開始執(zhí)行所有流程,包括前面的轉(zhuǎn)換和當(dāng)前的動(dòng)作馍驯,最后得到結(jié)果阁危。也就是說(shuō),轉(zhuǎn)換只記錄數(shù)據(jù)變換軌跡汰瘫,機(jī)器并不會(huì)進(jìn)行真正的計(jì)算狂打,而動(dòng)作則會(huì)觸發(fā)從頭到尾的計(jì)算。
Spark對(duì)原Hadoop的一大優(yōu)勢(shì)就是RDD的優(yōu)化縮短了程序運(yùn)行時(shí)間混弥,這個(gè)優(yōu)化體現(xiàn)在流水線處理和中間結(jié)果不寫入磁盤(利用RDD的.cache()將數(shù)據(jù)存在內(nèi)存中)趴乡。而Spark的另外一個(gè)優(yōu)勢(shì)就是高效容錯(cuò)性,傳統(tǒng)保證容錯(cuò)率的方式是數(shù)據(jù)備份或者日志蝗拿,但是在大數(shù)據(jù)場(chǎng)景下開銷太大不合適晾捏,而Spark根據(jù)DAG得到的計(jì)算過(guò)程中數(shù)據(jù)的血緣關(guān)系可以很方便的找回丟失數(shù)據(jù)。
流水線處理就是指讓work node自己獨(dú)立完成盡可能多的工作哀托,而不必要等其他work node工作完一起join一下然后接著后面的處理惦辛,這樣就可以避免工作快的work node去等待工作慢的work node,節(jié)約了很多的等待時(shí)間仓手。為了盡可能做到這一點(diǎn)胖齐,就需要將每個(gè)job分為多個(gè)階段。如果將RDD任務(wù)中的轉(zhuǎn)換和動(dòng)作看做一個(gè)個(gè)節(jié)點(diǎn)嗽冒,那么如果將這些節(jié)點(diǎn)劃分到不同階段里呢呀伙?那就得看節(jié)點(diǎn)之間是否有數(shù)據(jù)的shuffle。如果兩個(gè)節(jié)點(diǎn)之間沒(méi)有數(shù)據(jù)shuffle添坊,那么這兩個(gè)節(jié)點(diǎn)就劃分到同一個(gè)階段剿另,而分到這兩個(gè)節(jié)點(diǎn)對(duì)應(yīng)行為的work node就可以自己獨(dú)立完成所有行為,不用管其他work node贬蛙;如果兩個(gè)節(jié)點(diǎn)之間有數(shù)據(jù)shuffle雨女,那么這個(gè)兩個(gè)節(jié)點(diǎn)就劃分到不同階段,對(duì)應(yīng)的所有work node就只能保證都完成節(jié)點(diǎn)1行為速客,shuffle數(shù)據(jù)戚篙,接著完成節(jié)點(diǎn)2行為。

??最后了解下RDD的優(yōu)勢(shì)和不能做的工作:
RDD是Spark的核心溺职,RDD的關(guān)鍵優(yōu)勢(shì)在于避免數(shù)據(jù)頻繁寫入磁盤岔擂。傳統(tǒng)MapReduce一個(gè)很大的問(wèn)題是不斷將中間結(jié)果寫入磁盤位喂,這就帶來(lái)了IO開銷和序列化反序列化開銷。而RDD會(huì)將中間結(jié)果保存在內(nèi)存中乱灵,從而節(jié)約大量開銷塑崖。RDD也是數(shù)據(jù)的抽象,我們只需要知道讀入的數(shù)據(jù)是RDD痛倚,而實(shí)際上數(shù)據(jù)會(huì)被分成讀個(gè)分區(qū)保存不同的work node上规婆,但我們不用關(guān)注這些底層細(xì)節(jié)。RDD只能完成粗粒度的數(shù)據(jù)操作(RDD對(duì)所有數(shù)據(jù)一起做操作蝉稳,不能只對(duì)部分?jǐn)?shù)據(jù)做針對(duì)性操作)抒蚜,RDD不支持細(xì)粒度數(shù)據(jù)修改,因此不太適合需要頻繁更新部分?jǐn)?shù)據(jù)的場(chǎng)景(比如網(wǎng)頁(yè)爬蟲的數(shù)據(jù)更新)耘戚。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嗡髓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子收津,更是在濱河造成了極大的恐慌饿这,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撞秋,死亡現(xiàn)場(chǎng)離奇詭異长捧,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)吻贿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門串结,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人廓八,你說(shuō)我怎么就攤上這事奉芦≌郧溃” “怎么了剧蹂?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)烦却。 經(jīng)常有香客問(wèn)我宠叼,道長(zhǎng),這世上最難降的妖魔是什么其爵? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任冒冬,我火速辦了婚禮,結(jié)果婚禮上摩渺,老公的妹妹穿的比我還像新娘简烤。我一直安慰自己,他們只是感情好摇幻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布横侦。 她就那樣靜靜地躺著挥萌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪枉侧。 梳的紋絲不亂的頭發(fā)上引瀑,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音榨馁,去河邊找鬼憨栽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛翼虫,可吹牛的內(nèi)容都是我干的屑柔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼珍剑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼锯蛀!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起次慢,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤旁涤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后迫像,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體劈愚,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年闻妓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了菌羽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡由缆,死狀恐怖注祖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情均唉,我是刑警寧澤是晨,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站舔箭,受9級(jí)特大地震影響罩缴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜层扶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一箫章、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧镜会,春花似錦檬寂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拿诸。三九已至,卻和暖如春塞茅,著一層夾襖步出監(jiān)牢的瞬間亩码,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工野瘦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留描沟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓鞭光,卻偏偏與公主長(zhǎng)得像吏廉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惰许,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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