我在Amazon Elastic Map Reduce(EMR)上运行Apache Spark上的工作.目前我正在运行emr-4.1.0,其中包括Amazon Hadoop 2.6.0和Spark 1.5.0.
当我开始工作时,YARN正确地将所有工作节点分配给spark作业(当然,一个用于驱动程序).
我将魔术"maximizeResourceAllocation"属性设置为"true",并将spark属性"spark.dynamicAllocation.enabled"也设置为"true".
但是,如果通过将节点添加到工作计算机的CORE池来调整emr集群的大小,则YARN仅会将一些新节点添加到spark作业.
例如,今天早上我有一个使用26个节点的工作(m3.2xlarge,如果这很重要) - 1个用于驱动程序,25个执行程序.我想加快工作,所以我尝试添加8个节点.YARN已经获取了所有新节点,但只将其中一个分配给了Spark作业.Spark成功地接收了新节点,并将其用作执行器,但我的问题是为什么YARN让其他7个节点闲置?
由于显而易见的原因,这很烦人 - 即使它们没有被使用,我也必须为资源付费,而我的工作根本没有加速!
有人知道YARN如何决定何时添加节点来运行火花作业?什么变量发挥作用?记忆?V-核心?什么?
提前致谢!