經驗|如何設置Spark資源


640?wx_fmt=png

經常有人在微信群里問浪尖,到底應該如何配置yarn集群的資源,如何配置spark executor數目,內存及cpu。今天浪尖在這里大致聊聊這幾個問題。

640?wx_fmt=png

 

640?wx_fmt=png資源調優

 

Spark和YARN管理的兩個主要資源是CPU和內存。磁盤和網絡I / O也會影響Spark性能,但Spark和YARN都不會主動管理它們。

應用程序中的每個Spark executor都具有相同的固定數量的核心和相同的固定堆大小。使用--executor-cores命令行參數或通過設置spark.executor.cores屬性指定核心數。同樣,使用--executor-memory參數或spark.executor.memory屬性配置堆大小。 cores屬性控制執行程序可以運行的並發任務數。例如,為每個執行程序設置--executor-cores 5,同時運行最多五個任務。 memory屬性控制Spark可以緩存的數據量,以及用於分組,聚合和join的shuffle數據結構的內存的最大大小。

還要考慮Spark請求的資源如何適應YARN可用的資源。相關的YARN屬性是:

申請五個executor核心意思就是向YARN請求五個核心。 YARN請求的內存更復雜,原因有兩個:

下圖(不按默認值縮放)顯示Spark和YARN中內存屬性的層次結構:

640?wx_fmt=png

 

調整Spark executor的內存大小時,請記住以下幾點:

 

640?wx_fmt=png資源調優示例

假設一個集群有六台機器運行nodemanager,每個主機配備16個內核和64 GB內存。

NodeManager容量yarn.nodemanager.resource.memory-mb和yarn.nodemanager.resource.cpu-vcores應分別設置為63 * 1024=64512(兆字節)和15。避免將100%的資源分配給YARN容器,因為主機需要一些資源來運行操作系統和Hadoop守護程序。在這種情況下,中老年品牌為這些系統進程留下一個GB和一個核心,對於有hbase共存的需要預留更多的內存和cpu。

可以考慮使用--num-executors 6 --executor-cores 15 --executor-memory 63G。但是,這種方法不行的:

相反,使用--num-executors 17 --executor-cores 5 --executor-memory 19G:

 

其實,資源配置調優全靠經驗和自己對集群,分布式,數據量,業務及自己代碼的理解,然后多加測試,這樣形成自己的經驗認知。

 

希望對大家有幫助。

 

更多大數據經驗,技巧,案例,可以加入浪尖知識星球。

 

[完]

 

推薦閱讀:

戳破 | hive on spark 調優點

關於Spark Streaming感知kafka動態分區的問題

 

640?wx_fmt=jpeg


文章來源:https://blog.csdn.net/rlnLo2pNEfx9c/article/details/81844218


免責聲明!

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



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