jobhistory Elapsed what meaning

问题:

我们知道一个任务跑完后,会在jobhistory里面现在如下界面:

 

1)那这里面的elapsed、Average Map Time、Average Reduce Time、Average Shuffle Time、Average Merge Time时间是什么意思?

2)为什么elapsed时间不等于任务总时间:Finished-Submitted=33s

 

 

解释:

这里会涉及到yarn client任务提交的过程,时间应该是从客户端与rm交互的时候开始算的,到任务结束后截止

yarn client提交过程可以参考:我的yarn client提交任务过程

 

 

hadoop任务一般可以分为以下几个步骤

1)map阶段,map阶段包括input、split、partition、sort、combiner、merge

2)shuffle阶段,shuffle阶段包括copy、merge

3)reduce阶段,reduce阶段包括Reducer,最终输出文件到hdfs

 

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

Average Shuffle Time = copy from map result and merge map result

 

当然还有一些隐藏的时间:

例如作业设置时间、作业跟踪器联系任务跟踪器和分配映射/减少任务所需的时间、从节点向作业跟踪器发送心跳信号所需的时间、名称节点分配存储块和创建输入拆分所需的时间等。

所有这些都计入总运行时间。

 

最终任务消耗时间应该是:elapsed + hidden time = finish time - submittime

 

还有一个问题?

我们在hive里面运行mr任务的时候会提示Time take,这时间会比上面任务最终消耗的时间还大呢?

 

原因是:

任务在submit前,还有client与rm交互、client上传文件、以及client等待rm启动am的时间,所以我们在hive命令行中看到的Time take时间会比jobhistory中任务消耗的时间要大的原因。

 

posted on 2019-07-30 18:51  gentleman_hai  阅读(518)  评论(0编辑  收藏  举报

导航