如果我有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为主,并以集群模式运行。
答案 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。
希望能为你澄清一些事情。