spark性能調(diào)優(yōu)之重構(gòu)RDD架構(gòu)逐抑,RDD持久化

當(dāng)?shù)谝淮螌?duì)RDD2執(zhí)行算子鸠儿,獲取RDD3的時(shí)候,就會(huì)從RDD1開(kāi)始計(jì)算厕氨,就是讀取HDFS文件进每,然后對(duì)RDD1執(zhí)行算子,獲取到RDD2命斧,然后再計(jì)算田晚,得到RDD3

默認(rèn)情況下,多次對(duì)一個(gè)RDD執(zhí)行算子国葬,去獲取不同的RDD贤徒;都會(huì)對(duì)這個(gè)RDD以及之前的父RDD,全部重新計(jì)算一次汇四;讀取HDFS->RDD1->RDD2-RDD4這種情況接奈,是絕對(duì)絕對(duì),一定要避免的通孽,一旦出現(xiàn)一個(gè)RDD重復(fù)計(jì)算的情況序宦,就會(huì)導(dǎo)致性能急劇降低。
比如背苦,HDFS->RDD1-RDD2的時(shí)間是15分鐘互捌,那么此時(shí)就要走兩遍,變成30分鐘

另外一種情況行剂,從一個(gè)RDD到幾個(gè)不同的RDD秕噪,算子和計(jì)算邏輯其實(shí)是完全一樣的,結(jié)果因?yàn)槿藶榈氖韬雠鸱恚?jì)算了多次巢价,獲取到了多個(gè)RDD。
所以,建議采用以下方法可以?xún)?yōu)化:

第一壤躲,RDD架構(gòu)重構(gòu)與優(yōu)化盡量去復(fù)用RDD城菊,差不多的RDD,可以抽取稱(chēng)為一個(gè)共同的RDD碉克,供后面的RDD計(jì)算時(shí)凌唬,反復(fù)使用。

第二漏麦,公共RDD一定要實(shí)現(xiàn)持久化
持久化客税,也就是說(shuō),將RDD的數(shù)據(jù)緩存到內(nèi)存中/磁盤(pán)中撕贞,(BlockManager)更耻,以后無(wú)論對(duì)這個(gè)RDD做多少次計(jì)算,那么都是直接取這個(gè)RDD的持久化的數(shù)據(jù)捏膨,比如從內(nèi)存中或者磁盤(pán)中秧均,直接提取一份數(shù)據(jù)。

第三号涯,持久化目胡,是可以進(jìn)行序列化的
如果正常將數(shù)據(jù)持久化在內(nèi)存中,那么可能會(huì)導(dǎo)致內(nèi)存的占用過(guò)大链快,這樣的話誉己,也許,會(huì)導(dǎo)致OOM內(nèi)存溢出域蜗。
當(dāng)純內(nèi)存無(wú)法支撐公共RDD數(shù)據(jù)完全存放的時(shí)候巨双,就優(yōu)先考慮,使用序列化的方式在純內(nèi)存中存儲(chǔ)地消。將RDD的每個(gè)partition的數(shù)據(jù)炉峰,序列化成一個(gè)大的字節(jié)數(shù)組,就一個(gè)對(duì)象脉执;序列化后疼阔,大大減少內(nèi)存的空間占用。
序列化的方式半夷,唯一的缺點(diǎn)就是婆廊,在獲取數(shù)據(jù)的時(shí)候,需要反序列化巫橄。
如果序列化純內(nèi)存方式淘邻,還是導(dǎo)致OOM,內(nèi)存溢出湘换;就只能考慮磁盤(pán)的方式宾舅,內(nèi)存+磁盤(pán)的普通方式(無(wú)序列化)统阿。內(nèi)存+磁盤(pán),序列化筹我。

第四扶平,為了數(shù)據(jù)的高可靠性,而且內(nèi)存充足蔬蕊,可以使用雙副本機(jī)制结澄,進(jìn)行持久化
持久化的雙副本機(jī)制,持久化后的一個(gè)副本岸夯,因?yàn)闄C(jī)器宕機(jī)了麻献,副本丟了,就還是得重新計(jì)算一次猜扮;持久化的每個(gè)數(shù)據(jù)單元勉吻,存儲(chǔ)一份副本,放在其他節(jié)點(diǎn)上面破镰;從而進(jìn)行容錯(cuò)餐曼;一個(gè)副本丟了,不用重新計(jì)算鲜漩,還可以使用另外一份副本。這種方式集惋,僅僅針對(duì)你的內(nèi)存資源極度充足孕似。

sessionid2actionRDD = sessionid2actionRDD.persist(StorageLevel.MEMORY_ONLY());

