我想知道下图中符号的确切含义。这张照片来自job history server
网页用户界面。我当然知道Elapsed的意思,但我不确定其他事情。我在哪里可以找到明确的定义?或者有谁知道那些意义?
我想知道的是地图时间,减少时间,随机播放时间和合并时间。并且四个时间的总和应该与经过的时间非常相似(或相等)。但是' Average'关键字让我感到困惑。
有396个地图,1个减少。
答案 0 :(得分:6)
您可能已经知道,MapReduce作业分为三个阶段:
Map 是第一阶段,每个Map任务都提供一个输入分割,这是总输入数据的一小部分。 Map任务处理来自输入拆分和数据的数据。输出需要去减速器的中间数据。
随机阶段是下一步,其中由Map任务生成的中间数据将定向到正确的Reducer。 Reducers通常处理Map任务生成的密钥总数的子集。 Shuffle阶段将键分配给reducer&将与键相关的所有值发送到指定的reducer。排序(或合并)也是此阶段的一部分,其中给定键的值被排序并发送到reducer。正如您可能意识到的那样,混洗阶段涉及通过网络从数据传输数据 - >减少任务。
缩小是MapReduce作业的最后一步。 Reduce任务处理与密钥和密钥相关的所有值。将结果输出到所需位置(HDFS / Hive / Hbase)。
现在进入平均时间,你说有396个地图任务。每个Map任务基本上都在完成相同的处理工作,但是在不同的数据块上。因此,平均地图时间基本上是所有396个地图任务完成所花费的时间的平均值。
Average Map Time = Total time taken by all Map tasks/ Number of Map Tasks
同样,
Average Reduce Time = Total time taken by all Reduce tasks/Number of Reduce tasks
现在,为什么平均时间显着?这是因为,大多数(如果不是全部)你的地图任务和reduce任务将并行运行(取决于您的群集容量/每个节点的插槽数等)。因此,计算所有地图任务的平均时间&减少任务将使您能够很好地了解Map或Reduce阶段的完成时间。
您的屏幕截图中的另一个观察结果是您的Shuffle阶段需要40分钟。这可能有几个原因。
您有396个地图任务,每个任务都会生成中间数据。洗牌阶段必须将所有这些数据通过网络传递到仅1个减速器,从而导致大量网络流量和因此增加了转移时间。也许您可以通过增加减速器的数量来优化性能。
网络本身带宽非常低,无法有效处理大量数据传输。在这种情况下,请考虑部署一个组合器,它将有效地减少在地图和减少阶段之间流经网络的数据量。
还有一些隐藏的执行成本,例如作业设置时间,作业跟踪器与任务跟踪器和联系人联系所需的时间。分配map / reduce任务,slave节点向JobTracker发送心跳信号所花费的时间,NameNode分配存储块所花费的时间&创建输入拆分等,这些都进入总耗用时间。
希望这有帮助。
答案 1 :(得分:0)
也许set hive.hadoop.supports.splittable.combineinputformat=true
是为您使用的;