2016-07-07 56 views
3

这里是Hadoop的新手。当作业以超级模式运行时,ApplicationMaster不会从ResourceManager请求容器。相反,运行在单个节点上的AM只是在其自己的进程上执行整个作业。这是有利的,因为它减少了必须处理RM的开销。Hadoop中超级模式的用途是什么?

我不明白:如果一个工作足够小,可以在一个节点上合理的时间内完成,那么首先提交MapReduce作业有什么意义? MapReduce允许在多台机器上并行执行计算,从而加快了计算速度。如果我们只打算使用一个节点,那么为什么不写一个常规程序并在我们的本地机器上运行呢?

回答

1

也许有些原因可能是:

  1. 你有一个可重复使用过程中如果需要的话,可以扩大,在这种情况下,它可能会开始使用更多的插槽,而不是在超级模式下运行。
  2. 保持简单。不太可能你会写这一份工作,通常你会有许多处理不同数量的数据。为什么要改变事情并选择特定的工作来使用不同的方法来处理数据。
  3. 在MapReduce之外运行的程​​序可能会失去框架提供的其他一些好处,例如故障恢复。
0

我在Apache Crunch中遇到的一个特殊情况是,一个管道由多个由各种DoFn(其中写入核心逻辑)旋转的MapReduce(MR)作业组成,每个DoFn结果映射到一个Map和/或减少通常存储在不可变分布式对象(PTable/PCollection)中的输出的作业,这种情况下,基于这些DoFn在PTable/PCollection上运行的数据量,框架决定是否在超级管道中运行每个MR作业或正常模式。所以,当我们看看这条管线的最终工作计数器时,它可能是超级和/或普通磁共振工作的混合体。

考虑M/R作业以增量模式和满负载模式运行的另一种情况,其中相同的逻辑可能由较少的数据提供,这些数据可以由最少数量的Mappers和一个Reducer处理,或者可以用满加载需要大量映射器和还原器进行处理的历史数据,所以基本上逻辑保持不变,但输入分裂的数据和数量会发生变化,在这种情况下,您不希望移入和移出Hadoop群集来处理基于数据的数据在规模上让框架决定模式(超常或正常)。

相关问题