【Spark】RDD機(jī)制實(shí)現(xiàn)模型

RDD淵源

彈性分布式數(shù)據(jù)集(RDD)队寇,它是MapReduce模型一種簡單的擴(kuò)展和延伸霉猛,RDD為了實(shí)現(xiàn)迭代出嘹、交互性和流查詢等功能舰蟆,需要保證RDD具備在并行計(jì)算階段之間能夠高效地數(shù)據(jù)共享的功能特性段只。RDD運(yùn)用高效的數(shù)據(jù)共享概念和類似于MapReduce的操作方式腮猖,使得所有的計(jì)算工作可以有效地執(zhí)行,并可以在當(dāng)前特定的系統(tǒng)中獲得關(guān)鍵性的優(yōu)化赞枕。

RDD是一種有容錯機(jī)制的特殊集合澈缺,可以分布在集群的節(jié)點(diǎn)上,以函數(shù)式編操作集合的方式炕婶,進(jìn)行各種并行操作姐赡。可以將RDD理解為一個具有容錯機(jī)制的特殊集合柠掂,它提供了一種只讀项滑、只能由已存在的RDD變換而來的共享內(nèi)存,然后將所有數(shù)據(jù)都加載到內(nèi)存中涯贞,方便進(jìn)行多次重用枪狂。

a. 它是分布式的,可以分布在多臺機(jī)器上宋渔,進(jìn)行計(jì)算州疾。
b. 它是彈性的,計(jì)算過程中內(nèi)存不夠時它會和磁盤進(jìn)行數(shù)據(jù)交換皇拣。
c. 這些限制可以極大的降低自動容錯開銷
d. 實(shí)質(zhì)是一種更為通用的迭代并行計(jì)算框架严蓖,用戶可以顯式的控制計(jì)算的中間結(jié)果,然后將其自由運(yùn)用于之后的計(jì)算氧急。

RDD是一個可以避免復(fù)制的容錯分布式存儲概念颗胡。取而代之,每一個RDD都會記住由構(gòu)建它的那些操作所構(gòu)成的一個圖吩坝,類似于批處理計(jì)算模型杭措,可以有效地重新計(jì)算因故障丟失的數(shù)據(jù)。由于創(chuàng)建RDD的操作是相對粗粒度的钾恢,即單一的操作應(yīng)用于許多數(shù)據(jù)元素手素,該技巧比通過網(wǎng)絡(luò)復(fù)制數(shù)據(jù)更高效鸳址。RDD很好地運(yùn)用于當(dāng)前廣泛的數(shù)據(jù)并行算法和處理模型中,所有的這些對多個任務(wù)使用同一種操作泉懦。

RDD機(jī)制實(shí)現(xiàn)的模型

RDD 機(jī)制實(shí)現(xiàn)了多類模型稿黍,包括多個現(xiàn)有的集群編程模型和之前模型所沒有支持的新應(yīng)用。在這些模型中崩哩,RDD機(jī)制不僅在性能方面能夠和之前系統(tǒng)相匹配巡球,在其他方面,他們也能加入現(xiàn)有的系統(tǒng)所缺少的新特性邓嘹,比如容錯性酣栈,straggler容忍和彈性。我們討論以下四類模型汹押。

迭代式算法

一種目前已經(jīng)開發(fā)的針對特定系統(tǒng)最常見的的工作模式是迭代算法矿筝,比如應(yīng)用于圖處理,數(shù)值優(yōu)化棚贾,以及機(jī)器學(xué)習(xí)中的算法窖维。RDD可以支持廣泛類型的各種模型,包括Pregel妙痹,像HaLoop和Twister這類的迭代式MapReduce模型铸史,以及確定版本的GraphLab和PowerGraph模型。

關(guān)系查詢

在MapReduce集群中的首要需求中的一類是執(zhí)行SQL查詢怯伊,長期運(yùn)行或多個小時的批量計(jì)算任務(wù)和即時查詢琳轿。這促進(jìn)了很多在商業(yè)集群中應(yīng)用的并行數(shù)據(jù)庫系統(tǒng)的發(fā)展。
MapReduce相比并行數(shù)據(jù)庫在交互式查詢有非常大的缺陷耿芹,例如MapReduce的容錯機(jī)制模型利赋,而我們發(fā)現(xiàn)通過在RDD操作中實(shí)現(xiàn)很多常用的數(shù)據(jù)庫引擎的特性(比如,列處理)猩系,這樣能夠達(dá)到相當(dāng)可觀的性能媚送。

MapReduce

RDD通過提供MapReduce的一個超集,能夠高效地執(zhí)行MapReduce程序寇甸,同樣也可以指向比如DryadLINQ這樣常見的機(jī)遇DAG數(shù)據(jù)流的應(yīng)用塘偎。

流式數(shù)據(jù)處理

