2016-11-10 76 views
2

纱线集群如果我有3级火花的应用都使用相同的纱线集群,我应该怎么设置计算yarn.nodemanager.resource.cpu-vcores与多火花客户

yarn.nodemanager.resource.cpu-vcores

在每个3纱-site.xml?

(每个火花应用程序需要有它的类路径上自己的纱线的site.xml)

这是否值,即使在客户端纱的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/然而,他们没有进入使用多个客户端对同一集群的细节)

假设星火与纱线作为主运行,并以集群模式运行。

回答

1

您是否在谈论每个YARN节点管理器的服务器端配置?如果是这样,那么通常将其配置为比集群中每个节点上的CPU核心数量(如果您拥有超线程的虚拟核心数量)少一点。因此,如果您有4个节点,每个节点4个核心,则可以将每个节点的3个节点专用于YARN节点管理器,并且您的群集总共将有12个虚拟CPU。

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

可以在YARN配置不同的资源池内存/ CPU资源的具体数量保证这样一个游泳池,但更先进一点。

如果您提交在集群模式下你的星火应用程序,你必须要考虑的是,星火司机将一个群集节点上运行,而不是本地计算机(即一个提交它)。因此它至少需要1个虚拟CPU。

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

+0

Spark使用yarn-site.xml进行客户端配置。我有不同的应用程序提交了多个spark作业,每个应用程序都有自己的客户端yarn-site.xml。 – jhnclvr

+1

那么,在这种情况下,如果您使用一个应用程序请求集群的所有资源,那么下一个必须排队等待第一个完成。 – PermaFrost

+0

我唯一担心的是这个值在客户端被忽略,并且yarn.nodemanager.resource.cpu-vcores的服务器端yarn-site.xml值是唯一重要的值。我不会有一个集群再次测试一段时间来确认这种或那种方式,并且博客文章不清楚。 – jhnclvr