我想了解,当从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 –