我已将 5 节点 spark 集群从 spark-1.5 升级到 spark-1.6(使用 mapWithState 函数)。使用 spark-1.6 后,我得到了一个奇怪的 spark 行为,作业一次没有使用不同节点的多个执行程序,这意味着如果每个节点都有单个工作程序和执行程序,则没有并行处理。我在 spark 独立模式下运行作业。
我观察到与此问题相关的以下几点。
- 如果我使用 spark-1.5 运行相同的作业,那么这将一次使用跨不同节点的多个执行器。
- 在 Spark-1.6 中,如果我增加核心数(spark.cores.max),那么作业将在并行线程中运行,但在同一个执行程序中。
- 在 Spark-1.6 中,如果我在每个节点上增加工作实例的数量,那么作业将并行运行,因为没有工作人员但在同一节点内。
任何人都可以建议,为什么 spark 1.6 不能一次跨不同节点使用多个执行器进行并行处理。您的建议将不胜感激。