3
我有一臺8臺機器,256個內核,每臺機器180Gb RAM的火花集羣。我已經啓動了32個執行程序,每個32個核心和40Gb ram。爲什麼我只能看到200個階段的任務?
我想優化一個複雜的應用程序,我注意到很多階段都有200個任務。這在我看來似乎是次優的。我已經嘗試將參數spark.default.parallelism設置爲1024,但它似乎沒有效果。
我運行spark 2.0.1,在獨立模式下,我的驅動程序託管在pycharm調試會話中運行的工作站上。我在設置spark.default.parallelism:
- 火花defaults.conf工作站上呼叫
- 火花defaults.conf上的集羣火花/ conf目錄
- 的基礎上繼續SparkSession我 司機
這是呼叫
spark = SparkSession \
.builder \
.master("spark://stcpgrnlp06p.options-it.com:7087") \
.appName(__SPARK_APP_NAME__) \
.config("spark.default.parallelism",numOfCores) \
.getOrCreate()
我已經重新啓動該exe自從做這些改變以來。
如果我的理解正確,在一個階段只有200個任務意味着我的集羣沒有被充分利用?
當我觀看使用htop的機器時,我可以看到我沒有獲得完整的CPU使用率。也許在同一臺機器上,但不是全部。
我是否需要在我的數據框上調用.rdd.repartition(1024)?在任何地方似乎都是一種負擔。
嘗試設置在此配置:集(「spark.sql.shuffle.partitions」,「8」) 其中8(您想使[數減少任務星火] –
可能的複製分區的數量http://stackoverflow.com/questions/33297689/number-reduce-tasks-spark) – sgvd
但是,你爲什麼只想用8?據我所知,它應該等於或高於同時運行的任務數量。 –