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

标签 bash hadoop mapreduce

我想计算刚刚在 Hadoop -2.6 上完成的成功 Map Reduce 作业(准确)的 Total(Elapsed)时间。我想在我的 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


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

  • 如果您知道一些提取刚刚成功完成的工作的耗时的好方法,请通知我。如果我可以通过控制台提取它会很好。

    最佳答案

    你知道hadoop命令“history”吗,你可以用这个命令打印已完成作业的详细信息。

    用法是HDFS上的“bin/hadoop job -history”.“”,即job dir。例如

    bin/hadoop job -history hdfs://172.16.19.5:9000/output/ >> test
    

    注意替换你的路径

    图片上的结果enter image description here

    关于bash - Hadoop-2.6 中 Map Reduce 作业的总时间计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30119533/

    相关文章:

    hadoop - Spark on Yarn 作业失败,退出代码为 :1 and stderr says "Can' t find main class"

    Hadoop HDFS : How to set hostname:9000 instead of localhost:9000

    php - Mongo 中的 Map Reduce,将 mongo 查询转换为 php mongo

    bash - bash 参数扩展/字符串操作的兼容性

    hadoop - 如何从 Hue/Hive 输出下载所有观察结果?

    linux - 如何添加各种 .csv 文件的所有列的值,仅保持单个标题和第一个标签列相同?

    apache-spark - 压缩ORC或parquet有什么好处

    hadoop - 滚动不同计数

    bash - 在 Fish Shell 中设置导出

    bash - 为什么带有不带引号的变量的 glob 会扩展到所有文件?