我想了解,當從spark-submit提交作業時,我已經用4個節點引發部署的系統如何在火花中分發工作。如果有大量的數據需要操作,我想明確地知道分割的任務有多少個階段,以及有多少個執行者爲這項工作運行。想要了解這是如何決定每個階段。如何在火花中分發任務
1
A
回答
1
很難完全回答這個問題,因爲存在很多不確定因素。
階段數量僅取決於描述的工作流程,其中包括不同類型的映射,縮小,連接等。如果您瞭解它,則基本上可以從代碼中正確讀取它。但最重要的是,這可以幫助您編寫更多的高性能算法,因爲衆所周知,必須避免洗牌。例如,當您進行連接時,它需要洗牌 - 這是一個邊界階段。這很簡單,你必須打印rdd.toDebugString()
,然後看看縮進(看here),因爲縮進是一個洗牌。
但是,執行者的數量完全不同,因爲它取決於分區數量。這就像爲2個分區只需要2執行人,但對於40倍的 - 所有4個,因爲你只有4.但另外的分區數量可能取決於幾個屬性,你可以在提供火花提交:
- spark.default.parallelism參數或
- 數據源使用(FE對HDFS和卡桑德拉是不同的)
這將會是一個很好的保持在所有集羣中核心的忙,但沒有更多的(意味着單個進程只有一個分區),因爲每個分區的處理需要一定的開銷。另一方面,如果數據傾斜,那麼某些內核需要更多時間來處理更大的分區,在這種情況下,它有助於將數據分割到更多分區,以便所有內核都處於大致相同的時間。這有助於同時平衡羣集和吞吐量。
相關問題
- 1. 火花核心與任務併發
- 2. 火花如何確定任務數量?
- 3. 如何在火花
- 4. 如何解決:火花中的大尺寸任務
- 5. 帶火花的任務調度
- 6. 火花任務大小太大
- 7. 爲什麼火花擊殺任務?
- 8. 將火花代碼分配到作業,階段和任務
- 9. 爲什麼我的火花任務有這麼多任務?
- 10. 如何分組並加入火花?
- 11. 如何在火花中配置hbase?
- 12. parTraversable不產生任何火花
- 13. 如何在火花數據框中強制重新分區?
- 14. 火花2到火花1.6
- 15. 如何使火花同時運行工作中的所有任務?
- 16. RDD分區火花Streaming
- 17. 火花Datagrid與拆分列
- 18. 火花java.util.logging.Logger中
- 19. 如何使用火花
- 20. 如何殺死火花應用的火花作業?
- 21. 在火花中分發scikit學習分類的建議方法是什麼?
- 22. 的`take`行動似乎並沒有觸發所有任務的火花
- 23. 火花
- 24. 如何停止在火花textarea的
- 25. 如何在Windows上安裝火花7
- 26. 如何使用火花作業服務器中的NamedDataFrame
- 27. 火花如何在地圖分裂和迭代每個元素
- 28. 獲取在火花
- 29. 火花 - 任務失敗後繼續作業處理
- 30. 殺死一個單一的火花任務
您的應用程序將在Spark上運行的很多方式都可以在spark提交的命令行中進行配置,其中包括執行程序,節點等的數量:http://spark.apache.org/docs/latest/configuration。 HTML –