当我运行Hadoop程序时,我想知道它每次运行的速度。我如何知道速度,例如在10%的工作完成后?
监视Hadoop作业的进度非常重要,因为这些作业都是长时间运行的作业(有时需要几天才能完成)。有意义的进度更新有助于用户弄清楚作业是否正常运行,或者由于Hadoop堆栈深处的一些错误而卡住。
根据Hadoop权威指南,
测量Hadoop作业的进度可以分为几个阶段,Map阶段和Reduce阶段(惊喜!!)度量Map阶段的进度相对容易。在开始时,输入数据被分割成块,并为每个块生成一个映射任务。只需监视完成了多少个map阶段,就可以提供map阶段的进度更新。
Reduce阶段有些棘手。reduce任务有三个阶段,即Copy, Sort和reduce。这三个阶段用于监视减少阶段的进展。例如,如果在一个特定的减少任务中,"减少"部分完成了一半,那么我们就说这个减少任务完成了5/6。(1/3拷贝+ 1/3排序+ 1/6缩减= 5/6)。