在单独的机器上运行火花驱动器

时间:2016-10-31 12:29:34

标签: apache-spark

目前我在群集模式(Standalone cluster)中使用Spark 2.0.0,并使用以下群集配置:

工人:4 使用的核心数:32总计,32使用 使用的内存:总共54.7 GB,使用42.0 GB

我有4个奴隶(工人)和1个主机。 Spark集群有3个主要部分 - Master,Driver,Workers(ref

现在我的问题是驱动程序正在其中一个工作节点启动,这阻止了我使用工作节点的全部容量(RAM方式)。例如,如果我用驱动程序的2g内存运行我的spark作业,那么每台机器中只有~13gb的内存用于执行程序内存(假设每台机器的总RAM为15gb)。现在我认为有两种方法可以解决这个问题:

1)在主机上运行驱动程序,这样我可以指定完整的15GB RAM作为执行程序内存

2)明确指定驱动程序计算机(其中一个工作程序节点),并相应地为此计算机分配内存到驱动程序和执行程序。对于其余的工作节点,我可以指定最大执行程序内存。

如何实现第1点或第2点?或者甚至有可能?
任何指向它的人都很感激。

1 个答案:

答案 0 :(得分:1)

要在主服务器上运行驱动程序,请从主服务器运行spark-submit并指定--deploy-mode clientLaunching applications with spark-submit

使用--deploy-mode cluster时,无法指定驱动程序将运行的工作程序。但是,如果使用群集管理器(如yarn或mesos),则可以在worker上运行驱动程序并实现最大的群集利用率。