【Spark調優】Broadcast廣播變量


【業務場景】      

  在Spark的統計開發過程中,肯定會遇到類似小維表join大業務表的場景,或者需要在算子函數中使用外部變量的場景(尤其是大變量,比如100M以上的大集合),那么此時應該使用Spark的廣播(Broadcast)功能來提升性能。

 

【原理說明】      

  在算子函數中使用到外部變量或兩表join時,默認情況下,Spark會將該變量或小維表復制多個副本,通過網絡傳輸到task中,此時每個task都有一個變量副本。如果變量本身比較大的話(比如100M,甚至1G),那么大量的變量副本在網絡中傳輸的性能開銷,以及在各個節點的Executor中占用過多內存導致的頻繁GC,都會極大地影響性能。

 

【優化方案】

      因此對於上述情況,如果使用的外部變量比較大,建議使用Spark的廣播功能,對該變量進行廣播。廣播后的變量,會保證每個Executor的內存中,只駐留一份變量副本,而Executor中的相關所有task執行時,可以共享該Executor中的這一份變量副本。可以大大減少變量副本的數量,從而減少網絡傳輸的性能開銷,並減少對Executor內存的占用開銷,降低GC的頻率。

 

  我的代碼實踐:https://github.com/wwcom614/Spark

 

  下一篇:【Spark調優】數據傾斜及排查

  上一篇:【Spark調優】提交job資源參數調優

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM