Spark程序優(yōu)化總結(jié)

更多大數(shù)據(jù)技術(shù)干貨,歡迎關(guān)注“大數(shù)據(jù)技術(shù)進(jìn)階”微信公眾號(hào)谬盐。

1 代碼優(yōu)化

a. 對(duì)于多次使用的RDD甸私,進(jìn)行數(shù)據(jù)持久化操作(eg: cache、persist)

b. 如果對(duì)同一個(gè)份數(shù)據(jù)進(jìn)行操作飞傀,那么盡量公用一個(gè)RDD

c. 優(yōu)先使用reduceByKey和aggregateByKey取代groupByKey
原因:前兩個(gè)API存在combiner皇型,可以降低數(shù)據(jù)量诬烹;groupByKey可能存在OOM異常

d. 對(duì)于Executor使用到Driver中的變量的情況,使用廣播變量進(jìn)行數(shù)據(jù)傳遞, 可以減少網(wǎng)絡(luò)傳輸量弃鸦,原理是:使用廣播變量后绞吁,原來(lái)Driver傳遞給Task的數(shù)據(jù),變成只需要傳遞給Executor即可唬格。

e. 當(dāng)大表join小表家破,而且存在shuffle的時(shí)候,可以考慮使用map join來(lái)進(jìn)行替換<使用廣播變量將小表的數(shù)據(jù)廣播出去购岗,前提:Driver和單個(gè)的Executor的內(nèi)存可以存儲(chǔ)下小表的數(shù)據(jù)>汰聋;

h. 啟動(dòng)kyro序列化機(jī)制

2資源優(yōu)化

a. spark-submit腳本相關(guān)參數(shù)
driver的內(nèi)存:--driver-memory
driver的cpu:
standalone(cluster):--driver-cores
yarn(cluster): --driver-cores
executor的數(shù)量:
yarn: --num-executors
總的executor的CPU數(shù)量:
standalone/mesos:--total-executor-cores
單個(gè)executor的內(nèi)存:--executor-memory
單個(gè)executor的cpu:
standalone/yarn:--executor-cores

b. 資源相關(guān)參數(shù)
spark.driver.cores:1
spark.driver.memory:1g
spark.executor.cores:1(yarn)/all(standalone)
spark.executor.memory:1g
spark.memory.fraction:0.75
spark.memory.storageFraction:0.5

Spark中執(zhí)行和緩存的內(nèi)存是公用的,執(zhí)行可以爭(zhēng)奪緩存的內(nèi)存喊积,就是可以將部分緩存自動(dòng)清楚烹困,用于執(zhí)行過(guò)程中使用內(nèi)存;這兩個(gè)參數(shù)的含義分別是:spark.memory.fraction指定總內(nèi)存占比((1g-300M) * 0.75)注服,spark.memory.storageFraction指定緩存部分最少占比內(nèi)存((1g-300M) * 0.75 * 0.5)韭邓;當(dāng)沒(méi)有執(zhí)行的情況下,緩存可以使用全部的公用內(nèi)存溶弟,即緩存最多使用((1g-300M) * 0.75)女淑,最少可占用((1g-300M) * 0.75 * 0.5)

1.5版本以前的采用固定內(nèi)存設(shè)置:spark.storage.memoryFraction(0.6)以及spark.shuffle.memoryFraction(0.2)
spark.default.parallelism: 默認(rèn)的分區(qū)數(shù)量,默認(rèn)兩個(gè)辜御,一般比較醒寄恪;在實(shí)際環(huán)境中一般需要改大擒权。
spark.scheduler.mode:FIFO(默認(rèn),先進(jìn)先出)/FAIR(公平調(diào)度)
spark.task.cpus:每個(gè)Task執(zhí)行需要的CPU數(shù)量(默認(rèn)值1)
spark.task.maxFailures:每個(gè)Task允許的最大失敗次數(shù)(默認(rèn)值4)
spark.dynamicAllocation.enabled: false; 是否啟動(dòng)動(dòng)態(tài)分配資源袱巨,默認(rèn)為不啟動(dòng)
spark.shuffle.service.enabled:false,當(dāng)啟動(dòng)動(dòng)態(tài)資源分配的時(shí)候碳抄,該參數(shù)必須設(shè)置為true愉老,表示允許額外的shuffle服務(wù)管理
spark.dynamicAllocation.initialExecutors:動(dòng)態(tài)資源初始executor數(shù)量
spark.dynamicAllocation.maxExecutors:動(dòng)態(tài)資源設(shè)置最大允許分配資源
spark.dynamicAllocation.minExecutors:動(dòng)態(tài)資源設(shè)置最小允許分配資源,默認(rèn)(0)

