RDD 科普

Spark 基礎

Apache Spark? is a unified analytics engine for large-scale data processing.
ApacheSpark?是用于大規(guī)模數(shù)據(jù)處理的統(tǒng)一分析引擎。

Spark 引擎核心架構(gòu)

ClusterManager:在Standalone模式中即為Master(主節(jié)點)抹竹,控制整個集群线罕,監(jiān)控Worker。在YARN模式中為資源管理器窃判。
Driver:運行Application的main()函數(shù)并創(chuàng)建SparkContext钞楼。
Worker:從節(jié)點,負責控制計算節(jié)點袄琳,啟動Executor或Driver询件。在YARN模式中為NodeManager燃乍,負責計算節(jié)點的控制
Executor:執(zhí)行器,在worker node上執(zhí)行任務的組件宛琅、用于啟動線程池運行任務刻蟹。每個Application擁有獨立的一組Executors。
SparkContext:整個應用的上下文嘿辟,控制應用的生命周期
在這個大規(guī)模數(shù)據(jù)處理 的基礎數(shù)據(jù)結(jié)構(gòu)座咆。
RDD:Spark的基本計算單元,一組RDD可形成執(zhí)行的有向無環(huán)圖RDD Graph

什么是 RDD

全稱叫做彈性分布式數(shù)據(jù)集(Resilient Distributed Datasets)仓洼,它是一種分布式的內(nèi)存抽象介陶,表示一個只讀的記錄分區(qū)的集合,它只能通過其他RDD轉(zhuǎn)換而創(chuàng)建色建。

特點:

  • 分區(qū)

如上圖所示哺呜,RDD邏輯上是分區(qū)的,每個分區(qū)的數(shù)據(jù)是抽象存在的箕戳,計算的時候會通過一個compute函數(shù)得到每個分區(qū)的數(shù)據(jù)某残。
如果RDD是通過已有的文件系統(tǒng)構(gòu)建,則compute函數(shù)是讀取指定文件系統(tǒng)中的數(shù)據(jù)
如果RDD是通過其他RDD轉(zhuǎn)換而來陵吸,則compute函數(shù)是執(zhí)行轉(zhuǎn)換邏輯將其他RDD的數(shù)據(jù)進行轉(zhuǎn)換

  • 只讀

如下圖所示玻墅,RDD是只讀的,要想改變RDD中的數(shù)據(jù)壮虫,只能在現(xiàn)有的RDD基礎上創(chuàng)建新的RDD澳厢。


RDD 表示只讀的分區(qū)的數(shù)據(jù)集炬丸,對RDD進行改動垫桂,只能通過RDD的轉(zhuǎn)換操作译株,由一個RDD得到一個新的RDD齐媒,新的RDD包含了從其他RDD衍生所必需的信息。

由一個RDD轉(zhuǎn)換到另一個RDD敏簿,可以通過豐富的操作算子實現(xiàn)锣吼,不再像MapReduce那樣只能寫map和reduce了女嘲,如下圖所示募狂。

RDD的操作算子包括兩類办素,一類叫做transformations,它是用來將RDD進行轉(zhuǎn)化祸穷,構(gòu)建RDD的血緣關(guān)系性穿;另一類叫做actions,它是用來觸發(fā)RDD的計算粱哼,得到RDD的相關(guān)計算結(jié)果或者將RDD保存的文件系統(tǒng)中季二。下圖是RDD所支持的操作算子列表檩咱。

Transformation返回值還是一個RDD揭措。它使用了鏈式調(diào)用的設計模式胯舷,對一個RDD進行計算后,變換成另外一個RDD绊含,然后這個RDD又可以進行另外一次轉(zhuǎn)換桑嘶。這個過程是分布式的
Action返回值不是一個RDD。它要么是一個Scala的普通集合躬充,要么是一個值逃顶,要么是空,最終或返回到Driver程序充甚,或把RDD寫入到文件系統(tǒng)中

Transformations轉(zhuǎn)換操作以政,返回值還是一個 RDD,如 map伴找、 filter盈蛮、 union;
Actions行動操作技矮,返回結(jié)果或把RDD持久化起來抖誉,如 count、 collect衰倦、 save袒炉。

  • 依賴

RDDs之間存在依賴,RDD的執(zhí)行是按照血緣關(guān)系延時計算的樊零。如果血緣關(guān)系較長我磁,可以通過持久化(checkpoint)RDD來切斷血緣關(guān)系。

