欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

SparkStreaming性能調(diào)優(yōu)

在開發(fā)Spark Streaming應(yīng)用程序時,要結(jié)合集群中各節(jié)點(diǎn)的配置情況盡可能地提高數(shù)據(jù)處理的實(shí)時性。在調(diào)優(yōu)的過程中,一方面要盡可能利用集群資源來減少每個批處理的時間;另一方面要確保接收到的數(shù)據(jù)能及時處理掉。

站在用戶的角度思考問題,與客戶深入溝通,找到汕頭網(wǎng)站設(shè)計(jì)與汕頭網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋汕頭地區(qū)。


運(yùn)行時間優(yōu)化


  • 設(shè)置合理的批處理時間和窗口大小


Spark Streaming中作業(yè)之間通常存在依賴關(guān)系,后面的作業(yè)必須確保前面的作業(yè)執(zhí)行結(jié)束后才能提交,若前面的作業(yè)的執(zhí)行時間超過了設(shè)置的批處理時間間隔,那么后續(xù)的作業(yè)將無法按時提交執(zhí)行,造成作業(yè)的堵塞。也就是說若想Spark Streaming應(yīng)用程序穩(wěn)定地在集群中運(yùn)行,對于接收到的數(shù)據(jù)必須盡快處理掉。例如若設(shè)定批處理時間為1秒鐘,那么系統(tǒng)每1秒鐘生成一個RDD,如果系統(tǒng)計(jì)算一個RDD的時間大于1秒,那么當(dāng)前的RDD還沒來得及處理,后續(xù)的RDD已經(jīng)提交上來在等待處理了,這就產(chǎn)生了堵塞。因此需要設(shè)置一個合理的批處理時間間隔以確保作業(yè)能夠在這個批處理時間間隔時間內(nèi)結(jié)束。許多實(shí)驗(yàn)數(shù)據(jù)表明,500毫秒對大多Spark Streaming應(yīng)用而言是較好的批處理時間間隔。


類似地,對于窗口操作,滑動時間間隔對于性能也有很大的影響。當(dāng)單批次數(shù)據(jù)計(jì)算代價過高時,可以考慮適當(dāng)增大滑動時間間隔。


對于批處理時間和窗口大小的設(shè)定,并沒有統(tǒng)一的標(biāo)準(zhǔn)。通常是先從一個比較大的批處理時間(10秒左右)開始,然后不斷地使用更小的值進(jìn)行對比測試。如果Spark Streaming用戶界面中顯示的處理時間保持不變,則可以進(jìn)一步設(shè)定更小的值;如果處理時間開始增加,則可能已經(jīng)達(dá)到了應(yīng)用的極限,再減小該值則可能會影響系統(tǒng)的性能。


  • 提高并行度


提高并行度也是一種減少批處理所消耗時間的常見方法。有以下三種方式可以提高并行度。一種方法是增加接收器數(shù)目。如果獲取的數(shù)據(jù)太多,則可能導(dǎo)致單個節(jié)點(diǎn)來不及對數(shù)據(jù)進(jìn)行讀入與分發(fā),使得接收器成為系統(tǒng)瓶頸。這時可以通過創(chuàng)建多個輸入DStream來增加接收器數(shù)目,然后再使用union來把數(shù)據(jù)合并為一個數(shù)據(jù)源。第二種方法是將收到的數(shù)據(jù)顯式地重新分區(qū)。如果接收器數(shù)目無法再增加,可以通過使用DStream.repartition、spark.streaming.blocklnterval等參數(shù)顯式地對Dstream進(jìn)行重新分區(qū)。第三種方法是提高聚合計(jì)算的并行度。對于會導(dǎo)致shuffle的操作,例如reduceByKey、reduceByKeyAndWindow等操作,可通過顯示設(shè)置更高的行度參數(shù)確保更為充分地使用集群資源。


內(nèi)存使用與垃圾回收


  • 控制批處理時間間隔內(nèi)的數(shù)據(jù)量


Spark Streaming會把批處理時間間隔內(nèi)獲取到的所有數(shù)據(jù)存放在Spark內(nèi)部可用的內(nèi)存中。因此必須確保在當(dāng)前節(jié)點(diǎn)上SparkStreaming可用的內(nèi)存容量至少能容下一個批處理時間間隔內(nèi)所有的數(shù)據(jù)。比如一個批處理時間間隔是1秒,但是1秒產(chǎn)生了1GB的數(shù)據(jù),那么要確保當(dāng)前的節(jié)點(diǎn)上至少有可供SparkStreaming使用的1GB內(nèi)存。


  • 及時清理不再使用的數(shù)據(jù)


對于內(nèi)存中處理過的、不再需要的數(shù)據(jù)應(yīng)及時清理,以確保Spark Streaming能夠擁有足夠的內(nèi)存空間可以使用。一種方法是可以通過設(shè)置合理的spark.cleaner.ttl時長來及時清理超時的無用數(shù)據(jù),但該方法應(yīng)慎重使用,以免后續(xù)數(shù)據(jù)在需要時被錯誤清理。另一種方法是將spark.streaming.unpersist設(shè)置為true,系統(tǒng)將自動清理已經(jīng)不需要的RDD。該方法能顯著減少RDD對內(nèi)存的需要,同時潛在地提高GC的性能。此外用戶還可以通過配置參數(shù)streamingContext.remember為數(shù)據(jù)設(shè)置更長的保留時間。


  • 減少序列化與反序列化的負(fù)擔(dān)


SparkStreaming默認(rèn)將接收到的數(shù)據(jù)序列化后放入內(nèi)存,以減少內(nèi)存使用。序列化和反序列化需要更多的CPU資源,因此使用適當(dāng)?shù)男蛄谢ぞ撸ɡ鏚ryo)和自定義的序列化接口可以更高效地使用CPU。除了使用更好的序列化工具外還可以結(jié)合壓縮機(jī)制,通過配置spark.rdd.compress,以CPU的時間開銷來換取內(nèi)存資源,降低GC開銷。

分享題目:SparkStreaming性能調(diào)優(yōu)
URL分享:http://www.chinadenli.net/article2/gpsgoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT標(biāo)簽優(yōu)化軟件開發(fā)用戶體驗(yàn)響應(yīng)式網(wǎng)站網(wǎng)頁設(shè)計(jì)公司

廣告

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

成都app開發(fā)公司