Hadoop JobHistoryServer中映射时间或缩短时间的含义

Hadoop JobHistoryServer中映射时间或缩短时间的含义,hadoop,Hadoop,我想知道下图中符号的确切含义。此图片来自job history serverweb用户界面。我当然知道逝去的意义,但我不确定其他事情。我在哪里可以找到这些的明确定义?还是有人知道这些的含义 我想知道的是分别映射时间、减少时间、洗牌时间和合并时间。这四个时间的总和应该与经过的时间非常相似(或相等)。但是“平均”这个关键词让我感到困惑 共有396个map和1个reduce。您可能已经知道,MapReduce作业分为三个阶段: Map是第一阶段,每个Map任务都有一个输入分割,这是总输入数据的一小

我想知道下图中符号的确切含义。此图片来自
job history server
web用户界面。我当然知道逝去的意义,但我不确定其他事情。我在哪里可以找到这些的明确定义?还是有人知道这些的含义

我想知道的是分别映射时间、减少时间、洗牌时间和合并时间。这四个时间的总和应该与经过的时间非常相似(或相等)。但是“平均”这个关键词让我感到困惑


共有396个map和1个reduce。

您可能已经知道,MapReduce作业分为三个阶段:

  • Map是第一阶段,每个Map任务都有一个输入分割,这是总输入数据的一小部分。Map任务处理来自输入拆分和输出中间数据的数据,这些数据需要转到还原器

  • Shuffle阶段是下一步,映射任务生成的中间数据被定向到正确的还原器。还原程序通常处理映射任务生成的密钥总数的一个子集。洗牌阶段将密钥分配给还原器,并将与密钥相关的所有值发送给分配的还原器。排序(或合并)也是该阶段的一部分,在该阶段中,对给定键的值进行排序并发送到减速机。正如您可能意识到的那样,洗牌阶段涉及从Map->Reduce任务跨网络传输数据

  • Reduce是MapReduce作业的最后一步。Reduce任务处理与键相关的所有值,并将其结果输出到所需位置(HDFS/Hive/Hbase)

说到平均时间,你说有396个地图任务。每个映射任务本质上都在执行完全相同的处理任务,但处理的数据块不同。因此,平均映射时间基本上是所有396个映射任务完成所需时间的平均值

Average Map Time=所有Map任务占用的总时间/Map任务数

同样地

Average Reduce Time=所有Reduce任务花费的总时间/Reduce任务数

现在,为什么平均时间很重要?这是因为,大多数(如果不是所有的话)map任务和reduce任务将并行运行(取决于集群容量/每个节点的插槽数量等)。因此,计算所有map任务和reduce任务的平均时间将使您能够很好地了解map或reduce阶段作为一个整体的完成时间

从你的截图中观察到的另一个现象是你的洗牌阶段花了40分钟。这可能有几个原因

  • 您有396个映射任务,每个任务生成中间数据。洗牌阶段必须通过网络将所有这些数据传递给一个reducer,从而导致大量网络流量&因此增加了传输时间。也许您可以通过增加减速器的数量来优化性能

  • 网络本身的带宽非常低,无法有效地处理大量数据传输。在这种情况下,考虑部署一个组合器,这将有效地减少通过网络在地图和还原阶段之间流动的数据量。p>
  • 还存在一些隐藏的执行成本,如作业设置时间、作业跟踪器联系任务跟踪器和分配映射/减少任务所需的时间、从节点向作业跟踪器发送心跳信号所需的时间、NameNode分配存储块和创建输入拆分所需的时间等,这些都计入总运行时间


    希望这有帮助。

    也许
    为您设置hive.hadoop.supports.splittable.combineinputformat=true

    谢谢你的回答,它非常有用。我有一个类似的问题,洗牌阶段持续时间太长,并使用单一的减速器。请您确认我可以相信您的答案,即问题是由于还原器数量较少造成的?是否确实可以说,发出的贴图键数量越多,洗牌时间越长?例如,发射100K关键点的映射器与发射10k关键点的映射器相比,后者的映射器速度会快X%?