Hadoop Yarn - 如何请求固定数量的容器

Hadoop Yarn - how to request fix number of containers

Apache Spark 或 Hadoop Mapreduce 如何请求固定数量的容器?

在Spark yarn-client模式下,可以通过设置配置spark.executor.instances来请求,这与获取到的YARN容器数量直接相关。 Spark 如何将其转换为 Yarn 可以理解的 Yarn 参数?

我知道默认情况下,它可以取决于拆分数和配置值 yarn.scheduler.minimum-allocation-mb, yarn.scheduler.minimum-allocation-vcores.但是 Spark 有能力准确地请求固定数量的容器。任何 AM 怎么能做到这一点?

在Hadoop Map reduce中,map任务的容器数量是根据输入拆分的数量决定的。它基于源文件的大小。对于每个输入拆分,将请求一个地图容器。

默认情况下,每个作业的 Reducer 数量为一个。可以通过将参数传递给 mapreduce.reduce.tasks 来自定义它。 Pig & Hive 有不同的逻辑来决定减速器的数量。 (这也可以定制)。

每个 reducer 将请求一个容器(Reduce 容器,通常比 map 容器大)。

映射器和缩减器的总数将在作业提交期间在作业配置文件中明确定义。

我认为是通过使用 yarn 提供的 AM api。 AM 提供商可以使用 rsrcRequest.setNumContainers(numContainers); http://hadoop.apache.org/docs/r2.5.2/hadoop-yarn/hadoop-yarn-site/WritingYarnApplications.html#Writing_a_simple_Client 在这里,我对其他问题进行了类似的讨论。