/**

  • 持久化,很簡(jiǎn)單刮刑,就是對(duì)RDD調(diào)用persist()方法喉祭,并傳入一個(gè)持久化級(jí)別
  • 如果是persist(StorageLevel.MEMORY_ONLY()),純內(nèi)存雷绢,無(wú)序列化泛烙,那么就可以用cache()方法來(lái)替代
  • StorageLevel.MEMORY_ONLY_SER(),第二選擇
  • StorageLevel.MEMORY_AND_DISK()翘紊,第三選擇
  • StorageLevel.MEMORY_AND_DISK_SER()蔽氨,第四選擇
  • StorageLevel.DISK_ONLY(),第五選擇
  • 如果內(nèi)存充足帆疟,要使用雙副本高可靠機(jī)制
  • 選擇后綴帶_2的策略
  • StorageLevel.MEMORY_ONLY_2()

*/
sessionid2actionRDD = sessionid2actionRDD.persist(StorageLevel.MEMORY_ONLY());

參考閱讀
Spark核心編程:RDD持久化詳解
spark性能調(diào)優(yōu)之重構(gòu)RDD架構(gòu)鹉究,RDD持久化
Spark性能調(diào)優(yōu)之——在實(shí)際項(xiàng)目中重構(gòu)RDD架構(gòu)以及RDD持久化

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市踪宠,隨后出現(xiàn)的幾起案子自赔,更是在濱河造成了極大的恐慌,老刑警劉巖柳琢,帶你破解...
    沈念sama閱讀 223,126評(píng)論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绍妨,死亡現(xiàn)場(chǎng)離奇詭異润脸,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)他去,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門(mén)毙驯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人孤页,你說(shuō)我怎么就攤上這事尔苦。” “怎么了行施?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,941評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵允坚,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我蛾号,道長(zhǎng)稠项,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,294評(píng)論 1 300
  • 正文 為了忘掉前任鲜结,我火速辦了婚禮展运,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘精刷。我一直安慰自己拗胜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布怒允。 她就那樣靜靜地躺著埂软,像睡著了一般。 火紅的嫁衣襯著肌膚如雪纫事。 梳的紋絲不亂的頭發(fā)上勘畔,一...
    開(kāi)封第一講書(shū)人閱讀 52,874評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音丽惶,去河邊找鬼炫七。 笑死,一個(gè)胖子當(dāng)著我的面吹牛钾唬,可吹牛的內(nèi)容都是我干的万哪。 我是一名探鬼主播,決...
    沈念sama閱讀 41,285評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼知纷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼壤圃!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起琅轧,我...
    開(kāi)封第一講書(shū)人閱讀 40,249評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤伍绳,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后乍桂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體冲杀,經(jīng)...
    沈念sama閱讀 46,760評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡效床,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了权谁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剩檀。...
    茶點(diǎn)故事閱讀 40,973評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖旺芽,靈堂內(nèi)的尸體忽然破棺而出沪猴,到底是詐尸還是另有隱情,我是刑警寧澤采章,帶...
    沈念sama閱讀 36,631評(píng)論 5 351
  • 正文 年R本政府宣布运嗜,位于F島的核電站,受9級(jí)特大地震影響悯舟,放射性物質(zhì)發(fā)生泄漏担租。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評(píng)論 3 336
  • 文/蒙蒙 一抵怎、第九天 我趴在偏房一處隱蔽的房頂上張望奋救。 院中可真熱鬧,春花似錦反惕、人聲如沸尝艘。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,797評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)利耍。三九已至,卻和暖如春盔粹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背程癌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,926評(píng)論 1 275
  • 我被黑心中介騙來(lái)泰國(guó)打工舷嗡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嵌莉。 一個(gè)月前我還...
    沈念sama閱讀 49,431評(píng)論 3 379
  • 正文 我出身青樓进萄,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親锐峭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子中鼠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評(píng)論 2 361

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

  • 開(kāi)發(fā)調(diào)優(yōu)原則一:避免創(chuàng)建重復(fù)的RDD原則二:盡可能復(fù)用同一個(gè)RDD原則三:對(duì)多次使用的RDD進(jìn)行持久化Spark的...
    miss幸運(yùn)閱讀 425評(píng)論 0 0
  • http://spark.apache.org/docs/latest/api/python/index.html...
    mpro閱讀 6,100評(píng)論 0 4
  • 人生如棋局 高手自博弈 風(fēng)雨前行路 險(xiǎn)峰最旖旎 (堅(jiān)定地堅(jiān)持自己的信念,讓意志打敗艱辛沿癞,唱自己的人生歌謠援雇,為自己的...
    守好本心追尋大唐遠(yuǎn)行僧閱讀 383評(píng)論 6 20
  • 嗨,陌生或熟悉的你椎扬。 學(xué)習(xí)似乎是人與生俱來(lái)就應(yīng)該必須實(shí)行的一個(gè)重要任務(wù)惫搏。當(dāng)你還是個(gè)懵懵懂懂的幼兒時(shí)具温,家長(zhǎng)已經(jīng)為你...
    我懷念的_c54d閱讀 199評(píng)論 0 2
  • 三十歲的女人。珍重長(zhǎng)情的年紀(jì)筐赔,不聒噪铣猩,不淺薄,不輕易允諾茴丰,不泛濫深情达皿。若認(rèn)定了的緣份,亦是一生一世贿肩。你若等我峦椰,那么...
    Zzbaby17閱讀 390評(píng)論 0 1