在apache spark中跨多个worker运行单个作业

时间:2014-07-10 09:17:03

标签: scala apache-spark

我试图了解Spark如何跨多个工作人员分割单个作业(使用sbt包构建的scala文件,并使用spark-submit命令运行jar)。

例如:我有两个工人(每个512MB内存)。我提交一份工作,它只分配给一个工人(如果驱动程序内存小于工作程序内存)。如果驱动程序内存超过工作程序内存,则不会将其分配给任何工作程序(即使两个工作程序的组合内存高于驱动程序内存)并转到已提交状态。只有当群集中具有所需内存的工作人员可用时,此作业才会进入运行状态。

我想知道一个工作是否可以分散在多个工作人员中,并且可以并行运行。如果是这样,任何人都可以帮助我完成相关的具体步骤。

注意:scala程序需要大量的jvm内存,因为我会使用大型数组缓冲区,因此尝试将作业分成多个工作程序

提前致谢!!

2 个答案:

答案 0 :(得分:0)

请检查您要使用的阵列是否已并行化。然后当你对它做一些动作时,它应该在节点之间并行工作。

查看此页面以获取参考:http://spark.apache.org/docs/0.9.1/scala-programming-guide.html

答案 1 :(得分:0)

确保您的RDD有多个分区(rdd.partitions.size)。确保有多个执行程序连接到驱动程序(http://localhost:4040/executors/)。

如果满足这两个要求,您的工作应该并行运行多个执行程序。如果没有,请在您的问题中包含代码和日志。