中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

怎么解決yarn-cluster模式的JVM棧內(nèi)存溢出問(wèn)題

怎么解決yarn-cluster模式的JVM棧內(nèi)存溢出問(wèn)題,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

目前創(chuàng)新互聯(lián)建站已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、靈臺(tái)網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

公司里面你的機(jī)器節(jié)點(diǎn)一般都是虛擬機(jī)啊!所以yarn-client會(huì)有網(wǎng)絡(luò)激增的問(wèn)題!Yarn-client模式可以跑,但是Yarn-cluster模式不能跑,就是報(bào)那么一個(gè)JVM永久代溢出的那么一個(gè)問(wèn)題!

  1. spark-submit腳本提交spark application到ResourceManager

  2. 去ResourceManager申請(qǐng)啟動(dòng)ApplicationMaster

  3. 通知一個(gè)NodeManager去啟動(dòng)ApplicationMaster(Driver進(jìn)程)

  4. ApplicationMaster去找ResourceManager申請(qǐng)Executor

  5. ResourceManager分配container,container代表你能啟動(dòng)的Executor占有的資源,包括內(nèi)存+CPU返回已經(jīng)啟動(dòng)container的NodeManager的地址

  6. ApplicationMaster去找NodeManager在container里面申請(qǐng)啟動(dòng)Executor

  7. Executor進(jìn)程會(huì)反過(guò)來(lái)去向Driver注冊(cè)上去

  8. 最后Driver接收到了Executor資源之后就可以去進(jìn)行我們spark代碼的執(zhí)行了

  9. 執(zhí)行到某個(gè)action就觸發(fā)一個(gè)JOB

  10. DAGScheduler會(huì)劃分JOB為一個(gè)個(gè)Stage

  11. TaskScheduler會(huì)劃分Stage為一個(gè)個(gè)Task

  12. Task發(fā)送到Executor執(zhí)行

  13. Driver就來(lái)進(jìn)行Task的調(diào)度

        到這里為止,ApplicationMaster(Driver),就知道自己有哪些資源可以用(executor)。然后就會(huì)去執(zhí)行job、拆分stage、提交stage的task,進(jìn)行task調(diào)度,分配到各個(gè)executor上面去執(zhí)行。

總結(jié)一下yarn-client和yarn-cluster模式的不同之處:

  • yarn-client模式,driver運(yùn)行在本地機(jī)器上的;

  • yarn-cluster模式,driver是運(yùn)行在yarn集群上某個(gè)nodemanager節(jié)點(diǎn)上面的。

  • yarn-client會(huì)導(dǎo)致本地機(jī)器負(fù)責(zé)spark作業(yè)的調(diào)度,所以網(wǎng)卡流量會(huì)激增;

  • yarn-cluster模式就沒(méi)有這個(gè)問(wèn)題。

  • yarn-client的driver運(yùn)行在本地,通常來(lái)說(shuō)本地機(jī)器跟yarn集群都不會(huì)在一個(gè)機(jī)房的,所以說(shuō)性能可能不是特別好;

  • yarn-cluster模式下,driver是跟yarn集群運(yùn)行在一個(gè)機(jī)房?jī)?nèi),性能上來(lái)說(shuō),也會(huì)好一些。

實(shí)踐經(jīng)驗(yàn),碰到的yarn-cluster的問(wèn)題:

  • 有的時(shí)候,運(yùn)行一些包含了spark sql的spark作業(yè),可能會(huì)碰到y(tǒng)arn-client模式下,可以正常提交運(yùn)行;yarn-cluster模式下,可能是無(wú)法提交運(yùn)行的,會(huì)報(bào)出JVM的PermGen(永久代)的內(nèi)存溢出,OOM。JVM里面的一個(gè)區(qū)域,就是會(huì)放Class里面一些字符串常量這些東西的。

  • yarn-client模式下,driver是運(yùn)行在本地機(jī)器上的,spark使用的JVM的PermGen的配置,是本地的spark-class文件(spark客戶(hù)端是默認(rèn)有配置的),JVM的永久代的大小是128M,這個(gè)是沒(méi)有問(wèn)題的;但是呢,在yarn-cluster模式下,driver是運(yùn)行在yarn集群的某個(gè)節(jié)點(diǎn)上的,使用的是沒(méi)有經(jīng)過(guò)配置的默認(rèn)設(shè)置(PermGen永久代大小),82M。

  • spark-sql,它的內(nèi)部是要進(jìn)行很復(fù)雜的SQL的語(yǔ)義解析、語(yǔ)法樹(shù)的轉(zhuǎn)換等等,特別復(fù)雜,在這種復(fù)雜的情況下,如果說(shuō)你的sql本身特別復(fù)雜的話(huà),很可能會(huì)比較導(dǎo)致性能的消耗,內(nèi)存的消耗。可能對(duì)PermGen永久代的占用會(huì)比較大。

        所以,此時(shí),如果對(duì)永久代的占用需求,超過(guò)了82M的話(huà),但是呢又在128M以?xún)?nèi);就會(huì)出現(xiàn)如上所述的問(wèn)題,yarn-client模式下,默認(rèn)是128M,這個(gè)還能運(yùn)行;如果在yarn-cluster模式下,默認(rèn)是82M,就有問(wèn)題了。會(huì)報(bào)出PermGen Out of Memory error log。


