sparkStreaming程序的的部署、調(diào)優(yōu)-創(chuàng)新互聯(lián)

(1)部署

部署方式:spark standalone集群、yarn集群、meoss集群...
driver的HA:如果希望driver程序在失敗之后自動(dòng)重啟,那么需要在程序中使用getOrcreate方法重構(gòu)streamingContext對象,以及在spark-submit中添加參數(shù)。
Checkpoint目錄的設(shè)置:如果程序使用到checkpoint目錄,就必須配置一個(gè)hdfs兼容的文件系統(tǒng)作為checkpoint目錄,因?yàn)槌绦蚴欠植际降?,不能將checkpoint單獨(dú)的設(shè)置在某一個(gè)節(jié)點(diǎn)
接收數(shù)據(jù)的方式: Receiver和direct
Receiver方式:需要給executor分配足夠的資源,因?yàn)閞eceiver接受的數(shù)據(jù)時(shí)存儲在executor的內(nèi)存中,尤其是在做window操作時(shí),必須保證有足夠的內(nèi)存存儲相應(yīng)時(shí)間內(nèi)的所有數(shù)據(jù)。 spark.streaming.receiver.writeAheadLog.enable參數(shù)設(shè)置為true,用于開啟receive方式的WAL,保證數(shù)據(jù)不丟失。
direct方式:對于kafka direct方式,引入了backpressure機(jī)制,從而不需要設(shè)置spark.streaming.kafka.maxRatePerPartition,spark可以自動(dòng)的估計(jì)receive最合理的接收速度,并根據(jù)情況動(dòng)態(tài)調(diào)整,只需要設(shè)置:spark.streaming.backpressure.enabled設(shè)置為true即可

創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。10多年品質(zhì),值得信賴!

(2)調(diào)優(yōu)

  • 設(shè)置合理的CPU資源
    • 在streaming程序中,CPU資源的使用可以分成兩大類用于接收數(shù)據(jù)和用于處理數(shù)據(jù),我們需要設(shè)置足夠的CPU資源,使得有足夠的CPU資源用于接收數(shù)據(jù)和處理數(shù)據(jù),這樣才能及時(shí)高效地處理數(shù)據(jù)。
  • 數(shù)據(jù)接收的性能優(yōu)化
    • 通過網(wǎng)絡(luò)接收數(shù)據(jù)時(shí),會將數(shù)據(jù)反序列化,并存儲在spark的內(nèi)存中。
    • 數(shù)據(jù)的并行化接收,就是啟動(dòng)多個(gè)receiver,設(shè)置多個(gè)DStream輸入源
    • 調(diào)節(jié)block interval參數(shù),對于大多數(shù)的receiver來說,在將接收的數(shù)據(jù)保存的時(shí)候,都會做數(shù)據(jù)切分成一個(gè)一個(gè)的block,而block的個(gè)數(shù)決定了每一個(gè)batch的分區(qū)個(gè)數(shù),而分區(qū)個(gè)數(shù)則決定了transformation啟動(dòng)的task的個(gè)數(shù):batch interval / block interval(spark.streaming.blockInterval,默認(rèn)為200ms,最小值為50ms)
  • Spark數(shù)據(jù)處理并行度調(diào)優(yōu)
    • 如果在計(jì)算的任何stage中使用的并行task的數(shù)量沒有足夠多,那么集群的資源不能得到很好的利用,可以使用spark.default.parallelism,調(diào)整默認(rèn)的并行的task個(gè)數(shù),也可以在調(diào)用有shuffle的算子的時(shí)候手動(dòng)指定numPar個(gè)數(shù),調(diào)整task的并行度。
  • Spark的任務(wù)調(diào)優(yōu)
    如果每秒鐘啟動(dòng)的task過于多,那么發(fā)送這些task去worker節(jié)點(diǎn)上的executor的性能開銷就會比較大,此時(shí)延遲就會變得高了。
    • Task的序列化:使用Kryo序列化機(jī)制來序列化task,減少task的大小,從而減少發(fā)送到executor的時(shí)間
    • 執(zhí)行模式,使用spark的自帶的standalone運(yùn)行spark程序,可以達(dá)到更少的task啟動(dòng)時(shí)間
  • 序列化的調(diào)優(yōu)
    • 輸入數(shù)據(jù),在receiver接收的數(shù)據(jù)時(shí)存儲在executor內(nèi)存中的,需要保證數(shù)據(jù)的0丟失從而序列化
    • 流式計(jì)算操作生成的持久化的RDD:流式計(jì)算操作生成的持久化的RDD,以及需要被窗口操作的數(shù)據(jù)都需要持久化
  • batch interval調(diào)優(yōu)
    • 對于流式計(jì)算而言,為了使其可以穩(wěn)定運(yùn)行以及高效運(yùn)行,最重要的就是對于batch生成之后,就盡可能快的處理掉。 在構(gòu)建StreamingContext的時(shí)候,需要我們傳進(jìn)一個(gè)參數(shù),用于設(shè)置Spark Streaming批處理的時(shí)間間隔。Spark會每隔batchDuration時(shí)間去提交一次Job,如果你的Job處理的時(shí)間超過了batchDuration的設(shè)置,那么會導(dǎo)致后面的作業(yè)無法按時(shí)提交,隨著時(shí)間的推移,越來越多的作業(yè)被拖延,最后導(dǎo)致整個(gè)Streaming作業(yè)被阻塞,這就間接地導(dǎo)致無法實(shí)時(shí)處理數(shù)據(jù),最終導(dǎo)致程序崩潰。所以針對自己的業(yè)務(wù),設(shè)置批處理時(shí)間尤為重要。
  • Spark內(nèi)存調(diào)優(yōu)
    • DStream的持久化,將大量的數(shù)據(jù)持久化為byte數(shù)據(jù),減少了數(shù)據(jù)序列化話后的對象,降低了GC的頻率。當(dāng)然為了進(jìn)一步的降低內(nèi)存的使用率,可以使用壓縮:spark.rdd.compress這是為true即可
    • 清理舊數(shù)據(jù),將保存在內(nèi)存中已經(jīng)被使用過的數(shù)據(jù)進(jìn)行刪除,釋放內(nèi)存。以window操作為例,如果窗口的時(shí)間為10分鐘,spark中會保持這10分鐘的數(shù)據(jù),之后在處理完成之后,就會將數(shù)據(jù)進(jìn)行清除

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章標(biāo)題:sparkStreaming程序的的部署、調(diào)優(yōu)-創(chuàng)新互聯(lián)
文章分享:http://muchs.cn/article40/djjoeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、服務(wù)器托管、品牌網(wǎng)站設(shè)計(jì)手機(jī)網(wǎng)站建設(shè)、ChatGPT面包屑導(dǎo)航

廣告

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

綿陽服務(wù)器托管