Amazon EMR在奴隶

时间:2017-07-12 10:05:15

标签: yarn amazon-emr

我有一种奇怪的行为,纱线无法正确分配所有容器。 我将maximizeResourceAllocation设置为true,如果我启动一个m4.4xlarge从属实例来请求每个执行器容器从纱线中获取所有32个核心,它会尝试。 但是,对于一个容器来说失败了,因为applicationmaster主进程使用了​​1个核心。

1个容器1vcore用于主进程 32核容器执行器1 32核容器执行器2 32芯容器执行器3失败,因为纱线只剩下31个芯子。

我的Step应该在客户端模式下执行。它与Zeppelin实例相同。

HadoopJarStepConfig sparkStepConf = new HadoopJarStepConfig()
    .withJar("command-runner.jar")
    .withArgs("spark-submit",
            "--class", ".....",
            "--deploy-mode", "client",
            "/home/hadoop/jars/.....jar");

我使用引导步骤将jar放入/ home / hadoop / jars,因为如果你想使用s3路径,那么只允许部署集群,这会阻止我的一个执行者使用sparkContext进程。

所有这些意味着如果我只有一个奴隶,根本没有任何事情发生。如果我有3,1不做任何工作。这是浪费钱。 理论上我可以计算执行器核心 - 1并强制设置火花提交。但这应该有效。 如何告诉纱线将这个applicationMaster 1核心流程放在master上或不创建它,或启动具有不同核心数的执行程序? 我只使用1-4个实例并且有效地坐着空闲是非常好的。

0 个答案:

没有答案