2016-06-16 82 views
0

time ../bin/spark-submit --master yarn --deploy-mode cluster --driver-memory 2g --executor-memory 3G --num-executors 100 /var/tmp/learning/Movie-Similarities-1m-hdfs.py 260星火可調專門執行內存

了:6m5.293s

time ../bin/spark-submit --master yarn --deploy-mode cluster --driver-memory 2g --executor-memory 2G --num-executors 100 /var/tmp/learning/Movie-Similarities-1m-hdfs.py 260

了:5m46.234s

time ../bin/spark-submit --master yarn --deploy-mode cluster --driver-memory 3g --executor-memory 4G --num-executors 100 /var/tmp/learning/Movie-Similarities-1m-hdfs.py 260​

了:9m35 .313s

我知道我(有意)超額訂購了num-executors,那只是爲了充分利用集羣。

對這些結果有何看法?

+0

你跑了多少次才能得到結果? – giaosudau

回答

0

對這些結果有何看法?

與更少的執行器(內存更多)相比,您的代碼運行速度更快,更多的執行器(內存更少)。通常會有一個最佳平衡,這取決於工作流程和羣集的硬件。真正找到這個最佳點的唯一方法是通過試驗和錯誤。

也就是說,我通常發現更少的執行者擁有更多的資源,通常表現更好。你沒有試圖控制的一件事是執行者將使用的CPU內核的數量。爲了啓動執行器,需要有足夠的可用內存和足夠的CPU內核。如果你的兩個測試都是內存綁定的(例如,資源管理器在耗盡內核之前耗盡內存),那麼2G執行器測試將使用兩倍於4G測試的CPU內核。如果兩個測試都是CPU核心綁定,那麼4G測試將利用2G測試的兩倍內存。長話短說,值得考慮每個執行者獲得的核心數量。我創建了一個spreadsheet,它可以幫助您管理這些折衷。