hadoop 版本 2 (YARN) 执行场景结果?
hadoop version 2 (YARN) execution scenario outcome?
假设我们的 YARN 系统中有 5 个容器。我们有两份工作要 运行。 Job1 有 8 个 Map 任务和 2 个 Reduce 任务。 Job2 有 4 个 Map 和 1 个 reduce 任务。
YARN 系统将如何决定 运行 首先执行哪些任务?
以及有多少映射器和缩减器将同时启动?
YARN 系统将如何决定 运行 先 "tasks" 哪个?
这是一个地图减少工作。所以map任务先执行。现在,作业的执行顺序(我猜这是你真正的问题)取决于所使用的调度程序。 fifo 使用先进先出——这在生产环境中不再使用,因为我们有容量和公平调度程序等选项。这又是一个广泛的话题。 https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/FairScheduler.html https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html 执行还取决于提交作业时可用的集群资源。
将同时启动多少个 mapper 和 reducer?
Reducers(至少是 reduce 方法)只会在之后执行
所有的地图任务都完成了。您提到了容器的数量,但没有提到节点的数量。
并发执行取决于您分配给 map 和 reduce 任务的内存。查看这些属性:yarn.scheduler.minimum-allocation-mb、yarn.scheduler.maximum-allocation-mb、yarn.nodemanager.resource.memory-mb、mapreduce.map.memory.mb、mapreduce.reduce.memory.mb.
更新 1: Shuffle 和 sort 将在其中一个地图任务完成时开始。这意味着当其他 map 任务仍在执行时,分区(和组合数据,如果组合器是 运行)映射器输出将被传输到 reducer。但是只有在这个传输过程完成后才会调用 reduce 方法(对于完成后的所有 map 任务)。是的,到那时容器分配就会发生。
假设我们的 YARN 系统中有 5 个容器。我们有两份工作要 运行。 Job1 有 8 个 Map 任务和 2 个 Reduce 任务。 Job2 有 4 个 Map 和 1 个 reduce 任务。 YARN 系统将如何决定 运行 首先执行哪些任务? 以及有多少映射器和缩减器将同时启动?
YARN 系统将如何决定 运行 先 "tasks" 哪个? 这是一个地图减少工作。所以map任务先执行。现在,作业的执行顺序(我猜这是你真正的问题)取决于所使用的调度程序。 fifo 使用先进先出——这在生产环境中不再使用,因为我们有容量和公平调度程序等选项。这又是一个广泛的话题。 https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/FairScheduler.html https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html 执行还取决于提交作业时可用的集群资源。
将同时启动多少个 mapper 和 reducer? Reducers(至少是 reduce 方法)只会在之后执行 所有的地图任务都完成了。您提到了容器的数量,但没有提到节点的数量。 并发执行取决于您分配给 map 和 reduce 任务的内存。查看这些属性:yarn.scheduler.minimum-allocation-mb、yarn.scheduler.maximum-allocation-mb、yarn.nodemanager.resource.memory-mb、mapreduce.map.memory.mb、mapreduce.reduce.memory.mb.
更新 1: Shuffle 和 sort 将在其中一个地图任务完成时开始。这意味着当其他 map 任务仍在执行时,分区(和组合数据,如果组合器是 运行)映射器输出将被传输到 reducer。但是只有在这个传输过程完成后才会调用 reduce 方法(对于完成后的所有 map 任务)。是的,到那时容器分配就会发生。