Spark與定制化系統(tǒng)最大的區(qū)別是Spark也使用RDD實(shí)現(xiàn)了流式處理。流式數(shù)據(jù)處理已經(jīng)在數(shù)據(jù)庫和系統(tǒng)領(lǐng)域進(jìn)行了很長時間研究拿霉,但是實(shí)現(xiàn)大規(guī)模流式數(shù)據(jù)處理仍然是一項(xiàng)挑戰(zhàn)吟秩。當(dāng)前的模型并沒有處理在大規(guī)模集群中頻繁出現(xiàn)的straggler的問題,同時對故障恢復(fù)的方式也非常有限绽淘,需要大量的復(fù)制或浪費(fèi)很長的恢復(fù)時間涵防。特別是,當(dāng)前的系統(tǒng)是基于一種持續(xù)操作的模型沪铭,這就需要長時間的有狀態(tài)的操作處理每一個到達(dá)的記錄壮池。為了恢復(fù)一個丟失的節(jié)點(diǎn)偏瓤,當(dāng)前的系統(tǒng)需要保存每一個操作符的兩個副本,或通過一系列耗費(fèi)大量開銷的串行處理來對上游的數(shù)據(jù)進(jìn)行重放椰憋。
Spark提出了一個新的模型厅克,離散數(shù)據(jù)流(D-Streams),來解決這樣的問題。對使用長期狀態(tài)處理的過程進(jìn)行替換橙依,D-Streams 把流式計(jì)算的執(zhí)行當(dāng)做一系列短而確定性的批量計(jì)算的序列证舟,將狀態(tài)保存在RDD里。D-Stream模型通過根據(jù)相關(guān)RDD的依賴關(guān)系圖進(jìn)行并行化恢復(fù)窗骑,就能達(dá)到快速的故障恢復(fù)女责,這樣不需要通過復(fù)制。另外创译,它通過推測(Speculative)來支持對straggler遷移執(zhí)行抵知,例如,對那些慢任務(wù)運(yùn)行經(jīng)過推測的備份副本昔榴。盡管D-Stream將計(jì)算轉(zhuǎn)換為許多不相關(guān)聯(lián)的jobs來運(yùn)行從而增加了部分延遲,然而我們證明了D-Stream能夠被達(dá)到次秒級延時的實(shí)現(xiàn)碘橘,這樣能夠達(dá)到以前系統(tǒng)單個節(jié)點(diǎn)的性能互订,并能線性擴(kuò)展到100個節(jié)點(diǎn)。D-Stream 的強(qiáng)恢復(fù)特性讓他們成為了第一個處理大規(guī)模集群特性的流式處理模型痘拆,并且他們基于RDD的實(shí)現(xiàn)使得應(yīng)用能夠有效的整合批處理和交互式查詢仰禽。

小結(jié)

Spark將這些模型整合到一起,RDD還能支持一些現(xiàn)有系統(tǒng)不能表示的新的應(yīng)用纺蛆。例如吐葵,許多數(shù)據(jù)流應(yīng)用程序還需要加入歷史數(shù)據(jù)的信息;通過使用 RDD 可以在同一程序中同時使用批處理和流式處理桥氏,這樣來實(shí)現(xiàn)在所有模型中數(shù)據(jù)共享和容錯恢復(fù)温峭。同樣的,流式應(yīng)用的操作者常常需要在數(shù)據(jù)流的狀態(tài)上執(zhí)行即時查詢字支;在D-Stream中的RDD能夠如靜態(tài)數(shù)據(jù)形式進(jìn)行查詢凤藏。我們使用一些在線機(jī)器學(xué)習(xí)和視頻分析的實(shí)際應(yīng)用來說明了這些用例。更一般的說堕伪,每一個批處理應(yīng)用常常需要整合多個處理類型:比如揖庄,一個應(yīng)用可能需要使用SQL提取一個數(shù)據(jù)集,在數(shù)據(jù)集上訓(xùn)練一個機(jī)器學(xué)習(xí)模型欠雌,之后對這個模型進(jìn)行查詢蹄梢。由于計(jì)算的大部分時間花在系統(tǒng)之間共享數(shù)據(jù)的分布式文件系統(tǒng)的I/O開銷上,因此使用當(dāng)前多個系統(tǒng)組合而成的工作流的效率非常的低下富俄。使用一個基于RDD機(jī)制的系統(tǒng)禁炒,這些計(jì)算可以在同一個引擎中緊接著執(zhí)行而咆,而不需要額外的I/O。

轉(zhuǎn)載請注明作者Jason Ding及其出處
GitCafe博客主頁(http://jasonding1354.gitcafe.io/)
Github博客主頁(http://jasonding1354.github.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
簡書主頁(http://www.reibang.com/users/2bd9b48f6ea8/latest_articles)
Google搜索jasonding1354進(jìn)入我的博客主頁

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末齐苛,一起剝皮案震驚了整個濱河市翘盖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凹蜂,老刑警劉巖馍驯,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異玛痊,居然都是意外死亡汰瘫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門擂煞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來混弥,“玉大人,你說我怎么就攤上這事对省』饶茫” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵蒿涎,是天一觀的道長哀托。 經(jīng)常有香客問我,道長劳秋,這世上最難降的妖魔是什么仓手? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮玻淑,結(jié)果婚禮上嗽冒,老公的妹妹穿的比我還像新娘。我一直安慰自己补履,他們只是感情好添坊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著箫锤,像睡著了一般帅腌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上麻汰,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天速客,我揣著相機(jī)與錄音,去河邊找鬼五鲫。 笑死溺职,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播浪耘,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼乱灵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了七冲?” 一聲冷哼從身側(cè)響起痛倚,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎澜躺,沒想到半個月后蝉稳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掘鄙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年耘戚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片操漠。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡收津,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浊伙,到底是詐尸還是另有隱情撞秋,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布嚣鄙,位于F島的核電站吻贿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏拗慨。R本人自食惡果不足惜廓八,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一奉芦、第九天 我趴在偏房一處隱蔽的房頂上張望赵抢。 院中可真熱鬧,春花似錦声功、人聲如沸烦却。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽其爵。三九已至,卻和暖如春伸蚯,著一層夾襖步出監(jiān)牢的瞬間摩渺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工剂邮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留摇幻,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像绰姻,于是被迫代替她去往敵國和親枉侧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349

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