spark中spark reducer maxSizeInFlight 多大合適?

時間 2021-06-05 20:57:15

1樓:青牛

你好。如果作業可用的記憶體資源較為充足的話,可以適當增加這個引數的大小(比如96m),從而減少拉取資料的次數,也就可以減少網路傳輸的次數,進而提公升效能。但是具體要看你要拉取得資料量多大。

2樓:周康

這個引數控制的是如果超過閾值的block需要等所有shuffle請求結束以後再發起。shuffle過程會耗費堆外記憶體,可以根據場景酌情調整。一般也不用太大,太大說明資料來源傾斜嚴重,需要調優了,不然對集群其他作業影響比較大

3樓:

沒有乙個固定的值,很多時候都是根據你的應用場景來不斷地除錯引數,一般的做法是:先試用預設的引數,如果給你報錯了,就加大引數,否則就不用。

資料的拉取的速度不是由單一的引數決定的。乙個經典的問題是spark中是使用大量的small task還是少量的big task,這個得詳細參看《high performance spark》一書中的benchmark。

預設的spark引數只能滿足最基本的要求,因此必須得考慮具體的cluster大小等等眾多的情況。因此SparkConf是最需要關注的地方。spark.

driver.memory: 預設1G,這也是在collect操作時得千萬注意的地方。

spark.executor.memory:

預設1G。

driver的調參,一般情況下,增大driver的記憶體並不會加快計算,因為計算都是分布到executor節點上執行。但是,如果有collect操作,所有的資料都會發給driver,這時就需要加大driver的記憶體並且改變spark.driver.

maxResultSize的設定。所以一般的除錯過程是:先給driver盡可能少的記憶體,這樣executor就有足夠的記憶體,然後等問題出現了,逐漸增加。

executor的調參,是少量的big executor還是大量的small executor?

大量的small executor:這個很容易引起CPU資源的短缺和記憶體不夠用,因為資料也是分布在不同的節點上的。所以如果資源寬鬆的話,記憶體4g起。

大量的big executor:這個很容易造成浪費,5個core對於executor來說就是上限。

M和R區:乙個executor中被劃分為M區和R區,前者用於計算,後者用於cache資料。之間的比例可以調整。

一般來說,如果是一般計算,不用調參,如果是在執行迭代演算法,希望RDD能一直cache到記憶體R區中,那麼可以增大R區的比例。

Spark中的narrow wide dependency如何理解,有什麼作用

Dennis Mikolaj Spark 區分narrow 和 shuffle dependency的目的其實就是確定是否要shuffle。也就是劃分stage。而stage的目的是什麼呢?stage的英文意思是階段,也就是說要等前乙個stage的tasks全部計算完成才能進行下乙個stage。弄明...

spark如何高階學習

xiaohei 根據表述,工作中Spark是作為乙個 大資料分析工具 來使用的,那麼DataFrame的API已經足夠使用了。如果分析邏輯特別複雜或者覺得DF的API效能差需要 優化 DF的API效能差或者甚至沒有提供,比如矩陣轉置計算等 自己要寫個高效能的版本,那麼RDD的API能夠幫助你完成這個...

spark和deeplearning的關係,想做大資料處理分析,是該專注於學spark還是深度學習呢?

這得看題主將來是想找更偏重演算法還是更偏重系統開發的工作?當然兩者都擅長是最好了,但是Spark好像不太適合deep learning,題主可以嘗試一下別的框架,例如tensorflow,caffe。ps,我覺得你應該聽你導師的,逃! 沒啥關係。Spark只是乙個框架而已,在上面跑什麼都可以。把Sp...