计算具有多个spark客户端的纱线群集的yarn.nodemanager.resource.cpu-vcores

时间:2016-11-10 21:43:04

标签: hadoop apache-spark yarn

如果我有3个火花应用都使用相同的纱线群,我应该如何设置

yarn.nodemanager.resource.cpu-vcores

在3个yarn-site.xml中的每一个?

(每个spark应用程序都需要在类路径上拥有它自己的yarn-site.xml)

这个值在客户端yarn-site.xml中是否重要?

若是:

假设群集有16个核心。

每个yarn-site.xml中的值是否应为5(总共15个为系统进程留下1个核心)?或者我应该将每一个设置为15?

(注意:Cloudera表示应该留下一个核心用于系统进程:http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/但是,他们没有详细介绍如何在同一个集群中使用多个客户端。

假设Spark以yarn为主,并以集群模式运行。

1 个答案:

答案 0 :(得分:1)

您是在谈论每个YARN节点管理器的服务器端配置吗?如果是这样,通常会将其配置为略小于群集中每个节点上的CPU核心(或虚拟核心,如果您具有超线程)。因此,如果您有4个节点,每个节点有4个核心,您可以将每个节点3个专用于YARN节点管理器,并且您的群集将总共有12个虚拟CPU。

然后在向集群提交Spark作业(例如,请参阅http://spark.apache.org/docs/latest/submitting-applications.html)时请求所需的资源,YARN将尝试满足该请求。如果无法满足,您的Spark作业(或应用程序)将排队或最终会超时。

您可以在YARN中配置不同的资源池,以保证此类池的特定内存/ CPU资源量,但这有点高级。

如果以群集模式提交Spark应用程序,则必须考虑Spark驱动程序将在群集节点上运行,而不是在本地计算机(提交它的人)上运行。因此,它将需要至少1个虚拟CPU。

希望能为你澄清一些事情。