如何解決這種問(wèn)題?

  • 既然是JVM的PermGen永久代內(nèi)存溢出,那么就是內(nèi)存不夠用。咱們呢,就給yarn-cluster模式下的,driver的PermGen多設(shè)置一些。

    //spark-submit腳本中,加入以下配置即可:
    --conf spark.driver.extraJavaOptions="-XX:PermSize=128M -XX:MaxPermSize=256M"
    
    //這個(gè)就設(shè)置了driver永久代的大小,默認(rèn)是128M,最大是256M。那么,這樣的話(huà),
    //就可以基本保證你的spark作業(yè)不會(huì)出現(xiàn)上述的yarn-cluster模式導(dǎo)致的永久代內(nèi)存溢出的問(wèn)題。

多講一句,可能還有一個(gè)問(wèn)題(spark sql,sql,要注意,一個(gè)問(wèn)題)

  • sql,有大量的or語(yǔ)句。比如where keywords='' or keywords='' or keywords='' ,當(dāng)or語(yǔ)句,有成百上千的時(shí)候,此時(shí)可能就會(huì)出現(xiàn)一個(gè)driver端的jvm stack overflow,JVM棧內(nèi)存溢出的問(wèn)題

  • JVM棧內(nèi)存溢出,基本上就是由于調(diào)用的方法層級(jí)過(guò)多,因?yàn)楫a(chǎn)生了大量的,非常深的,超出了JVM棧深度限制的,遞歸。遞歸方法。我們的猜測(cè),spark sql,有大量or語(yǔ)句的時(shí)候,spark sql內(nèi)部源碼中,在解析sql,比如轉(zhuǎn)換成語(yǔ)法樹(shù),或者進(jìn)行執(zhí)行計(jì)劃的生成的時(shí)候,對(duì)or的處理是遞歸。or特別多的話(huà),就會(huì)發(fā)生大量的遞歸。

  • JVM Stack Memory Overflow,棧內(nèi)存溢出。

    • 這種時(shí)候,建議不要搞那么復(fù)雜的spark sql語(yǔ)句。采用替代方案:將一條sql語(yǔ)句,拆解成多條sql語(yǔ)句來(lái)執(zhí)行。每條sql語(yǔ)句,就只有100個(gè)or子句以?xún)?nèi);一條一條SQL語(yǔ)句來(lái)執(zhí)行。根據(jù)生產(chǎn)環(huán)境經(jīng)驗(yàn)的測(cè)試,一條sql語(yǔ)句,100個(gè)or子句以?xún)?nèi),是還可以的。通常情況下,不會(huì)報(bào)那個(gè)棧內(nèi)存溢出。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

當(dāng)前題目:怎么解決yarn-cluster模式的JVM棧內(nèi)存溢出問(wèn)題
分享路徑:http://www.2m8n56k.cn/article30/jphcso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)建站公司域名注冊(cè)網(wǎng)站營(yíng)銷(xiāo)品牌網(wǎng)站制作Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷(xiāo)型網(wǎng)站建設(shè)
主站蜘蛛池模板: 一级特黄性色生活片一区二区 | 成年免费大片黄在线观看一 | 亚洲人成网址在线播放a | 91香蕉国产亚洲一区二区三区 | 欧美a免费 | 国产亚洲欧美日韩在线看片 | 99精品视频一区在线视频免费观看 | 中文字幕免费 | 中文精品久久久久国产网址 | 亚洲精品高清国产一久久 | 成人影院久久久久久影院 | 亚洲精品久久久久影院 | 国产伦精一区二区三区视频 | 玖玖精品视频在线观看 | 国内精品91最新在线观看 | 国产成人精品精品欧美 | 国产欧美精品一区二区三区四区 | 亚洲人成网站观看在线播放 | 国产欧美日本亚洲精品五区 | 91最新91精品91蝌蚪 | 亚洲不卡视频在线观看 | 亚洲综合色就色手机在线观看 | 韩国一级特黄毛片大 | 美女的让男人桶到爽软件 | 欧美视频二区 | 日韩在线观看中文字幕 | 成人做爰免费网站 | 天海翼精品久久中文字幕 | 91精品福利手机国产在线 | 欧美黑人性xxx猛交 欧美很黄视频在线观看 | 久久无码av三级 | 99久久国语露脸精品对白 | 国产99精品一区二区三区免费 | 国产成人高清精品免费观看 | 国产欧美成人免费观看视频 | 天堂8中文在线最新版在线 天堂8资源8在线 | 成人国内精品久久久久影院 | 国产成人综合自拍 | 精品一区二区三区免费毛片爱 | 国产在线视频欧美亚综合 | 免费视频一区二区 |