Spark on Yarn:
spark.yarn.am.memory:512m; 運(yùn)行在Yarn上的時(shí)候ApplicationMaster運(yùn)行的內(nèi)存大小(client模式下)
spark.yarn.am.cores:1; ApplicationMaster運(yùn)行的CPU核數(shù)(client模式下)
spark.executor.instances: Executor的數(shù)量剖效,默認(rèn)2個(gè)嫉入;該參數(shù)和動(dòng)態(tài)參數(shù)參數(shù)互斥,當(dāng)兩者都存在的時(shí)候璧尸,動(dòng)態(tài)參數(shù)設(shè)置無(wú)效咒林。

3 數(shù)據(jù)傾斜優(yōu)化

a. 兩階段聚合
b. 使用MAP JOIN替代REDUCE JOIN
c. 數(shù)據(jù)重分區(qū)(更改分區(qū)數(shù)量)
e. 擴(kuò)容RDD及隨機(jī)前綴JOIN方式

4 shuffle過(guò)程優(yōu)化(兩種ShuffleManager,四種模式一定要懂)

a. spark.shuffle.file.buffer:32k; 數(shù)據(jù)溢出磁盤(pán)的緩沖區(qū)內(nèi)存大小
b. spark.shuffle.manager: sort; 給定數(shù)據(jù)
shuffle的管理器爷光,sort(基于排序規(guī)則)或者h(yuǎn)ash(基于Hash值)
c. spark.shuffle.sort.bypassMergeThreshold: 200; 當(dāng)分區(qū)數(shù)量小于該值的時(shí)候垫竞,啟動(dòng)SortShuffleManager中的bypass模式
d. spark.shuffle.consolidateFiles: false; 當(dāng)該參數(shù)為true的時(shí)候,使用hash shuffle的時(shí)候蛀序,可以提高shuffle速度欢瞪,原理是:合并shuffle過(guò)程中的數(shù)據(jù)輸出文件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末活烙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子遣鼓,更是在濱河造成了極大的恐慌瓣颅,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件譬正,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡檬姥,警方通過(guò)查閱死者的電腦和手機(jī)曾我,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)健民,“玉大人抒巢,你說(shuō)我怎么就攤上這事”蹋” “怎么了蛉谜?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)崇堵。 經(jīng)常有香客問(wèn)我型诚,道長(zhǎng),這世上最難降的妖魔是什么鸳劳? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任狰贯,我火速辦了婚禮,結(jié)果婚禮上赏廓,老公的妹妹穿的比我還像新娘涵紊。我一直安慰自己,他們只是感情好幔摸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布摸柄。 她就那樣靜靜地躺著,像睡著了一般既忆。 火紅的嫁衣襯著肌膚如雪驱负。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天尿贫,我揣著相機(jī)與錄音电媳,去河邊找鬼。 笑死庆亡,一個(gè)胖子當(dāng)著我的面吹牛匾乓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播又谋,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼拼缝,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼娱局!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起咧七,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤衰齐,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后继阻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體耻涛,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年瘟檩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抹缕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡墨辛,死狀恐怖卓研,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情睹簇,我是刑警寧澤奏赘,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站太惠,受9級(jí)特大地震影響磨淌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜垛叨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一伦糯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嗽元,春花似錦敛纲、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至佩谷,卻和暖如春旁壮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谐檀。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工抡谐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人桐猬。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓麦撵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子免胃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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

  • 1音五、 性能調(diào)優(yōu) 1.1、 分配更多資源 1.1.1羔沙、分配哪些資源躺涝? Executor的數(shù)量 每個(gè)Executor所...
    Frank_8942閱讀 4,542評(píng)論 2 36
  • 前言 在大數(shù)據(jù)計(jì)算領(lǐng)域,Spark已經(jīng)成為了越來(lái)越流行扼雏、越來(lái)越受歡迎的計(jì)算平臺(tái)之一坚嗜。Spark的功能涵蓋了大數(shù)據(jù)領(lǐng)...
    Alukar閱讀 554評(píng)論 0 6
  • spark-submit的時(shí)候如何引入外部jar包 在通過(guò)spark-submit提交任務(wù)時(shí),可以通過(guò)添加配置參數(shù)...
    博弈史密斯閱讀 2,744評(píng)論 1 14
  • 你說(shuō)下雪了诗充, 于是她便滿心歡喜跑去看雪惶傻, 可是她卻斂著滿眼失望歸來(lái)。 你說(shuō)你的心有了芥蒂其障, 于是她天真爛漫地逗你開(kāi)...
    帥氣的王體委閱讀 451評(píng)論 1 2
  • 我老是不高興,就連喜歡的頭像涂佃,都是不高興的励翼,就像這只貓。它是我的qq頭像辜荠、微信頭像汽抚、微博頭像,它不高興伯病。 很久以前...
    梵高的歌閱讀 436評(píng)論 0 0