通過RDDs之間的這種依賴關(guān)系驻襟,一個任務流可以描述為DAG(有向無環(huán)圖)十性,如下圖所示,在實際執(zhí)行過程中寬依賴對應于Shuffle(圖中的reduceByKey和join)塑悼,窄依賴中的所有轉(zhuǎn)換操作可以通過類似于管道的方式一氣呵成執(zhí)行(圖中map和union可以一起執(zhí)行)劲适。

  • 緩存

如果在應用程序中多次使用同一個RDD,可以將該RDD緩存起來厢蒜,該RDD只有在第一次計算的時候會根據(jù)血緣關(guān)系得到分區(qū)的數(shù)據(jù)霞势,在后續(xù)其他地方用到該RDD的時候,會直接從緩存處取而不用再根據(jù)血緣關(guān)系計算斑鸦,這樣就加速后期的重用愕贡。如下圖所示,RDD-1經(jīng)過一系列的轉(zhuǎn)換后得到RDD-n并保存到hdfs巷屿,RDD-1在這一過程中會有個中間結(jié)果固以,如果將其緩存到內(nèi)存,那么在隨后的RDD-1轉(zhuǎn)換到RDD-m這一過程中,就不會計算其之前的RDD-0了憨琳。

緩存方法: cache诫钓,persist

緩存級別

優(yōu)先位置(preferred location)

每個分片的優(yōu)先計算位置,Spark在進行任務調(diào)度的時候篙螟,會盡可能滴將計算任務分配到所需數(shù)據(jù)塊的存儲位置菌湃,滿足“移動計算優(yōu)先移動數(shù)據(jù)”的理念。

RDD 持久化(checkpoint)

雖然RDD的血緣關(guān)系天然地可以實現(xiàn)容錯遍略,當RDD的某個分區(qū)數(shù)據(jù)失敗或丟失惧所,可以通過血緣關(guān)系重建。但是對于長時間迭代型應用來說绪杏,隨著迭代的進行下愈,RDDs之間的血緣關(guān)系會越來越長,一旦在后續(xù)迭代過程中出錯蕾久,則需要通過非常長的血緣關(guān)系去重建驰唬,勢必影響性能。
為此腔彰,RDD支持checkpoint將數(shù)據(jù)保存到持久化的存儲中叫编,這樣就可以切斷之前的血緣關(guān)系,因為checkpoint后的RDD不需要知道它的父RDDs了霹抛,它可以從checkpoint處拿到數(shù)據(jù)搓逾。

小結(jié)

RDD 的屬性特征:分區(qū)、函數(shù)杯拐、依賴霞篡、優(yōu)先位置、分區(qū)策略端逼;

RDD 緩存:持久化等級朗兵、主動持久化、自動持久化顶滩;

RDD 的操作:Transformation余掖、Action;

RDD 依賴:窄依賴礁鲁、寬依賴盐欺。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市仅醇,隨后出現(xiàn)的幾起案子冗美,更是在濱河造成了極大的恐慌,老刑警劉巖析二,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粉洼,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機属韧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門安拟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挫剑,你說我怎么就攤上這事≈危” “怎么了樊破?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長唆铐。 經(jīng)常有香客問我哲戚,道長,這世上最難降的妖魔是什么艾岂? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任顺少,我火速辦了婚禮,結(jié)果婚禮上王浴,老公的妹妹穿的比我還像新娘脆炎。我一直安慰自己,他們只是感情好氓辣,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布秒裕。 她就那樣靜靜地躺著,像睡著了一般钞啸。 火紅的嫁衣襯著肌膚如雪几蜻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天体斩,我揣著相機與錄音梭稚,去河邊找鬼。 笑死絮吵,一個胖子當著我的面吹牛弧烤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蹬敲,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼扼褪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了粱栖?” 一聲冷哼從身側(cè)響起话浇,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎闹究,沒想到半個月后幔崖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年赏寇,在試婚紗的時候發(fā)現(xiàn)自己被綠了吉嫩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡嗅定,死狀恐怖自娩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情渠退,我是刑警寧澤忙迁,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站碎乃,受9級特大地震影響姊扔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜梅誓,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一恰梢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梗掰,春花似錦嵌言、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拥坛,卻和暖如春蓬蝶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背猜惋。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工丸氛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人著摔。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓缓窜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谍咆。 傳聞我的和親對象是個殘疾皇子禾锤,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355