如何進(jìn)行sparkonyarn集群調(diào)優(yōu)

今天就跟大家聊聊有關(guān)如何進(jìn)行spark on yarn集群調(diào)優(yōu),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)是一家以成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、成都網(wǎng)站營(yíng)銷、小程序App開(kāi)發(fā)等移動(dòng)開(kāi)發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為成都木制涼亭等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開(kāi)發(fā)服務(wù)。

  • jar包管理:在spark-default.conf文件中指定Spark.YARN.jars在hdfs上的SPARK需要的jar包。否則每次提交application,spark會(huì)將driver端的SPARK_HOE下的jar.node, spark.locality.wait.pack包分發(fā)到各節(jié)點(diǎn)上。浪費(fèi)磁盤資源和網(wǎng)絡(luò)資源。

  • yarn隊(duì)列資源不足導(dǎo)致的應(yīng)用運(yùn)行失敗,這類問(wèn)題主要針對(duì)提交作業(yè)的調(diào)優(yōu):

  • 1.在J2EE中間層,通過(guò)線程池技術(shù)提交作業(yè),并設(shè)置線程池大小為1。

  • 2.若只有一個(gè)應(yīng)用,可以將資源調(diào)整到最大

  • 3.若有些spark應(yīng)用明顯的耗時(shí),可以spark擁有的資源進(jìn)行分類(耗時(shí)任務(wù)和快速任務(wù)),此時(shí)可以使用兩個(gè)線程池提交作業(yè),每個(gè)線程池大小為1。

  • 數(shù)據(jù)本地化:分布式存儲(chǔ)是大數(shù)據(jù)技術(shù)的核心,而為了提高大數(shù)據(jù)計(jì)算的效率,使計(jì)算靠近數(shù)據(jù),減少移動(dòng)大量數(shù)據(jù)而產(chǎn)生的網(wǎng)絡(luò)io和磁盤io。

    • spark中的本地級(jí)別有:PROCESS_LOCAL(進(jìn)程本地化,效率最高), NODE_LOCAL(節(jié)點(diǎn)本地化), PACK_LOCAL(機(jī)架本地化), ANY, NO_PREF。在實(shí)際運(yùn)行中我們希望的是大多數(shù)計(jì)算是進(jìn)程本地化或節(jié)點(diǎn)本地化。

    • 調(diào)優(yōu)方式:1. 優(yōu)化算法 2. 數(shù)據(jù)設(shè)置合理的副本數(shù) 3. 將常用的rdd設(shè)置緩存 4. 設(shè)置spark相關(guān)參數(shù)spark.locality.wait,spark.locality.wait.process, spark.locality.wait.node, spark.locality.wait.pack。 在client模式下運(yùn)行,觀察運(yùn)行日志,使得大多數(shù)計(jì)算是PROCESS_LOCAL,同時(shí)application運(yùn)行時(shí)間減少了,才是有效的優(yōu)化。為了提升數(shù)據(jù)計(jì)算本地化級(jí)別而犧牲application運(yùn)行時(shí)間,是不可取得,這樣也會(huì)造成大量資源的閑置和較長(zhǎng)的等待時(shí)間。

  • Executor經(jīng)常被kill掉,出現(xiàn)Container killed by YARN for exceeding memory limits,內(nèi)存被用完導(dǎo)致此類問(wèn)題的發(fā)生:

    • 移除rdd緩存

    • spark.storage.memoryFraction:spark數(shù)據(jù)緩存的的內(nèi)存占比,默認(rèn)0.6,即可以使用executor的60%內(nèi)存持久化數(shù)據(jù)。在緩存達(dá)到臨界值,數(shù)據(jù)可能不能緩存或?qū)懭氲酱疟P。當(dāng)executor經(jīng)常被kill的時(shí)候,應(yīng)該降低該值。

    • spark.yarn.Executor.memoryoverhead:該參數(shù)是在yarn模式下堆外內(nèi)存的調(diào)節(jié),默認(rèn)情況下為是每一個(gè)executor的內(nèi)存大小的10%

  • YARN-Cluster模式下JVM棧內(nèi)存溢出:

    • JVM永久代PermGen設(shè)置 Spark.Driver.extraJavaOptions="-XX:PermSize=128M -XX:MaxPermSize=256M"(PermGen out of Memory error log)

    • 在spark-sql中將復(fù)雜的sql語(yǔ)句簡(jiǎn)化為多個(gè)簡(jiǎn)單的sql進(jìn)行處理(JVM stack overflow)

看完上述內(nèi)容,你們對(duì)如何進(jìn)行spark on yarn集群調(diào)優(yōu)有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

本文名稱:如何進(jìn)行sparkonyarn集群調(diào)優(yōu)
轉(zhuǎn)載來(lái)源:http://bm7419.com/article48/iihjep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)外貿(mào)網(wǎng)站建設(shè)、微信小程序、面包屑導(dǎo)航網(wǎng)站改版、標(biāo)簽優(yōu)化

廣告

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

綿陽(yáng)服務(wù)器托管