Hadoop-2.6中Map Reduce作业的总时间计算

时间:2015-05-08 08:46:28

标签: bash hadoop mapreduce

我想计算成功的Map Reduce作业(准确)的Total(Elapsed)时间,这个时间刚刚在Hadoop -2.6上完成。我想在我的shell脚本中传递这个时间。我知道以下计算完成时间的方法

  • 通过在作业完成时解析Web界面(http://192.168.1.169:8088/cluster/apps)HTML并提取经过的时间。(但是这种方法的问题有时很长一段时间Hadoop-2.6 Web界面都会挂起。所以这种风格对于我。我不知道为什么会挂起来?)
  • 我正在使用bash脚本(如下所述)并在文件中写入时间(finishTime)。但问题在于,一些额外的延迟会在几秒钟后出现,有些时候它没有给出正确的结果。



#!/bin/bash
e=$(date +%s%N | cut -b1-13)
a=($(mapred job -list all |awk '{print $1," ",$2," ",$3}' | sort -k1 -n  | tail -n 3 | head -n 1))
wait

>finishTime
destdir=./finishTime
>destdir

if [ "${a[1]}" = "SUCCEEDED" ]
then
        total=$(($e - ${a[2]}))
        echo "$total" > "$destdir"
else
        echo $(($(sed -n '1p' < ./init_setting) * 1000)) > "$destdir"
fi
exit
&#13;
&#13;
&#13;

  • 在控制台上修改作业代码和打印时间(但作业的源代码不可用)。

如果您知道提取已成功完成作业的已用时间的一些好方法,请通知我。如果我可以通过控制台提取它将会很好。

1 个答案:

答案 0 :(得分:0)

您知道hadoop命令&#34; history&#34;,您可以使用此命令打印已完成作业的详细信息。

用法是&#34; bin / hadoop job -history&#34;。“”在HDFS上,即工作目录。 e.g。

symlink

注意替换你的路径

图片enter image description here

上的结果