Spark在具有更大内存的节点中设置更多节点工作器实例

时间:2016-06-02 07:20:38

标签: python scala apache-spark

在我的Spark(1.6.1)群集中,某些节点的物理内存比其他节点多。但是在executor.memory中,我必须设置一个固定值,该值同样适用于每个节点,因此也适用于每个节点的工作者。

某些节点的内存是其两倍,但无法全部使用。建议使用所有可用内存的工作here,其中使用SPARK_WORKER_INSTANCES在具有更多内存的节点中增加节点工作器的数量。

如何为每个节点配置工作线程实例?

1 个答案:

答案 0 :(得分:1)

我认为您正在尝试做一些不可行的事情,或者至少它不是您应该思考的方式。在创建Spark应用程序时,您将创建执行程序,它们是您的工作者,基本上是JVM。它们与工作节点的数量和大小无关。例如。如果你问3个具有4G内存的执行程序并且你有3个工作节点和16G内存,那么你的所有执行程序都可以在同一个节点上实例化,你无法控制它。

在你的情况下,如果你有一个128G的工作节点和一个32G内存的工作节点,你可以简单地用8G内存实例化20个执行器,你就可以在小机器上有4个执行器,36在另一。通过这种方式,您可以利用所有资源。